Fehlermeldung bei ATmega48

OP #3137950
Lesenswert?

Hallo zusammen,

ich bekomme immer diese Fehlermeldung 'attempt to use poisoned 
"SIG_INTERRUPT0"' und kann damit nichts anfangen.

Der Code:

/*
 * ATMEGA48_1.c
 *
 * Created: 21.04.2013 11:54:52
 *  Author: Planetenbepinkler
 */


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

#define green_led0_on() PORTC |= _BV(0)
#define green_led0_off() PORTC &= ~_BV(0)
#define green_led1_on() PORTC |= _BV(1)
#define green_led1_off() PORTC &= ~BV(1)

int main(void)
{

  DDRB = 0b11111111;  // PORTB auf Ausgang schalten
  DDRC = 0b11111111;  // PORTC auf Ausgang schalten (benutzt wird nur 
PC0 und PC1)
  DDRD = 0b11111011;  // PD2 als Eingang
  PORTD = 0b00000100;  // PD2 Auf HI setzen für Schalten gegen Masse

  EIMSK |= _BV(INT0);  // Interrupt 0 einschalten
  EICRA |= _BV(ISC01);// Trigger auf fallende Flanke setzen
  sei();  // Interrupt global erlauben

    while(1)
    {
    sweep();
    }
}

void sweep()
{
  PORTB = 0b10000000;  // Beginn des Lauflichts
  for (int i=0;i<8;i++)
  {
    _delay_ms(100);
    PORTB >>=1;
  }
}

ISR(SIG_INTERRUPT0)  // Interrupt Service Routine
{
  green_led0_on();
  _delay_ms(50);
  green_led0_off();

  green_led1_on();
  _delay_ms(2000);
  green_led1_off();
}


Wo liegt mein Fehler?!
Danke für eure Hilfe.
Gast #3137962
Lesenswert?

Und hier noch das Warum: SIG_INTERRUPT0 ist eine alte Bezeichnung welche 
nicht mehr verwendet werden soll. Deshalb wurde sie "vergiftet" - d.h. 
mit einem speziellem Attribut versehen was beim Compilieren eine Warnung 
wie oben ergibt.
#3137963
Lesenswert?

Schau mal nach den Namen der Interrupts. Zumindest beim GCC ist die 
Bezeichnung SIG_INTERRUPT0 und alle anderen mit SIG nicht mehr aktuell.
Jetzt sehen die Namen so aus (zum Beispiel):
1
ISR(TIMER2_OVF_vect)
2
{
3
   ...;
4
}

Eine Beispieltabelle findest du hier:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Interrupts

oder im Datenblatt deines Vertrauens (ähhm-Controllers)  ;-)

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