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?