ISR wird nicht aufgerufen trotz erkennen eines Interrupts

OP #2757451
Lesenswert?

So Hier mein Programm: Ich wäre euch sehr dankbar, wenn Ihr einen Fehler 
findet, da ich nach langem Ausprobieren mit meinem Latein am Ende bin 
:-(.
Der Interrupt wird Zwar im GIFR angezeigt aber die ISR wird nicht 
bearbeitet.


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

#ifndef F_CPU
    #define F_CPU 1000000UL
#endif


uint8_t cnt = 0;      // Global für Kommunikation ISR / main


//Interrupt Taster INT0

  ISR(INT0_vekt)
{
  if(cnt==9)
    cnt=0;
    else
    cnt++;


}

int main (void) {


  uint8_t LEDs[10] = 
{0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};
  DDRA = 0x7F;
  MCUCR|=(1<<ISC00);
  MCUCR&=~(1<<ISC01);
  GICR|=(1<<INT0)  ;
  sei();


  while (1) {

    PORTA = LEDs[cnt];


}


return (0);
}


Gruß hendschu
OP #2757608
Lesenswert?

Danke für die schnellen Antworten!! Habe es nun mit volatile versucht 
allerdings habe ich noch das gleiche Problem wie vorher auch. Durch das 
Volatile sind allerdings die 2 Warnungen weg gegangen die ich nicht 
deuten konnte( Sorry Jörg). Falls ihr noch eine andere Idee habt lasst 
es mich wissen :-)
Gast #2758491
Lesenswert?

Anton B. schrieb:
> Der Interrupt wird Zwar im GIFR angezeigt aber die ISR wird nicht
> bearbeitet.

Bist Du sicher, daß die ISR nicht bearbeitet wird?

Es gibt mehrere Möglichkeiten, was schief gehen kann:
1. MCU geht nicht die ISR (z.B. wegen falscher Vektorangabe).
2. MCU geht in die ISR, aber nicht mehr heraus (z.B. weil Requestflag 
nicht gelöscht wird).
3. Datenübergabe zwischen ISR und main() geht nicht (z.B. wegen 
fehlendem volatile).
Gast #2759093
Lesenswert?

die Warnung der Art "Vektor mit diesem Namen existiert nicht", führt 
schlicht dazu, daß die so definierte ISR nie ausgeführt wird. Nur wenn 
sie den richtigen Namen hat, wird sie nämlich statt "BADISR_vect" in die 
Vektor-Tabelle eingetragen, der einfach nach 0 springt (fast ein Reset).
Warnungen sollte man erst dann ignorieren, wenn man genau weiß, daß sie 
harmlos sind. Wer das genannt Problem hat, braucht da noch ein Weilchen.

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