PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehgeber auswertung - Fehlerhaft?



gamecounter
21.03.2006, 20:11
Hey!

ich habe an meinen atmega 8 einen drehgeber angeschlossen. dazu folgende auswertung geschrieben:



if (KeyB!=buffer){
if(KeyA == KeyB)
counter++;
else
counter--;
buffer = KeyB;
WriteVal(counter);

}

Dieser Codeteil wird als interrupt bei jeder änderung von KeyB ausgeführt.
(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

SprinterSB
22.03.2006, 09:23
Wo/wie wird denn counter ausgewertet?
Wird von KeyA und KeyB ein Schnappschuss gemacht, so daß sie gleichzeitig bestimmt werden?

Arexx-Henk
22.03.2006, 11:19
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