у вас в коде есть системная ошибка.... возможна ситуация (вибрация механизма) когда реального вращения энкодера нет, а значение увеличивается (уменьшается).... также можно рекомендовать писать код быстрого таймера на IL - быстрее ST раза в два получается...

а по теме, разработчики ж правильно говорят - программное обнуление аппаратного счетчика из за цикла даст неоднозначность, поэтому данной возможности и не делают.... но совершенно никто не мешает сделать программную надстройку (3-4 строчки кода) над аппаратным энкодером и обнуляйте свой позиционер хоть в каждом цикле....

пысы - можно лить водку в жопу, и положительных моментов при этом много, но как-то это неправильно ))))