RC6A dekodieren mit ATtiny13, ein Bit fehlt.

Gast #2976929
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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren