Prima :)
Vielleicht prellt/schwingt sich der Geber kurz ein. Je langsamer der AVR-Takt umso geringer die Chance ein Prellen zu treffen:
Code:
...
while ((SpurA_akt == SpurA_old) && (SpurB_akt == SpurB_old));
count=10; while(count--) asm volatile ("NOP"); // Geber entprellen
if (SpurA_akt == SpurA_old) // Bitwechsel war bei Spur B
...
btw: Bei mir wird das NOP nicht rausoptimiert:
Code:
128 009a 7093 0000 sts count,r23
129 009e 872F mov r24,r23
130 .L11:
131 /* #APP */
132 00a0 0000 NOP
133 /* #NOAPP */
134 00a2 8150 subi r24,1
135 00a4 E8F7 brcc .L11
Wie machen sich denn die 5% Fehler bemerkbar? Woran erkennst du das?
Lesezeichen