Hallo Leute,

leider konnte mir im Mikrocontroller Forum keiner helfen, deswegen probiere ich es hier noch einmal. Bitte habt Nachsicht mit diesem Cross-Posting.

Problem: Einfacher Timer-Interrupt funktioniert nicht

Folgender (simpler) Code:

Code:
#ifndef MCU             
#define __AVR_ATmega8515__
#endif

#ifndef F_CPU           
#define F_CPU 4000000UL
#endif

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/portpins.h>
#include <util/delay.h>

ISR(TIMER0_OVF_vect)
{
  PORTC = ~PORTC;
}

int main()
{
  DDRA   =  0xff;
  PORTA   =   0x0f;
  
  DDRC  =   0xff;
  PORTC   =   0x0f;
  
  TIMSK  |=  (1 << TOIE0);                //overflow timer einschalten
  TCCR0   =  (1 << CS02) | (0 << CS01) | (1 << CS00);  //prescaler auf 1024
  
  //sei();      //hauptschleife funktioniert wenigstens wenn auskommentiert
  
  while(1)
  {
    PORTA = ~PORTA;
    _delay_ms(500);
  }
}
Effekt: Wenn der call auf sei() auskommentiert ist, funktioniert die Hauptschleife. Sonst geht gar nichts.

Das Programm ist meines Erachtens nach absolut korrekt! Der Chip sitzt auf dem STK500 und soll dort die LEDs zum Leuchten bringen. Sobald der Call auf sei() drin ist, geht gar nichts mehr!

Vermutung: Controller hängt permanent in der Interrupt-Routine oder ist gar defekt.

Frage: Müssen eigentlich entsprechende Fuses oder Taktungen gesetzt werden, um den Timer-Interrupt zu betreiben? Der Controller wird auf einem STK500 in der Standard Einstellung betrieben (beides out-of-the-box). STK500 gibt den Takt vor (3,68 MHz).

Link zum Original-Thread im Mikrocontroller.net forum: http://www.mikrocontroller.net/topic/174886

Hoffe ihr könnt mir weiterhelfen!