Hallo Zusammen
Ich bin gerade dabei bei einem Atmega2560 mit den Timern etwas
herumzuspielen. Ich habe nun verucht mit timer 3 im CTC modus eine ISR
im 1 Sekunden Takt auszulösen. Nun ist es aber so dass dauer zwischen
den Interrupts bei etwa 200mS liegen, also viel zu schnell...
Ich habe nun etwa 10 mal das entsprechende Kapitel im datenblatt gelesen
und komme einfach nicht weiter. Was mache ich falsch?
1 | #define F_CPU 16000000UL
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <avr/interrupt.h>
|
5 |
|
6 |
|
7 | int main(void)
|
8 | {
|
9 | uint16_t Timer = (F_CPU/1024) -1;
|
10 | TCCR3A = (1<<WGM31); //CTC Mode
|
11 | TCCR3B = (1<<CS32) | (1<<CS30); //prescaler 1024
|
12 |
|
13 | OCR3AH = (Timer>>8); //t = 1s
|
14 | OCR3AL = Timer;
|
15 |
|
16 | TIMSK3 |= (1<<OCIE3A);
|
17 | sei();
|
18 | DDRL = 0xFF;
|
19 | while(1)
|
20 | {
|
21 | //Blablabla
|
22 | }
|
23 | }
|
24 |
|
25 | ISR(TIMER3_COMPA_vect)
|
26 | {
|
27 | PORTL ^= (1<<PL0);
|
28 | }
|