Цитата(dimka333 @ Jan 28 2011, 15:53)

Подключил энкодер ( 20 импульсов на оборот)
Два канала Аи Б энкодера дают меандр, смещенный на 90 град
Делаю прерывание по спаду в А канале - запускаю опрос Б канала., если Б=0 то -1 в лево, если 1 то +1 в право.
все работает хорошо., только при вращении в лево пропускает счет - на 50 щелчков энкодера дает значение 42-44.
В право без пропусков.
Менял программу - давал при вращении в право вычитание - то же самое, ошибка не зависит от направления вращения
Делал задержку перед опросом Б ( в прерывании) не помогло.
В канале Б точно 0 - это и в описании энкодера и осц. кажет
Как побороть?
Нужно одновременно читать сигналы А и Б. На отрезке "Делаю прерывание по спаду в А канале - запускаю опрос Б канала" у Вас А и Б считываются в разное время (хотя и короткое).
Я делаю два подряд считывания порта в разные регистры, а затем анализирую изменение битов в этих регистрах для определения направления.