Нет такого числа пропусков. Я не так и не там замерял.
У меня же безо всяких задержек. И если опрос попадает вдруг в красную зону, у меня этот момент инкрементируется несколько раз подряд по кругу. От того и получилось так много. Но это не пропуски.
Да четыре. Если по картинке, то серая зона, красная, и 2 состояния в зелёной.Ivanoff-iv писал(а):у энкодера ведь не 3 а 4 состояния...
круто! 500 тысяч раз в секунду?shonty писал(а):А опрос у меня с интервалом 4/(8*10^-6)
4 цикла на 8-ми мегагерцахStarichok51 писал(а):круто! 500 тысяч раз в секунду?
Код: Выделить всё
.equ CANAL_A = 2 ; канал А (PIND 1)
.equ CANAL_B = 1 ; канал А (PIND 2)
...
...
; -------------------- Главный цикл ------------------------
LOOP:
in R16, PIND
andi R16, (1<<CANAL_A)|(1<<CANAL_B)
cpi R16, (1<<CANAL_A)|(1<<CANAL_B)
breq LOOP
; чтение энкодера:
sbrs R16, CANAL_A
rjmp ROTATE_LEFT ; переход если сигнал в канале "A"
; sbrs R16, CANAL_B
rjmp ROTATE_RIGHT ; переход если сигнал в канале "B"
rjmp LOOP ; Вернуться в начало цикла