Forum: Compiler & IDEs Warum lösst der Interrupt nicht aus?


von Tamme D. (tamme)


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?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Bei dem Code fehlen sowohl ein paar Zeilen als auch Infos, um welchen 
AVR es eigentlich geht. Ich kann das so nicht mit einem Datenblatt 
vergleichen, auch nicht übersetzen, geschweige denn im Simulator 
nachsehen, ob ich das Problem wenigstens reproduzieren kann. Sorry.

von Tamme D. (tamme)


Lesenswert?

huch srr ganz vergessen also es geht um nen atmega8 ich weis nich... 
soll ich den ganzen code hochladen oder was fehlt?

von Tamme D. (tamme)


Lesenswert?

Was Timer oder Interrupt angeht gibts da keine code zeiln mehr... vllt 
liegt da mein fehler?

von Stefan B. (stefan) Benutzerseite


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
}

von Tamme D. (tamme)


Lesenswert?

Juhu es funktioniert :) thx

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.