hi, ich probiere gerade einen Timer für ein anderes Projekt zum laufen zu bringen. Ich verwende einen Atmega162 mit 7372800 Hz. Nur der Code springt nicht in die Interrupt Routine. Hier mal die relevanten stellen:
1 | int ms; |
2 | uint8_t s; |
3 | uint8_t min; |
4 | |
5 | //Timer1 Compare Match Interrupt
|
6 | ISR(TIMER1_COMPA_vect) |
7 | {
|
8 | //Milli Sekunden um 1 erhöhen
|
9 | ms++; |
10 | //sind 1000 ms um?
|
11 | if (ms==1000) { |
12 | //ms zurücksetzen und Sekunden erhöhen
|
13 | ms=0; |
14 | s++; |
15 | //sind 60 Sekunden um?
|
16 | if (s==60) { |
17 | //Sekunden zurück setzen und Minuten erhöhen
|
18 | s=0; |
19 | min++; |
20 | }
|
21 | }
|
22 | }
|
23 | |
24 | .
|
25 | .
|
26 | .
|
27 | |
28 | //In main():
|
29 | //CTC Modus & Vorteiler 8
|
30 | TCCR1B |= (1<<CS11)|(1<<WGM12); |
31 | //Interrupt bei Compare Match
|
32 | TIMSK = (1<<OCIE1A); |
33 | //Compare Wert setzen
|
34 | OCR1A = 9216-1; |
der Timer soll jeder ms nen Interrupt auslösen, und die Variable ms hochzählen.