INTERRUPT

Gast #5116
Lesenswert?
• ▲
▼
Hi,

das ist mein Programm zur Verwendung des Ertetnen Interupts1 eines 
90LS8535, geht aber nicht. Kann mir einer erklären was ich falsch mache?

int main(void)
{
   enable_external_int(INT1);                  //INT1 enable
   outp(BV(ISC11)|BV(ISC10), MCUCR);   //Reagiert auf steigende Flanke

   outp(0xff,DDRA);   //Port A als Output
   for(;;)                    //Ständiges Bliken der LED's auf Port A
   {
      outp(0xff,PORTA);
      Wait_ms(1000);
      outp(0x00,PORTA);
      Wait_ms(1000);
   }
}

INTERRUPT(SIG_INTERRUPT1)
{
   for(;;)
   {
       outp(0x00,PORTA); //Port A soll auf 0x00 gesetzt werden, 
Controller steht
   }
}

Wait_ms(int iMs) ist nur eine Warteschleife die iMs Milisekunden 
wartet(timer).
Der kontroller sollte doch wenn der Pin INT1 von L auf H springt in die 
INTERRUPT Funktion springen und Nix mehr machen, oder??
Admin Persönliche Seite #5118
Lesenswert?
• ▲
▼
Hallo Stefan (H.),

verwende SIGNAL statt INTERRUPT. Bei Aufruf von SIGNAL werden die 
Interrupts deaktiviert, bei INTERRUPT nicht. Ich nehme an du verwendet 
einen Taster an INT1? Taster prellen, ein Tastendruck wird also als 
mehrere Impulse erkannt. Dein Interrupthandler wird also immer wieder 
neu aufgerufen, auch wenn er noch nicht beendet ist (in diesem Fall 
durch die Endlosschleife ja auch nicht möglich), die Folge ist ein 
Stacküberlauf -> undefiniertes Verhalten.

MfG
Andreas
Gast #5119
Lesenswert?
• ▲
▼
Hi,

Danke für eure Antworten!!

Wenn ich das richtig versanden habe müßte das aber im prinzip 
funktionieren was ich da gemacht habe?

Wegen dem prellen: wenn ich den Interrupt so initialisiere, dass er auf 
steigende Flanke geagiert ist das doch egal, der Pegel springt ja nur 
einmal von L auf H und dann nur zw. H und X herum, oder?

Wenn nicht, muß ich dann mit einem Flipflop entprellen, oder gibts was 
einfacheres?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.