Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | Nächste ÜberarbeitungBeide Seiten der Revision | ||
electronics:zss600-001-100b-5l [2019-03-31 14:03] – Martin Prochnow | electronics:zss600-001-100b-5l [2019-03-31 15:25] – Martin Prochnow | ||
---|---|---|---|
Zeile 21: | Zeile 21: | ||
===== Code ===== | ===== Code ===== | ||
- | Der Encoder | + | Die folgenden beiden Bilder zeigen die Impulsfolge beim Drehen des Encoders (Kanal 1 ist Encoder-Ausgang A, Kanal 2 ist Encoder-Ausgang B). |
+ | |||
+ | {{: | ||
+ | |||
+ | Wenn A auf High steht, muss geprüft werden, ob B auf Low (Drehung im Uhrzeigersinn) oder auch auf High (Drehung gegen den Uhrzeigersinn) steht. | ||
+ | |||
+ | Damit das ganze zügig passiert, wird A mittels Interrupt überwacht. | ||
Der Zustand der Pins wird über das entsprechende Input-Register direkt eingelesen, um mit der Abarbeitung des Interrupt-Handlers so schnell wie möglich fertig zu werden. | Der Zustand der Pins wird über das entsprechende Input-Register direkt eingelesen, um mit der Abarbeitung des Interrupt-Handlers so schnell wie möglich fertig zu werden. | ||
- | Wenn ein anderer Arduino-Typ verwendet werden soll, muss der Teil mit dem Einlesen der Input-Register angepasst werden. Und wahrscheinlich | + | Der Encoder prellt, daher ist ein Debouncing notwendig. ~700µSec hat sich in meinen Tests als guter Wert herausgestellt. |
<sxh cpp> | <sxh cpp> | ||
Zeile 69: | Zeile 75: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | </ | ||
{{tag> | {{tag> |