Доброго времени суток. Пытаюсь разобраться с обработкой энкодера на внешних прерываниях. Нашел пример опроса - сравнения по прерыванию таймера. Но вгонять контроллер в прерывание 500-1000 раз в секунду мне кажется не очень удачным решением, если энкодер будет использоваться редко.
На easyelectronics нашел алгоритм обработки энкодера при помощи прерываний:
Алгоритм прерывания с антидребезгом будет выглядеть так:
Если настраиваем прерывание по восходящему фронут, то прерывание будет генерироваться только каждый 4 щелчок энкодера (при вращении в одну сторону). Или я что-то не понимаю?
На ассемблере примеров реализации не нашел.
Раздел: AVR
На easyelectronics нашел алгоритм обработки энкодера при помощи прерываний:
Цитата
Алгоритм прерывания с антидребезгом будет выглядеть так:
- Зашли в обработчик INT0
- Пощупали второй канал
- +1 или -1
- Запретили локально INT0
- Поставили на таймер событие разрешающее INT0 через несколько миллисекунд
- Вышли из обработчика
Если настраиваем прерывание по восходящему фронут, то прерывание будет генерироваться только каждый 4 щелчок энкодера (при вращении в одну сторону). Или я что-то не понимаю?
На ассемблере примеров реализации не нашел.
Раздел: AVR