Hallo allerseits,
ich habe heute den ganzen Tag an einem neuen CUNO2 (mit aktueller culfw) rumgepfrimelt, um ihm meine Fernbedienungen beizubringen. Dabei bin ich auf einen Bug und ein seltsames Problem gestoßen.
Ich muss vorausschicken, dass ich zwar vom Programmieren im Allgemeinen leidlich Ahnung habe, aber bislang null Schimmer, was IR-Fernbedienungen betrifft. Entsprechend elementar
;–) mögen meine Punkte sein. Ich bin mir auch nicht sicher, ob die Bugs/Probleme culfw/CUNO2-spezifisch sind oder einfach Probleme im IRMP-Code, die dann besser auf
mikrocontroller.net zu stellen wären. Aber ich dachte mir, ich gehe vom Konkreten zum Allgemeinen und fange erstmal hier an.
Zunächst mal zu dem Bug: Wenn man in irmpconfig.h (bei dem voreingestellten F_INTERRUPTS Wert von15625) IRMP_SUPPORT_NEC42_PROTOCOL aktiviert, funktioniert überhaupt kein Protokoll mehr (weder NEC42 noch irgendein anderes – zumindest war das bei allen Protokollen so, für die ich überhaupt Fernbedienungen habe). Ich habe nur zwei Lösungen dafür gefunden: IRMP_SUPPORT_NEC42_PROTOCOL ausschalten oder F_INTERRUPTS auf <= 10000 setzen.
Ältere Versionen:
13.02.2012: Bugfix: oberstes Bit in Adresse falsch bei NEC-Protokoll, wenn auch NEC42-Protokoll eingeschaltet ist.
Könnte es sein, dass die aktuelle culfw noch eine IRMP-Version von vor dem 13.02.2012 benutzt? Dann ist das vielleicht der Bug, sonst ist es ein anderer …
Nun zu meinem Problem:
Eine meiner Fernbedienungen, von einem Hitachi-Projektor von 2006, hergestellt von Interlink Electronics, wurde vom CUNO2 zunächst stets ignoriert (kein Aufleuchten der gelben Ethernet-LED bei Befehlseingabe auf der Fernbedienung). Nach langem Probieren kam ich schließlich darauf, dass diese FernbedienungRC5 nutzt, aber nur bei F_INTERRUPTS <= 10000 funktioniert. Bei höheren Werten reagiert der CUNO2 wie gesagt schlicht nicht.
Das Dumme ist nur: Auch bei F_INTERRUPTS auf <= 10000 lösen die ca. 30 Tasten auf der Fernbedienung nur 3 verschiedene Codes aus; es werden also nur 3 Buttons angelegt. Noch verrückter: der genaue Wert dieser 3 Codes hängt von F_INTERRUPTS ab; verändere ich diesen Wert (stets <= 10000), verändern sich auch die empfangenen Codes. Ist hier noch was zu retten, oder muss ich diese Fernbedienung abschreiben?
Und selbst wenn es hier eine Lösung gäbe: Ich habe leider einige andere Fernbedienungen, die Protokolle verwenden, die F_INTERRUPTS >= 15000 benötigen. Müsste ich dann also zwei CUNOS verwenden? Wenn ich das richtig sehe, lassen sich die Interrupts ja nur global einstellen, nicht pro Protokoll. Wobei ich, wenn ich die IR-Codes einmal entschlüsselt habe, den CUNO2 nur noch zum Senden verwenden will. Was "Interrupts" im Zusammenhang mit Senden bedeuten sollen, ist mir aber eh nicht ganz klar. Vielleicht gäbe es hier ja doch eine Möglichkeit, mit einem CUNO2 auszukommen?
Vielen Dank im Voraus für alle evtl. Infos oder Ideen!
Uli