Hallo, ich habe ein Problem mit dem Timer Interrupt (Output Compare Modus). Die Interrupt-Routine wird nicht ausgeführt. Was mache ich falsch?
1 | #include <avr/io.h> |
2 | #include <avr/interrupt.h> |
3 | |
4 | |
5 | #define F_CPU 8000000 // T system clock = 1 / 8MHz = 0,125us
|
6 | |
7 | |
8 | int main(void) |
9 | {
|
10 | //DDRD |= (1<<PD3); // PD3 (OC0A) = Ausgang
|
11 | DDRB |= (1<<PB2); // PB2 = Ausgang |
12 | |
13 | |
14 | TCCR0A |= (1<<COM0A1); // clear OC0A on compare match |
15 | TCCR0A |= (1<<WGM01)|(1<<WGM00); // Fast PWM (mode 3) |
16 | |
17 | TCCR0B |= (1<<CS00); // Kein Vorteiler |
18 | |
19 | OCR0A = 100; // alle 12,5 us ein interrupt |
20 | |
21 | TIMSK0 |= (1<<OCIE0A); // compare match interrupt |
22 | |
23 | sei(); // Interrupts enable |
24 | |
25 | while(1) |
26 | {
|
27 | asm ("NOP"); |
28 | }
|
29 | return 0; |
30 | }
|
31 | |
32 | ISR(TIM0_COMPA_vect) |
33 | {
|
34 | PORTB ^= (1 << PB2); // Portpin toggeln |
35 | }
|