ich seh grad, ich hab die Timer-Initialisierung doch aus der Yeti-Lib kopiert.
Code:
void initIR (void)
{//------------------------------------------------------------//
// Init Timer2, used for generating RS232 IR carrier signal //
//------------------------------------------------------------//
//prepare 36kHz for IR - Communication
//WGM21: waveform generation mode 2 => CTC mode => TOP = OCR2
// (Only counting up until value OCR2 (TOP) reached)
//COM20: Toggle OC2 on Compare Match
//CS20: No prescaling (so Timer2 clock frequency = 8MHz = 125ns)
TCCR2=(1<<WGM21)|(1<<COM20)|(1<<CS20);
//0x6E = 110, so frequency is 110 * 125ns = 13.75us = 72.727KHz
//as output is toggled, the real frequency is 72.727KHz / 2 = roughly 36KHz
OCR2=0x6E;
//reset timer2
TCNT2=0;
//enable tx-carrier signal (by switching 'carrier' port to output)
DDRB|=(1<<PB3);
}
Für den Mega32 müsste nur die letzte Zeile angepasst werden. Die eigentlichen Sende/Empfangsfunktionen brauchst du natürlich auch. Da werde ich die Tage die Fleury-lib auf halbduplex umstricken, weil es sonst Rückkopplungen zwischen Sender und Empfänger auf dem selben Board gibt.
Ein Tipp noch: schließ drei IR-Dioden in Reihe an (mit kleinerem Vorwiderstand), das gibt mehr Sendeleistung ohne zusätzlichen Energieverbrauch.
Lesezeichen