Hallo

RC5 zu senden ist schon etwas anspruchsvoll. Man benötigt die Trägerfrequenz des Signals, in der Regel 36kHz(=72kHz-Takt!), die man üblicherweise mit einem Timerinterrupt erzeugt. Mit dieser Frequenz schaltet man einen Ausgang (asuro: PB3, OC2) an dem eine Seite einer (IR-)LED (asuro: D10) angeschlossen wird. Das andere Ende der LED wird mit passenendem Vorwiderstand (asuro: R16, 220R) an den Pin (asuro: PD1,TXD) angeschlossen an dem man das Bitmuster ausgeben möchte. So kann man der Trägerfrequenz ein Signal aufmodulieren.

Nun zum Bitmuster. Das RC5-Signal ist wird mit der Manchester-Codierung (anklicken!) gesendet. Ein Wechsel von low nach high bedeutet '1', von high nach low bedeutet '0'. Die Bitlänge ist ein Bruchteil der 36kHz-Trägerfrequenz (es war ein 64stel soweit ich mich erinnern kann).

Mein Lösungsansatz (ich hatte das mal in Bascom programmiert) ist folgender:
Ein 72kHz-Timer im CTC-Mode toggelt einen OCR-Pin und erzeugt so die 36kHz-Trägerfrequenz. Gleichzeitig ruft dieser Timer eine ISR auf in der die zwei Manchester-Halbbits erzeugt werden. Das erste Halbbit ist quasi das Gegenteil des eigentlichen Datenbits und wird für 64 ISR-Aufrufe am Sendepin ausgegeben. Nun folgt der entscheidende Pegelwechsel und der (eigentliche) Pegel des Datenbits wird am Datenpin für weitere 64 ISR-Zyklen ausgegeben. Das Ganze wird mit allen 14 RC5-Datenbits wiederholt. Das wars. (Wie man die 14 RC5-Datenbits zusammensetzt ist noch offen).

Das Setup des Timers kann man z.B. aus der Datei asuro.c der orginalen CD-Version entnehmen. In dieser Version der Library wird noch ein 72kHz-Timer zur Erzeugung der Trägerfrequenz für die IR-Kommunikation verwendet. Hier könnte man vermutlich relativ einfach einen RC5-Sender aufsetzen.

Gruß

mic