Hi!
Ich suche schon seit 2 Stunden meinen Fehler, vielleicht ist es an der
Zeit, dass mal jemand anders den Quelltext anschaut. Ich suche schon wie
blöde...
1 | #include <avr/io.h>
|
2 | #include <stdint.h>
|
3 | #include <avr/interrupt.h>
|
4 |
|
5 | unsigned int g_uiTest = 0;
|
6 |
|
7 | ISR (TIMER1_COPMPA_vect)
|
8 | {
|
9 | g_uiTest++;
|
10 | }
|
11 |
|
12 |
|
13 | int main(void)
|
14 | {
|
15 |
|
16 |
|
17 | // void init_timer1(void)
|
18 | TCCR1B = (0<<CS02) | (0<<CS01) | (1<<CS00) | (1<<WGM12);
|
19 | // Zähltakt einstellen
|
20 | // clk = 16 MHz
|
21 | // WGM12: CTC-mode aktiviert
|
22 |
|
23 |
|
24 | TCNT1 = 0;
|
25 | // Zählreggister auf 0 setzen
|
26 |
|
27 | OCR1A = 20000;
|
28 |
|
29 |
|
30 | TIMSK = (1<<OCIE1A);
|
31 | // Freigabe T/C1 Interrupt
|
32 |
|
33 | TIFR = 0;
|
34 |
|
35 | sei();
|
36 |
|
37 |
|
38 |
|
39 | while{1}
|
40 | {
|
41 | if(g_uiTest > 20000)
|
42 | {
|
43 | g_uiTest = 0;
|
44 | }
|
45 | }
|
46 | return 1;
|
47 | }
|
Im Debug-Modus kann ich genau alles verfolgen, die Register sind korrekt
gesetzt. Die Variable g_uiTest müsste doch jetzt hochlaufen...tut sie
aber nicht