Wo/wie wird denn counter ausgewertet?
Wird von KeyA und KeyB ein Schnappschuss gemacht, so daß sie gleichzeitig bestimmt werden?
Hey!
ich habe an meinen atmega 8 einen drehgeber angeschlossen. dazu folgende auswertung geschrieben:
Dieser Codeteil wird als interrupt bei jeder änderung von KeyB ausgeführt.Code:if (KeyB!=buffer){ if(KeyA == KeyB) counter++; else counter--; buffer = KeyB; WriteVal(counter); }
(KeyA und KeyB sind die beiden signale).
Nun is es nun aber so, dass einfach manchmal zyklen ausgelassen werden bzw falsch ausgewertet werden (dh in die falsche richtung zählen).
im grunde funktioniert das prog sonst.
ps: ich denke nicht, das es fehler sind, die durch kontaktprellen entstehen oder so,....
vielleicht könnt ihr mir helfen
mfg gamecounter
Wo/wie wird denn counter ausgewertet?
Wird von KeyA und KeyB ein Schnappschuss gemacht, so daß sie gleichzeitig bestimmt werden?
Disclaimer: none. Sue me.
Ich vermute dass KeyA und/oder KeyB auch ausserhalb der Interrupt Function benutzt werden.
Wenn so dann mussen die wie 'volatile' deklariert sein.
z.B.
volatile char KeyA;
Gruss
Henk
Lesezeichen