Hallo

Constant bit time of 1.778ms (64 cycles of 36 kHz)
Ich schätze, nun bin ich selbst in die Takt/Frequenz-Falle getappt. Wenn die Bitlänge 64 Zyklen der 36kHz dauert, müssen die Startpunkte für die Halbbits in der ISR bei 128 und 64 sein. Vermute ich mal...

Ob man das im Simulator überhaupt testen kann weis ich nicht, aber ich vermute mal, dass die ISR nicht aufgerufen wird. Das könnte man erkennen, wenn man den Wert für rc5_halbbit betrachtet., der sollte in der ISR hintergezählt werden. Dieser Code, der die ISR definiert

On Timer0 Rc5_isr

erscheint mir kritisch. Eigentlich sollte bei CompareMatch das "Compare0a"-Ereigniss abgefangen werden. Dieses ist aber bei Bascom nicht verfügbar, es gibt nur das "Compare1a"-Ereigniss. Hier hilft vielleicht die direkte Manipulation der Sprungtabelle für die Interrupts.

Eine andere Fehlerquelle könnten die globalen Variablen sein. Wahrscheinlich arbeitet die ISR nur mit der Kopie der Werte und deshalb wird rc5_bitmaske im Hauptprogramm nie zu 0 und das Programm würde sich aufhängen. Das muss ich nochmal überdenken/nachlesen. Ein Update folgt aber frühestens heute abend, weil ich heute vorweihnachtliche Familienfeier habe. *würks*

Gruß

mic