Ich habe folgende Initialisierung des Timer 1 (16Bit) beim ATMega8:
1 | OCR1A = 0xFFFF; // TOP = 65535 |
2 | OCR1B = Middle; // Debug |
3 | TCCR1A = (1<<COM1B1) | (1<<WGM11) | (1<<WGM10); // non-inverting OC-Mode |
4 | TCCR1B = (1<<CS10) | (1<<ICES1) | (1<<WGM13) | (WGM12); // no Prescaler, Trigger on rising edge |
5 | TIMSK = (1<< TOIE1); // Overflow-Interrupt freigeben |
Es soll der Timer-Mode 15 (Fast PWM) mit OC1A = 0xFFFF als Top sein. Der Controller steckt im STK500 und wird mit 3,686MHz betrieben. Die Frequenz stimmt, da das problemlos USART funktioniert. Laut Datenblatt wird die Overflow-ISR beim Übergang von TOP nach BOTTOM ausgelöst (wird auch im Programm; LED blinkt). Nach meiner Rechnung sollte die LED alle 17,7ms ihren Zustand ändern. Das Ding leuchtet aber eher 2,5 Sekunden. Ergo: Irgendwas an der Initialisierung ist falsch - nur was? Ich bin etwas ratlos. Vielen Dank im Voraus.