Die Drehrichtung des Drehimpulsgeber (S1) wird hier vom PIC-Mikrocontroller PIC16F84 (IC1) an den Portpins RA3 und RA4 mit je einem Pull-Up-Widerstand (R1 und R2) erfasst und ausgewertet. Die Taster-Funktion der Achse wird mit dem Pull-Up-Widerstand R3 am Portpin RA2 angeschlossen (In der Software wird diese Taster–Funktion allerdings noch nicht ausgewertet!).
Die Drehbewegung des Drehimpulsgebers wird optisch mit Leuchtdioden (D1 bis D8 mit den Vorwiderständen R6 bis R13) am Port B angezeigt. Zu Beginn leuchtet eine der mittleren Leuchtdiode. Durch Drehen am Drehimpulsgeber wandert dieser Leuchtpunkt in die jeweilige Drehrichtung.
Für die Takterzeugung dient eine Standardbeschaltung bestehend aus einem 4-MHz-Quarz (X1), zwei Kondensatoren (C3, C4) und einem Widerstand (R5). Das RC-Glied (R4, C1) erzeugt einen definierten Reset beim Anlegen der Betriebsspannung.
Die Diode D9 verhindert eine Zerstörung des Mikrocontrollers bei einer Falschpolung der Betriebsspannung. Als Betriebsspannung muss eine stabile 5-V-Spannungsquelle verwendet werden.
Die Software zum Demonstrationsbeispiel befindet sich im Download- Bereich auf dieser Seite
Die Software besteht im wesentlichen aus einem kurzen Hauptprogramm, einer Interrupt-Service-Routine (kurz ISR) und den Unterprogrammen INIT, INKRROUTINE, INKRRECHTSDREHUNG und INKRLINKSDREHUNG.
Die ISR wird alle 4ms aufgerufen und besitzt nur die Aufgabe das Unterprogramm
INKRROUTINE zyklisch (eben alle 4 ms) aufzurufen. Dieses Unterprogramm wurde
bereits im Abschnitt 3.4. Unterprogramm "INKRROUTINE"
ausführlich beschrieben. Bei eigenen Anwendungen muss in diesem Unterprogramm nur der
verwendete Port angepasst werden.
Das Hauptprogramm besteht nach der Initialisierung (Unterprogramm INIT) und der
Interruptfreigabe nur mehr aus einer Endlosschleife. Diese Endlosschleife prüft also
ununterbrochen die beiden Flags INKRLINKS und INKRRECHTS. Wird vom Unterprogramm
INKRROUTINE eines dieser beiden Flags gesetzt – am Drehimpulsgeber wurde also gedreht –
so wird das entsprechende Unterprogramm (INKRRECHTSDREHUNG bzw. INKRLINKSDREHUNG)
aufgerufen. In diesen beiden Unterprogrammen erfolgen nun die Anweisungen, die bei
einer Drehung (in diese Richtung) erfolgen sollen. Diese beiden Unterprogramme sind
daher projektspezifisch. Also in jeder Anwendung unterschiedlich. Hier soll zur
Demonstration nur das gesetzte Bit am Port B entweder nach links oder nach rechts
geschoben werden.
Das Unterprogramm INIT dient zur Initialisierung des Controller. Hier werden u.a. die Ports konfiguriert (Port dient als Eingang oder als Ausgang), der oder die Timer eingestellt usw. Dieses Unterprogramm ist vom Controllertyp abhängig und je nach Anwendung mehr oder weniger umfangreich. Hier muss zusätzlich der Startzustand des Drehimpulsgebers am Port A eingelesen werden. Siehe auch Abschnitt 3.3. Initialisierung (Unterprogramm "INIT")