Hallo zusammen,
versuche seit Stunden Timer1 im Compare-Betrieb laufen zu lassen, sodass
ein Interrupt alle 1ms ausgelöst wird.
Mein Programm unterbricht beim Initialisieren des Timers schon alles und
führt nichts weiter aus!
In die Interrupt-Routine zählt ich bis zu einer Sekunde hoch und gebe
einen STring aus. Das ist später nicht die Aufgabe der Routine, sondern
gerade nur zum testen.
Quarz: 8000000
Was mache ich falsch?
Mein Code:
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 | #include <avr/interrupt.h>
|
4 | #include <stdio.h>
|
5 | #include <avr/pgmspace.h>
|
6 | #include <string.h>
|
7 | #include <stdlib.h>
|
8 |
|
9 | #include "main.h"
|
10 |
|
11 | uint8_t mssec = 0;
|
12 |
|
13 | int main (void)
|
14 | {
|
15 |
|
16 | init_uart0( (u16)(XTAL / BAUD0 / 16 - 0.5) );
|
17 |
|
18 | TIMSK1 |= (1<<OCIE1A);
|
19 |
|
20 | OCR1A = 124;
|
21 | TCNT1 = 0;
|
22 |
|
23 | TCCR1A |= (1 << WGM12);
|
24 | TCCR1B |= (1<<CS11) | (1<<CS10);
|
25 | sei();
|
26 | while(1){}
|
27 | }
|
28 |
|
29 |
|
30 | ISR(TIMER1_COMPA_vect)
|
31 | {
|
32 | mssec++;
|
33 | if(mssec == 1000)
|
34 | {
|
35 | mssec = 0;
|
36 | uputs0("1 sec vergangen");
|
37 | }
|
38 | }
|
Vielen Dank für eure Hilfe!