Hallo Max,
du hast statt INT0_vect INTO_vect ("O" statt "Null") geschrieben - that's it.
mfG
Markus
Hallo Forum!
Habe ein Problem mit dem INT0 Interrupt meines Atmega16. Wenn der Interrupt ausgelöst wird startet der Mikrocontroller von neu. INT1 arbeitet korrekt.
Hoffe jemand kann helfen.Code:#include <avr/io.h> #include <avr/interrupt.h> ISR(INTO_vect) { PORTA=0xff; } ISR(INT1_vect) { PORTA=0xff; } int main(void) { DDRA=0xff; DDRD=0x00; PORTA=0x00; //Interrupt einschalten MCUCR = (1<<ISC00)|(1<<ISC01)|(1<<ISC10)|(1<<ISC11); //Flankenerkennung GICR |= (1<<INT0)|(1<<INT1); //INT1 und INT0 aktiviert sei(); while(1) {} return 0; }
Gruß Max
Hallo Max,
du hast statt INT0_vect INTO_vect ("O" statt "Null") geschrieben - that's it.
mfG
Markus
Bist du sicher, dass da INT0 steht und nicht INTO?
Ein Reset statt nem Interrupt wird dann ausgeführt, wenns den jeweiligen Vektor nicht gibt. Dann nimmt er den Alternativvektor 0x0000 = Reset.
Edit: 2 Leute gleichzeitig *g*.
Nachtrag: Du kannst auch nen eigenen Standard-Vektor definieren:
SIGNAL (__vector_default)
{
...
}
#ifndef MfG
#define MfG
Oh ja, Danke! Jetzt klappts auch.
Dumm das sowas dem Compiler nicht affällt.
Grüße
Max
Ich habe das Programm 1:1 ins AVR Studio kopiert. Es wird zwar kein Fehler gemeldet, aber eine Warnung.
Die Warnung lautet
MfG Hannes../d.c:4: warning: 'INTO_vect' appears to be a misspelled signal handler
Dann sollte ich in Zukunft auch mal die Warnungen durchlesen.
Gruß Max
Warnungen sollte man generell immer ernst nehmen, da sie auf schwer zu findende Fehler hindeuten können.Dann sollte ich in Zukunft auch mal die Warnungen durchlesen.
Lesezeichen