Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; 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
Составить ответ | Вернуться на конференцию
Ответы
- Чего с подтяжками ? может кондёр не успевает разряжаться/заряжаться ? Меньше номинал кондея впендюрить, больше/меньше резисторы подтяжки ? - UraGun (26.06.2010, 18:56:47 80.254.4.61, пустое)
- Ответ: - aлeкcтишнoв (26.06.2010, 19:05:28 113.91.53.222, 208 байт)
- я имею в виду на втором входе. - UraGun (26.06.2010, 18:57:37 80.254.4.61, пустое)
- Ответ: - aлeкcтишнoв (26.06.2010, 19:29:59 113.91.53.222, 114 байт)
- Ответ: - aлeкcтишнoв (26.06.2010, 18:40:17 113.91.53.222, 96 байт)