Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Помогите разобраться с энкодером!

Отправлено aлeкcтишнoв (113.91.53.222) 26 июня 2010, г. 18:36


Здравствуйте! В своем проекте я использую энкодер (24/24). Обработка по прерыванию, схема подключения и принцип широко известен: фаза "а" на внешнем прерывании, фаза "б" на входе одного из портов. Прерывание по фронту сигнала. Выводы энкодера зашунтированы конденсаторами 0.01 мкф. Поддяжка внутренняя, процессор PIC16F877, 20 МГц. Энкодер ALPS, так что косяки с качеством исключены. Проблема заключается в следующем: при отработке направления "влево", т.е. фиксации лог. "1", пропусков в счете фактически нет (при умеренном вращении ручки энкодера), при повороте вправо с такой же скоростью(фиксация лог. "0" по прерыванию) - огромное количество пропусков счета, примерно 50/50. А ведь по прерыванию в этом случае должен фиксироваться только "0"! При медленном же вращении отработка происходит нормально. Менял выводы энкодера местами, номинал блокировочных конденсаторов, пробовал вводить задержку в подпрограмме обработки прерываия - результат один. Помогите разобраться... Вот код обработки прерывания (PICBasic PRO):

decode:

if portb.1 = 0 then
counter = counter + 1
else
counter = counter - 1
endif

intcon.1 = 0 'сброс флага прерывния

RESUME


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите шесть пополам:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru