Я еще не дополз до физической реализации - руки не доходят, но расскажу все что прочитал и как понял, вдруг поможет.
во первых теория
chipenable.ru/index.php/how-connection/i...mikrokontroller.html
во вторых на стмке у таймеров есть аппаратная поддержка энкодера
это значит что если все правильно настроить то при изменении положения энкодера
таймер будет изменять значение регистра CNT на 4 на 1 сдвиг (так и не понял почему на 4 но это в доках написано) и вам остаеться проверять только это значение.
или если софтового то можно просто настроить на шим захват 2х каналов и сравнивать их в прерывании.