RC5 (Dekodierung mit PIC-Mikrocontroller, Elektronik)


zurück zu Elektronik, Homepage


4. Demonstrationsbeispiel:

Das folgende Beispiel dient nur zur Demonstration der RC5-Auswertesoftware. Sie zeigt eine mögliche Einbindung der im Abschnitt 3. Software besprochenen Unterprogramme.

nach oben

4.1. Hardware

Bei diesem Demonstrationsbeispiel übernimmt ein Mikrocontroller vom Typ PIC12F629 die Dekodierung des vom IR-Empfänger (IC1, TSOP1736) demodulierten RC5-Datenstroms.

Die Leuchtdioden D1 bis D3 mit ihren Vorwiderständen R1 bis R3 zeigen den Wert eines 3-Bit-Zählers an, also eines Zählers welcher von 0 bis 7 zählt. Bei einem Druck auf die Taste "Lautstärke +" auf der Fernbedienung, wird dieser Zähler um 1 erhöht, wobei nach einem Zählerstand von 7 wieder bei 0 begonnen wird. Bei einem Druck auf die Taste "Lautstärke -" wird der Zähler um 1 vermindert. (Hier erfolgt nach einem Zählerstand von 0 der Wert 7).

Für die Takterzeugung wird eine Standard-Schaltung bestehend aus einem 4,096-MHz-Quarz (X1), zwei Kondensatoren (C2 und C3) und einen Widerstand R4.

Als "Reset-Quelle" wird der interne Reset verwendet, sodass Pin 4 (MCLR/GP3) als zusätzlicher Portpin genutzt werden kann. Dieser kann jedoch nur als Eingangspin verwendet werden. Hier wird er als RC5-Eingang verwendet.

Der Kondensator C1 dient zur Entkoppelung der Betriebsspannung für den Mikrocontroller IC2. Für diesen Koppelkondensator sollte ein Keramiktyp verwendet werden. Dieser muss möglichst nahe beim Mikrocontroller angebracht werden.

Die Stromversorgung ist ebenfalls sehr einfach. Ein Festspannungsregler (IC3) vom Typ 78L05 übernimmt mit den Kondensatoren C4 und C5 die Spannungsregelung. Als Spannungsquelle dient beispielsweise ein unstabilisiertes 9-V-Steckernetzteil. Die Leuchtdiode D5 mit dem Vorwiderstand R5 dient zur Spannungskontrolle. Für die Leuchtdiode D5 sollte eine Low-Current-Version verwendet werden.
Die Diode D4 dient hier als Verpolungsschutz.

nach oben

4.2. Anmerkungen zur Software

Die Software zum Demonstrationsbeispiel befindet sich im Download- Bereich auf dieser Seite

Die Software besteht im Wesentlichen aus einem kurzen Hauptprogramm, einer kurzen Interrupt-Service-Routine (kurz ISR), einem Unterprogramm zur Initialisierung des Mikrocontroller (siehe Abschnitt 3.3. Initialisierung (Unterprogramm "INIT")) und die im Abschnitt 3.4. Software besprochenen Unterprogramme zur RC5-Dekodierung.

Die ISR wird alle 250µs aufgerufen und besitzt "nur" die Aufgabe eine genaue Zeitbasis für die RC5-Dekodierung zu erzeugen. Zu diesem Zweck setzt die ISR ein Flag namens FLAG250USEK im Register FLAGSISRHP.

Die ISR wird, wie schon mehrmals erwähnt, alle 250µs aufgerufen Diese 250µs ergeben sich folgendermaßen: TMR0 wird mit dem Wert 0 geladen es dauert also 256 Taktzyklen bis das Register TMR0 wieder den Wert 0 besitzt, der Vorteiler besitzt den Wert 1 (vgl. Unterprogramm INIT, Abschnitt 3.3. Initialisierung (Unterprogramm "INIT")). Der Taktzyklus ergibt sich aus dem verwendeten Quarz (X1). Dieser ist bei der PIC-Familie wie folgt definiert:

                              4
                        -------------
                        Quarzfrequenz

Daraus ergibt sich folgender Zusammenhang:

                            4 x 256 x 1        4 x 256 x 1
        ISRAUFRUF [s] = ------------------- = ----------- = 250
                         Quarzfrequenz [MHz]       4,096

Also einen ISR-Aufruf alle 250µs.

Das Hauptprogramm befindet sich nach der Initialisierung (Unterprogramm INIT) und der Interruptfreigabe in einer Endlosschleife. Diese Schleife besitzt die Aufgabe ständig die so genannten Botschaftsflags abzufragen. Ist eines dieser Botschaftsflags gesetzt, so muss vom Hauptprogramm eine bestimmte Aufgabe ausgeführt werden. Diese Aufgaben sind in Form von Unterprogrammen vorhanden. Eines dieser Botschaftsflags wird in der Timer-ISR gesetzt. Und zwar wird alle 250µs ein Flag gesetzt.

Hier Zusammenfassend die Tätigkeiten in der Endlosschleife, welche durch die Botschaftsflags ausgelöst werden:

Das Unterprogramm INIT dient zur Initialisierung des Controllers. Hier werden unter anderem 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.

Die Unterprogramme RC5ROUTINE und RC5CHECKTEL sollten nur in Ausnahmefällen geändert werden, während das Unterprogramm RC5AKTION an die jeweilige Aufgabe der Software angepasst werden muss.

nach oben


zurück zu Elektronik, Homepage

Autor: Buchgeher Stefan
Erstellt: 5. Juli 2004
Letzte Änderung: 10. Oktober 2004