Hallo liebes Forum, Ich habe eine eine Applikation, die den Ausgang eines TSOP1738 einliest, zählt, buffert und den Buffer an der seriellen Schnittstelle ausgibt. Nur ein Fragment, aber funktioniert mit meinen zwei Fernbedienungen ganz prächtig. Jetzt bin ich dabei die Gegenstelle mit einer IR-Sendediode zu bauen, zur Kontrolle habe ich noch eine normale LED danebengehängt. Das Programm macht was es will. Ich bin seit zwei Wochen dran und habe heute den Sende-Interrupt nochmal neu geschrieben. Egal wie sehr ich mit den Frequenzen noch daneben liege, oder die Pausen, der von mir angestrebten Fernbedienung entsprechen, zumindest sollte sich immer das gleiche Bild ergeben. Aber nix da: Mal zuckt die LED nur kurz, wenn ich den Taster drücke, mal passiert in etwa was ich mir vorstellen könnte, dann wieder macht sie eine Sequenz, die ewig lang ist. Da ist ein ganz doofer Bock drin. Es müsste zumindes jedesmal wenn ich drücke das gleiche zu sehen sein... Falls jemand den Röntgenblick hat wäre das wirklich nett... servus Dirk
unsigned int IrArray[ARRAYLEN] = { 2, 278, 134, 18, 14, ... ... 14, 18, 14, 19 }; Haeng da noch eine 0 als letztes Element mit rein. Dein Code moechte die 0 sehen. if (IrCounter == 0) { IrPulsing = !IrPulsing; IrPtr++; IrCounter = *IrPtr; if (IrCounter == 0) // Sequenz zuende { off(); IrSend = 0; }
Danke, das Array ist im auskommentierten Teil, das andere, kürzer Array zum Testen hat eine '0'. Funktioniert nicht. Ich habe eben die Null reingesetzt und das lange Array - mit Null - getestet. Jedesmal was anderes... servus Dirk
definiere dir on() und off() als Makro, dann wird die ISR schmeller...
Das mit dem Makro werde ich heute abend sofort machen. Ich hatte auch schon die vermutung, daß die ISR zu lange benötigt, immerhin stehen ihr nur etwas mehr als 40 Takte zur Verfügung, bis der nächste Interrupt kommt. Um das zu entschärfen habe ich mal die 152000 Interrupts/Sekunde auf 15200 gesetzt, dann sollte es Zeitmässig reichen, obwohl die Frequenz dann nicht mehr für Fernbedienung taugt, das Verhalten ist aber deswegen nicht regelmäßiger. Dirk
Hallo nochmal, der Hauptfehler war, daß das Array mit meiner Deklaration nicht so wie ich es gedacht hatte initialisiert wurde. Die jetzige Arte es zu initialisieren ist zwar etwas arg umständlich, aber ich habe damit eben meinen DAEWOO-Fernseher mehrfach ein- und ausgeschaltet. Meine Start-bits sind noch etwas holprig, habe ich den Verdacht. Aber das ist erstmal ein Meilenstein. Prost. ciao Dirk
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.