also irgendwie verstehe ich nicht, wie ihr die 36kHz eingestellt habt.
Code:
/*
Timer2, zum Betrieb mit der seriellen Schnittstelle, fuer die
IR-Kommunikation auf 36 kHz eingestellt.
*/
TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);
OCR2 = 0x91; // duty cycle fuer 36kHz
TIMSK |= (1 << TOIE2); // 36kHz counter
Wenn ich das Datenblatt richtig lesen kann wird hier doch der Timer2 auf Fast PWM gestellt und ein und ein prescaler von 1.
Die Periodendauer kann doch bei Fast PWM nicht verändert werden, oder? also würde hier alle 256 Takte der Interrpt aufgerufen.
Auch die Interruptroutine ist mir nicht so ganz klar.
Code:
SIGNAL (SIG_OVERFLOW2)
{
TCNT2 += 0x25;
count36kHz ++;
if (!count36kHz)
timebase ++;
}
wird hier einfach zum aktuellen Timer wert 0x25 addiert?
das ergibt dann aber nicht genau 36khz. genauer wäre es 0x22 zu addieren.
Lesezeichen