Wie kann ich von einem Drehgeber nur die Drehrichtung auswerten? Ich benötige pro Rasterung einer Richtung ein HI auf jeweils einem Portpin für 2 Sekunden. Genügt es wenn ich bei dem Beispiel mit dem Drehgeber -> http://www.mikrocontroller.net/articles/Drehgeber direkt im Interrupt ansetze? Oder muß ich mir hierfür eine Tabelle anlegen und diese auswerten?
Lokus Pokus schrieb: > Wie kann ich von einem Drehgeber nur die Drehrichtung auswerten? Indem du bei der Auswerteroutine den Zähler für die Schritte ignorierst und nur die Richtung verwendest.
Das sollte laut beispiel eigentlich hier passieren:
1 | enc_delta += (diff & 2) - 1; |
Demnach müßte enc_delta die Richtung ausgeben. Wleche Werte erhalte ich hier für Links oder Rechts? Ist 1 links und 0 rechts?
Lokus Pokus schrieb: > Wleche Werte erhalte ich hier für Links oder Rechts? Das kommt drauf an, wie dein Drehgeber angeschlossen ist.
Vielleicht hilft Dir dieser Artikel bei der Auswertung des Encoders: http://www.edn.com/design/systems-design/4416528/Adaptive-rotary-encoder-distinguishes-fine-from-coarse -Immitsch-Berater-
Das hilft mir leider nicht weiter. Und enc_delta liefert auch nichts brauchbares dafür.
Hi >Ist 1 links und 0 rechts? >Und enc_delta liefert auch nichts brauchbares dafür. Wieso? 0 - nicht gedreht x - eine Richtung -x - andere Richtung MfG Spess
Ach, ein Minuswert. Etwas umständlich, aber es funkt:
1 | for(;;) |
2 | { |
3 | ADCSRA &= !(1<<ADEN); // ADC dekativieren |
4 | ACSR = 0x80; |
5 | |
6 | // Analogcomperator dekativieren |
7 | if (enc_delta > 0) |
8 | { |
9 | links(); |
10 | _delay_ms(DELAY_RESET); |
11 | enc_delta = 0; |
12 | } |
13 | |
14 | if (enc_delta < 0) |
15 | { |
16 | rechts(); |
17 | _delay_ms(DELAY_RESET); |
18 | enc_delta = 0; |
19 | } |
20 | if (enc_delta == 0) AUSGANG_PORT = LO; |
21 | } |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.