AVR GCC BADISR_vect ?

Gast #4966259
Lesenswert?

Hallo,

ich hab Problem mit sporadisch Abstürzen meines Programms. Ich hab nun 
die ISR Routine
1
ISR(BADISR_vect)
2
{
3
  PORTA |= (1 << PA5);    //ON
4
}
eingefügt und diese wird tatsächlich ausgelöst. Die Frage ist nun wie 
finde ich heraus welcher ISR es war? Komisch ist auch das die LED nicht 
mehr ausgeht obwohl ich diese in der Hauptschleife auf zwei Tastern 
liegen habe
1
if ( !(PINA & (1<<PA2)) ) {
2

3
 PORTA |= (1 << PA5); //blau
4
}
5
if ( !(PINA & (1<<PA3)) ) {
6
 PORTA &= ~(1 << PA5);
7
}

zurvor funktioniert das LED ein/aus schalten wenn aber die ISR 
BADISR_vect angesprochen wurde nicht mehr?? woran kann das liegen?

Gruss Patrick
#4966927
Lesenswert?

Wenn die LED nicht mehr ausgeht, obwohl deine Tastenbetätigung die 
ausschalten müsste, wird die ISR wiederholt aufgerufen. Schau dir halt 
im Daenblatt an, bei welchen Interrupts das Flag nicht automatisch 
zurückgesetzt wird, und schau dir in deinem Programm an, welche der 
Module du benutzt. Da sollte sich der Übeltäter finden lassen.

Oliver

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