реклама на сайте
подробности

 
 
> ENCODER, Помогите начинающему!
XILINX
сообщение Jul 21 2009, 06:52
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 12-01-09
Из: ЛИТВА
Пользователь №: 43 233



Всем добрый!

Есть такая штука -
у нее 2 выхода A и B.
В начальный момент оба в состоянии "0".
Задача : если первым импуьс появится на выходе A ,то счетчик должен считать эти импульсы UP,
а если первым импуьс появится на выходе B ,то счетчик должен считать эти импульсы DOWN.

Как это можно реализовать на VHDL ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dimoon
сообщение Jul 21 2009, 08:42
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 21-03-05
Пользователь №: 3 571



А и Б - последовательность импульсов, Б сдвинут на 180 градусов относительно А. Я на контролере делал след. образом- родсчет импульсов по каждому фронту, не важно положит. или отрицат. Направление счета- если А и В "0", приходит фронт полож. по А направление счета на увеличение, если полож. фронт по В то уменьшение счета. Пример кода на С для MC68HC908GP32:
CODE
signed int num;
char KbierTemp, trt;

//************** Инициализация для работы энкодера ************************
DIR_PORT_ENC &=~LINE_ENC; //определяем линии управления энкодера на ввод
PUL_PORT_ENC |= LINE_ENC; //включаем подтягивающие резисторы на входах энкодера
INTSCR_MODE1=OFF; //Инициализация прерываний по модулю KBIER. Динамический режим
INTSCR_IMASK1=ON; //Инициализация прерываний по модулю KBIER. Запрет прерываний по модулю KBIR
delay_10mks(10);
KBIER=(PORT_ENC & LINE_ENC); //Разрешить прерывания только для линий, установленных в "1"
INTSCR_ACK1=ON; //Инициализация прерываний по модулю KBIER. Сброс тригера TKBI
INTSCR_IMASK1=OFF; //Инициализация прерываний по модулю KBIER. Разрешение прерываний по модулю KBIR
//************** end ****************************************************************
void interrupt 15 Isr_KBIER(void)
{
if (!INA0_ENC && (KBIER & 0x02))
{
if (INB0_ENC) ++num;
if (!INB0_ENC) --num;
}
if (!INA1_ENC && (KBIER & 0x04))
{
if (!INB0_ENC) ++num;
if (INB0_ENC) --num;
}
if (!INB0_ENC && (KBIER & 0x01))
{
if (!INA0_ENC) ++num;
if (INA0_ENC) --num;
}
if (!INB1_ENC && (KBIER & 0x08))
{
if (INA0_ENC) ++num;
if (!INA0_ENC) --num;
}
KBIER=(PORT_ENC & LINE_ENC);
INTSCR_ACK1=ON; //Сброс тригера TKBI
}

//*** Cекция для определения входов енкодера ***************************************
//*** ENCR
#define PORT_ENC PTA //Порт входов енкодера
#define DIR_PORT_ENC DDRA //Направление линий входов енкодера
#define PUL_PORT_ENC PTAPUE //Направление линий входов енкодера
#define INA0_ENC PTA_PTA1 //Вход линии А енкодера
#define INA1_ENC PTA_PTA2 //Вход линии ~А енкодера
#define INB0_ENC PTA_PTA0 //Вход линии B енкодера
#define INB1_ENC PTA_PTA3 //Вход линии ~B енкодера
//#define LINE_ENC 0x09 //Используемые линии для работы энкодера в "1" не изпользуемые в "0"
#define LINE_ENC 0x0F //Используемые линии для работы энкодера в "1" не изпользуемые в "0"
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- XILINX   ENCODER   Jul 21 2009, 06:52
- - VladKot   Цитата(XILINX @ Jul 21 2009, 09:52) Есть ...   Jul 21 2009, 07:01
|- - XILINX   Цитата(VladKot @ Jul 21 2009, 10:01) Вы у...   Jul 21 2009, 07:10
|- - MrYuran   Цитата(VladKot @ Jul 21 2009, 11:01) Вы у...   Jul 21 2009, 07:13
- - DpInRock   ЦитатаПо фронту 1-го сигнала защёлкиваем 2-й. Полу...   Jul 21 2009, 09:19
|- - XILINX   Цитата(DpInRock @ Jul 21 2009, 12:19) Абс...   Jul 21 2009, 12:07
|- - izerg   Как говорять, самостоятельно писали наверное тольк...   Jul 21 2009, 12:24
|- - DpInRock   Цитата(XILINX @ Jul 21 2009, 16:07) Попро...   Jul 21 2009, 13:50
|- - muravei   Цитата(DpInRock @ Jul 21 2009, 17:50) Сам...   Aug 1 2009, 06:31
|- - haker_fox   Цитата(muravei @ Aug 1 2009, 15:31) А как...   Aug 1 2009, 11:11
|- - rx3apf   Цитата(muravei @ Aug 1 2009, 10:31) А как...   Aug 1 2009, 20:33
|- - muravei   Цитата(rx3apf @ Aug 2 2009, 00:33) Дальше...   Aug 5 2009, 07:50
- - vik0   DpInRock, читаем внимательно: Цитатаработаю на гот...   Jul 21 2009, 18:00
|- - XILINX   Цитата(vik0 @ Jul 21 2009, 21:00) DpInRoc...   Jul 22 2009, 05:51
- - DpInRock   О простой RC цепочке. Если у вас энкодер механичес...   Jul 21 2009, 19:22
|- - haker_fox   Цитата(DpInRock @ Jul 22 2009, 04:22) О п...   Jul 22 2009, 07:15
- - rv3dll(lex)   мой фильтр CODElibrary ieee; use ieee.std_logic...   Jul 27 2009, 10:22
- - x736C   rv3dll(lex), есть такой вариант, правда на verilog...   Aug 5 2009, 09:48


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 10:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016