раньше у меня энкодер сидел на пине с внешним прерыванием. вобщем то довольно удобно.
Код
if (motror_dir == UP)
position++;
if (motror_dir == DOWN)
position--;
ну и потом проверяем где мы
Код
if (position >= TOP_POS)
Print(“Top position!”);
сейчас я решил считать аппаратно. скажем я посажу вход энкодера на пин таймера пусть считает за меня.
вопрос как лучше сделать. если взять STM32F1 то у него есть пин TIMx_ETR по моему довольно удобный по функционалу. а битом DIR можно менять направление счета +/-. или есть какие нибудь другие способы?
да и еще, чтоб избежать недоразумений - схемотехнически все решено – A/B декодирование и определение направления – XOR + D-FF.