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);
}
Lesezeichen