Schritt 3: Firmware
Angeschlossen ist die Firmware. Sie können es mit "Make", kompilieren, wie im letzten Schritt beschrieben. Es steht in einer Hardware unabhängige Weise: alle Funktionen, die nicht standard C, in hardware.cpp umgesetzt werden, also Portierung zu einem anderen Mikrocontroller ist einfach. Die Drehgeber-Funktionen sind in main.c. In display.c ist sind die Funktionen zum Zeichnen von Text, Zahlen und Rechtecke. Das OLED-Display hat eine automatische Baud-Erkennung, so können Sie auch andere Baudraten verwenden.Es gibt zwei input-Pins für die Drehgeber, die vier Phasen der Quadratur Signale zu kodieren (siehe den Wikipedia-Bild-http://upload.wikimedia.org/wikipedia/en/thumb/6/68/Quadrature_Diagram.svg/500px-Quadrature_Diagram.svg.png). Die Drehrichtung kann erkannt werden, vergleicht man die letzte Phase-Zustand mit dem neuen Staat z.B. wechselt von Zustand 2 Zustand 3 es war richtig und wechselt von Zustand 3 in Zustand 2 es war drehte links.
Sie müssen also den letzten Zustand und den aktuellen Stand wissen. Ein Staat ist in zwei Bits codiert. Der letzte Status und den nächsten Zustand kombiniert sind 4 Bits. Dies ist der Index in einer Tabelle mit 16 Einträgen verleiht + 1, 0 oder-1, wie die Richtung in die der Drehgeber gedreht wurde.
Die Tabelle hat den Vorteil, den Sie einfach spezielle Verhalten, z. B. für die Alpen-Encoder umsetzen können gibt es Phasenübergänge an den Leerlauf stellen, die ignoriert werden, weil dadurch zwischen zwei Werten manchmal Prellen. Und diese Stücke die Entschließung, die Ergebnisse in einem Schritt pro Raster.
Prellen der Kontakte ist kein Problem, wenn die Zeit zwischen zwei Phasen zu vergleichen ist schneller als die schnellste Geschwindigkeit zwei Phasen ändern kann.