В процессе изучения китайских реплик STM мне понадобилось подключить энкодер.
Предпочитаемый мной блок от Андрея (Dryundel) заругался на не поддерживаемый контроллер. Еще один вариант (сорян, не помню чей) тоже "не взлетел".
На github нашел несколько вариантов для stm, но тоже не сложилось. Или не четкая работа и/или нужны знания, которых у меня нет.
В результате набросал вариант без привязки к типу контроллера. Решение примитивное и прошу понимающих не кидаться какахами (...он играет как умеет).
Для нормальной работы необходимо соблюсти 2 условия:
1) пин, к которому будет подключен канал А должен поддерживать прерывание (и описание функции прерывания стандартны для ардуино)
2) желательно сделать физическую подтяжку входов к "+" и шунтировать их на "-" конденсорами малой емкости (т. е. исключить дребезг контактов)
Да, это колхоз и костыль. И такое решение нельзя считать нормальным и приведет к ускоренному износу энкодера.
Но мне "приспичило", а на безрыбье...) Инструкция в описании.
Отправлено спустя 2 часа 27 секунд:
Демка работы такого примера. В программе обновление экрана в каждом цикле (SPI).