Добавьте математическую обработку. По прерыванию или в цикле нет значении. Никаких доп. задержек в коде для debounce. Пример: Rotary на Ben Buxton - state machine. Лучшего "лечения" мех. енкодера пока не нашол. Енкодеры работают годами, напр. в VFO: DDS или PLL в качестве основного компонента настройки, базовое радио. Просто если зуб енкодера поврежден, позиция пропускается. При втором зубе - тоже пропускает. На 3-м потерянном зубе - меняю энкодер
Портировал метод на несколько типа МК: от Arduino к "чистый" AVR, PIC, STM8/32 и др. Везде работа безупречная. В перерыве, в цикле, без проблем. Конденсаторы нет.
Даже аппаратная обработка в STM32 с этой проблемой не справилась, ни при каких настройках. И там "сломанный кодер" /и его недостатки/ заставил меня использовать метод. Аппаратную часть там оставил для опт. энкодер. (частично пользуюсь переводчиком БГ-РУ)
енкодер KY-040 к лог. анализатор:
- новый кодер
- в эксплуатации /1-2-3 года/


