Hallo zusammen,
habe das ganze wo-ende verbracht um mich bei der AVR Programmierung
einzuarbeiten, habe leider ein problem mit der Routine des TMR0
Interrupts, TOV0 wird nicht gesetzt obwohl das TOIE und GIE bits
eingeschaltet sind?
Ich Wäre dankbar für die Hinweise zu den möglichen Fehlerquellen.
main.c
1 | unigned char test;
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | init();
|
6 | while(TRUE)
|
7 | {
|
8 | wdr();
|
9 | }
|
10 | return 0;
|
11 | }
|
Init.c:
1 | void init(void)
|
2 | {
|
3 | //Timer0
|
4 | TCCR0 |= 0x01;
|
5 | TIMSK |=(1<<TOIE0);
|
6 | TCNT0 = 55;
|
7 |
|
8 | //WatchDog
|
9 | WDTCR = INIT_WDTCR;
|
10 |
|
11 | //Interrupts
|
12 | GICR &= (!(1<<IVSEL));
|
13 | GICR |= (1<<IVCE);
|
14 |
|
15 |
|
16 | sei(); // enable GIR
|
17 | }
|
interrupt Routine:
1 | ISR(INT_TMR0)
|
2 | {
|
3 |
|
4 | TCNT0 = 55;
|
5 | test++;
|
6 | sei();
|
7 | }
|