Hallo,
hab ein Problem mit meinem Programm/IAR Debugger. Hab einen ATmega32
über JTAG mit dem Debugger verbunden. Funktioniert soweit auch prima.
Jetzt habe ich aber einen Timer im Code verwendet (CTC Mode). Beim
debuggen sehe ich auch wie sich der Wert im TCNT0 Register ändert, aber
der Interrupt wird nicht ausgeführt (Breakpoint in der ISR).
Hat jemand eine Idee woran das liegen könnte? Hab leider kein Oszi um
mal zu messen. Hab über einen Teiler den Takt auf 1s runter geteil, aber
LED blinkt auch nicht :(
Hier mein Code:
1 | #pragma vector=TIMER0_COMP_vect
|
2 | __interrupt void timerCompareHandler( void )
|
3 | {
|
4 | if (--teiler == 0)
|
5 | {
|
6 | teiler = 125;
|
7 | }
|
8 | }//timerCompareAHandler()
|
9 |
|
10 | void init_timer0(void)
|
11 | {
|
12 | DDRB |= (1<<PB3); //OC0 pin to output
|
13 | PORTB &= ~(1<<PB3);
|
14 | // presacler by 64, clear on compare with OCR0, Toggle OC0 pin
|
15 | TCCR0 = (1<<WGM01)|(0<<WGM00)|(0<<COM01)|(1<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);
|
16 | OCR0 = 199; //625Hz @ 16MHz system clock
|
17 | TCNT0 = 0; // Timer startet mit 0
|
18 |
|
19 | SREG |= GIE; //enable global interrupt
|
20 | TIMSK = 1<<OCIE1A; // Interupt bei Vergleichswert (Compare Match)
|
21 | }
|
Hat jemand eine Idee?
Gruß
Peter