Благодарю за хорошие отзывы! Не делаю секрета из исходников и подробно их комментировал, потому, как сам учился по разным материалам, но во многих слабое место - описательная часть. Если есть вопросы пишите, т.к. есть некоторые тонкости. Например, применённый энкодер (PEC16), видимо, имеет разную длительность импульсов по своим линиям, т.к. при опробовании в реальной конструкции выяснилось, что при "неправильном" подключении его линий к контроллеру происходит увеличение частоты при вращении в любую сторону. Возможно, это ошибочное заключение, но иного не приходит в голову, т.к. фрагменты программы, отвечающие за обработку импульсов с обеих линий одинаковы, а значит, только разная длительность импульсов приводит к такому результату. А некоторые энкодеры (китайские) вообще работают не так, т.е. у них на 2 щелчка формирутся один импульс.
Правильное подключение (обозначения линий по datasheet) следующее: канал А - на PB1 (вывод 2); канал B - на PB0 (вывод 1);
Прикладываю Datasheet и фотографию применённого мной энкодера PEC16 фирмы BOURNS. Именно под такой тип энкодера писалась программа (1 щелчок - 1 импульс).
Сейчас делаю вариант для OLED индикатора WEH1602AL (красивее, контрастнее и имеет меньшее потребление, но и дороже... ). Он "один в один" подходит для замены WH1602B и по размеру и по цоколёвке (у WEH1602AL выводы 3, 15,16 -свободные), но процедура инициализации иная.
- Вложения
-
- pec16.pdf
- Datasheet энкодера
- (303.99 KiB) Скачиваний: 1389