имеем несколько вариантов функции работы с энкодером, которые нормально работают и в разной степени защищают от ложных состояний. Но... Все они срабатывают в состоянии StateA при вращении в одну сторону, и в состоянии StateB при вращении в другую. В то же время приятнее иметь дело с энкодером, который срабатывает всегда ровно посередине между точками фиксации, т.е. когда cur == StateAB. Но такой вариант или неправильно обрабатывает последовательности вида 0-A-AB-B-0-B-AB или пропускает шаги. Пока сделать работоспособную версию не удалось.