Yalu X. schrieb:
> Wie soll jemals EncoderB == 1 werden?
>
> Lass die Abfrage einfach weg, sie ist schon durch das vorangehende
> "else" abgedeckt.
>
> Ansonsten ist es nicht sehr geschickt, die Eingänge innerhalb der
> Interruptroutine mehrfach abzufragen. Sie könnten sich zwischendurch
> ändern, was dan u.U. zu verschluckten Schritten führt. Besser ist es,
> die Eingänge am Anfang in Variablen zu lesen und dann nur noch auf diese
> Variablen zuzugreifen.
>
> Und was machen eigentlich diese beiden Zeilen:
>
>
1 | > if (EncoderA) EncoderA == 0;
|
2 | > if (EncoderB) EncoderB == 0;
|
3 | >
|
>
> Schmeiß sie raus.
>
> Hast du dieses hier schon durchgelesen: Drehgeber
Danke für deine schnelle Antwort.
Wenn ich die if-Bedingung in der else-Schleife weglasse, springt es
ständig in diese Schleife hinein, obwohl ich den Encoder im
Uhrzeigersinn drehe..
Und wie meinst du das, die Eingänge am Anfang der ISR in Variablen
lesen? Kannst du mir ein Beispiel nennen?
Liebe Grüße