KlausT
25.01.2008, 18:55
Nach dem Zusammenbau meines Asuro stellten sich Schwierigkeiten mit der Nutzung der RC5-Library-Unterstützung ein.
Die Routine zum Einlesen erkannte einfach keine IR-Kommandos - wie sich später herausstellen sollte, eine unglückliche
Verkettung von "leeren Akkus"und falschen Gerätecodes auf der Unsiversal-Fernbedienung. Um die genaue Ursache
zu finden wurde daraufhin ein Programm zur Aufzeichnung der IR-Signale geschrieben. Nach Fertigstellung des
Programms konnten die vorgenannten Probleme dann auch behoben werden.
Das Programm wurde nochmal etwas modifiziert, um jetzt auch RC6-Signale aufzuzeichnen.
Somit wäre hiermit m.E. eine gute Ausgangsbasis für eine RC6-Implementierung geschaffen.
Fragen an dieser Stelle:
- Hat jemand bereits einen Algorithmus für RC6 implementiert?
- Hätte jemand Interesse an einer RC6-Implementierung?
Nachfolgend noch einige Infos zum IR-Signalaufzeichnungsprogramm (finden sich aber alle auch im Programm).
Insgesamt werden 6144 Signale aufgezeichnet.
Wichtig ist zunächst das Eintragen der eigenen (zusätzlichen) Interrupt-Service-Routine (ISR) in "asuro.c":
SIGNAL (SIG_OVERFLOW2)
{
...
/* %8 = 222.2us; %4 = 111.1 us */
if (!(count36kHz % 4))
IsrRCTest();
}
Je nach Teiler kann man jetzt RC5- oder RC6-Signalcodes aufzeichnen:
- 222.2us [!(count36kHz % 8 ) für RC5]
- 111.1us [!(count36kHz % 4 ) für RC6]
Bei jedem Aufruf der ISR wird der Flankenwert gespeichert:
- Datenspeicher = 768 Byte
- Flankenwert = 0 oder 1
- Anzahl Aufrufe bzw. Flankenwerte = 768 * 8 = 6144 Bit
- 6144 * 222.2us = 1365196.8us = 1365.2ms = 1.36s
oder
- 6144 * 111.1us = 682598.4us = 682.6ms = 0.68s
Speicherung der Flankenwerte in fd[] (Beispiele):
- Der erste Flankenwert wird in Bit 7 von fd[0] gespeichert.
- Der zehnte Flankenwert wird in Bit 6 von fd[1] gespeichert.
Zu benutzen ist das Ganze dann wie folgt:
- Fernbedienung direkt ueber den IR-Empfaenger des Asuro halten
- z.B. Taste "7" dauerhaft druecken
- Asuro einschalten
- Ergebnis mit Terminalprogramm empfangen
Einen aufgezeichneten (und analysierten) RC6-Code findet sich im Kommentar des Programmes. Ebenso viele Informationen zum Aufbau von RC5 und RC6.
M.E. wäre dies eine gute Basis für eine algorithmischen RC6-Dekodier-Routine.
Die Routine zum Einlesen erkannte einfach keine IR-Kommandos - wie sich später herausstellen sollte, eine unglückliche
Verkettung von "leeren Akkus"und falschen Gerätecodes auf der Unsiversal-Fernbedienung. Um die genaue Ursache
zu finden wurde daraufhin ein Programm zur Aufzeichnung der IR-Signale geschrieben. Nach Fertigstellung des
Programms konnten die vorgenannten Probleme dann auch behoben werden.
Das Programm wurde nochmal etwas modifiziert, um jetzt auch RC6-Signale aufzuzeichnen.
Somit wäre hiermit m.E. eine gute Ausgangsbasis für eine RC6-Implementierung geschaffen.
Fragen an dieser Stelle:
- Hat jemand bereits einen Algorithmus für RC6 implementiert?
- Hätte jemand Interesse an einer RC6-Implementierung?
Nachfolgend noch einige Infos zum IR-Signalaufzeichnungsprogramm (finden sich aber alle auch im Programm).
Insgesamt werden 6144 Signale aufgezeichnet.
Wichtig ist zunächst das Eintragen der eigenen (zusätzlichen) Interrupt-Service-Routine (ISR) in "asuro.c":
SIGNAL (SIG_OVERFLOW2)
{
...
/* %8 = 222.2us; %4 = 111.1 us */
if (!(count36kHz % 4))
IsrRCTest();
}
Je nach Teiler kann man jetzt RC5- oder RC6-Signalcodes aufzeichnen:
- 222.2us [!(count36kHz % 8 ) für RC5]
- 111.1us [!(count36kHz % 4 ) für RC6]
Bei jedem Aufruf der ISR wird der Flankenwert gespeichert:
- Datenspeicher = 768 Byte
- Flankenwert = 0 oder 1
- Anzahl Aufrufe bzw. Flankenwerte = 768 * 8 = 6144 Bit
- 6144 * 222.2us = 1365196.8us = 1365.2ms = 1.36s
oder
- 6144 * 111.1us = 682598.4us = 682.6ms = 0.68s
Speicherung der Flankenwerte in fd[] (Beispiele):
- Der erste Flankenwert wird in Bit 7 von fd[0] gespeichert.
- Der zehnte Flankenwert wird in Bit 6 von fd[1] gespeichert.
Zu benutzen ist das Ganze dann wie folgt:
- Fernbedienung direkt ueber den IR-Empfaenger des Asuro halten
- z.B. Taste "7" dauerhaft druecken
- Asuro einschalten
- Ergebnis mit Terminalprogramm empfangen
Einen aufgezeichneten (und analysierten) RC6-Code findet sich im Kommentar des Programmes. Ebenso viele Informationen zum Aufbau von RC5 und RC6.
M.E. wäre dies eine gute Basis für eine algorithmischen RC6-Dekodier-Routine.