Warum lösst der Interrupt nicht aus?

OP #813141
Lesenswert?

Also im mom komm ich bei meinem Programm einfach nicht weiter...

Hier mal der Betreffende teil....

// Timer-Interrupt
ISR(TIMER0_OVF_vect)
{
  // save(ADCL, ADCH);    // Speichern
  test(0xff, 0xff);

  TCNT0 = TCNT0 + ZAEHL;    // Zähler neusetzen
}

In main():

// Timer   initsalisierung
ausg(BOOT_timer_init);
  TCCR0 = 0x1;    // Teiler 0
  TIMSK = 0x2;    // Timer0 Interrupt frei
  TCNT0 = ZAEHL;    // Startwert setzen


sei();

________________________

Also die Initsialisierung wird ohne Probleme durchlaufen. Aber der 
Timer-Interrupt wird nie Ausgelöst. Was hab ich falsch gemacht?
Persönliche Seite #813189
Lesenswert?

TIMSK ist falsch gesetzt.

Das funktioniert in der Simulation:
1
//
2
// Atmega8
3
// OPtimierung -O0 (keine)
4
// F_CPU 4000000
5
//
6
#include <avr/io.h>
7
#include <avr/interrupt.h>
8

9
#define ZAEHL 42
10

11
static void test(unsigned char dick, unsigned char doof)
12
{
13
  DDRB = dick;
14
  PORTB ^= doof;
15
}
16

17
// Timer-Interrupt
18
ISR(TIMER0_OVF_vect)
19
{
20
  test(0xff, 0xff);
21
  TCNT0 = TCNT0 + ZAEHL;    // Zähler neusetzen
22
}
23

24
int main(void)
25
{
26

27
  TCCR0 = (1<<CS00);  // Teiler 1 (no prescaling) Table 34 Datenblatt
28
  TIMSK = (1<<TOIE0); // Timer0 Overflow Interrupt frei 
29
  TCNT0 = ZAEHL;      // Startwert setzen
30

31
  sei();
32

33
  while(1);
34
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren