Forum: Mikrocontroller und Digitale Elektronik RC6A dekodieren mit ATtiny13, ein Bit fehlt.


von Sebastian Voitzsch (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte mit einem ATtiny13 das RC6A-Protokoll detektieren, um 
Schaltvorgänge auszulösen. Die Anwendung ist nicht neu, ich kenne auch 
IRMP und habe damit einen ATmega8 entsprechend programmiert. Allerdings 
finde ich den ATmega8 für diese Belange überdimensioniert ;-)

Im Anhang die Routine, die ich zur Dekodierung verwende. Sie benutzt 
INT0, um die Flanken (beide Richtungen) zu detektieren. Aus den 
Abständen wird ermittelt, ob es sich um das Startbit (Länge 6T), ein 
einfaches Bit (1T), ein Toggle bit (2T) oder um Kombinationen 0-1 bzw. 
1-0 (2T bzw. 3T bei Toggle-Bits) handelt und entsprechend der Bitwert 
gesetzt.

Die Routine funkitoniert gut, bis auf das letzte Bit: das fehlt immer. 
Ich zähle die Halbbits, RC6 basiert ja auf dem Pegelwechsel in der Mitte 
des Bits. Demnach reicht es, 73 Halbbits (wenn man Startbit und 
Togglebits mitzählt, überträgt RC6A 37 Bits) auszuwerten. Mit der 
Flanke, die das 73. Halbbit abschließt, ist das letzte Bit bekannt.

Sieht jemand, wo mein Fehler ist? Das Hauptprogramm initialisiert nur 
den Timer, wartet auf das Setzen von tr_done und legt dann die erkannten 
Daten im EEPROM ab (dabei werden IRQs natürlich mit cli/sei 
deaktiviert).

Danke und frohes Neues,
Sebastian

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
Noch kein Account? Hier anmelden.