RC5-Code

Frame

Eine Vielzahl von Infrarot-Fernbedienungen für das heimische Equipement setzten auf den RC5-Code. Ein Tastendruck auf der Fernbedienung erzeugt eine Sequenz von 14 Bit:



  • Die ersten beiden Bits sind immer '1'
  • Das 3. Bit toggelt mit jeder weiteren Sequenz hin und her.
  • Die nächsten 5 Bits geben die Adresse des jeweiligen Gerätes an.
  • Die letzten 6 Bits enthalten einen Befehl.

Symbol

Ein Bit dauert 1.778ms und wird durch einfaches ein und ausschalten einer IR-Diode erreicht.

Dadurch dass immer eine steigende oder fallende Flanke vorhanden ist, ist es für den Empfänger einfacher sich auf das Signal zu synchronisieren. Für eine höhere Störfestigkeit wird das Signal zusätzlich mit einen 36kHz-Träger multipliziert. Da diese Auswertung jedoch bereits im IR-Empfänger vorgenommen wird, wird dies hier nicht weiter berücksichtigt. Der Empfänger sieht letztendlich eine Lichtquelle die in bestimmten Abständen an und ausgeht.


Simple RC5-DeCode

Frame aufzeichnen

Für die Dekodierung des Frames gibt es die verschiedensten Verfahren, abhängig von der verwendeten Hardware. Hier wurde der folgende Weg gewählt: Über den Timer wird alle 0.25ms in einen Interrupt hineingesprungen und dort ein Zähler inkrementiert. Sobald das Signal wechselt, wird der Zähler in einer Funktion ausgewertet (und rückgesetzt). Erwartungsgemäß liegt der Zähler bei großem Abstand um den Wert '7x 0.25ms und bei kurzem Abstand um 3x 0.25ms. Die Funktion gibt '1' zurück, wenn der Zähler größer 5 ist, ansonsten '0'.


  • 3x 0.25ms ≤ 5 → 0
  • 7x 0.25ms > 5 → 1
Die einzelnen Bits werden nun gesammelt bis das Signal sich für mehr als 2ms nicht ändert. Am Ende sollten maximal 28 Bit an Abschnittslängen entstanden sein, sodass hier eine einzige 32Bit Variable als Speicher ausreicht.

Befehl extrahieren

Nun wird normalerweise die Abfolge von langen und kurzen Abschnitten ((1.) max. 28-Bit) auf denn obigen Frameaufbau ((2.) 14-Bit) abgebildet und daraus der Befehl entnommen (3. 6-Bit). Der Befehl leitet daraufhin eine Aktion (4.) ein.
1. 2. 3. 4.
0x3F 'Vorwärts'

Vereinfachung


Die Abbildung von 1. nach 2. nach 3. kann jedoch oftmals entfallen und stattdessen direkt von 1. nach 4. gegangen werden. Da die aufgenommene 28-Bit folge eindeutig ist, braucht nur über einen Vergleich die entsprechende Aktion eingeleitet werden.