Hallo Zusammen
Ich versuche nun schon seit (zu) langer Zeit einen Timer zum laufen zu kriegen. Ich bin eigentlich bloss etwas am rumspielen. Ich wollte einen der Timer so einstellen dass ich jede sekunde ein Interrupt erhalte. Das ganze Funktioniert eigentlich, nur viel zu schnell. Statt einer Sekunde habe ich eta 200mS... Ich habe nun das Datenblatt gefühlte 20mal durchgelesen und gefühlte 100 webseiten angeschaut, aber ich kriegs nicht hin. Ich weiss dass der uC mit der definierten Frequenz läuft, ich habe vorhin ein paar ausgaben am UART gemacht. Kann mir jemand sagen was ich falsch mache?
Code:#define F_CPU 16000000UL #include <avr/io.h> #include <avr/interrupt.h> int main(void) { uint16_t Timer = (16000000/1024) -1; TCCR3A = (1<<WGM31); //CTC Mode TCCR3B = (1<<CS32) | (1<<CS30); //prescaler 1024 OCR3AH = (Timer>>8); //t = 1s OCR3AL = Timer; TIMSK3 |= (1<<OCIE3A); //Compare interupt aktivieren sei(); DDRL = 0xFF; while(1) { //TODO:: Please write your application code } } ISR(TIMER3_COMPA_vect) { PORTL ^= (1<<PL0); }







Zitieren


Lesezeichen