Forum: Compiler & IDEs Frage zu Signals!


von Stefan Seegel (Gast)


Lesenswert?

Hallo!

Wollt da mal was wissen:

Ich hab zwei SIGNAL Routinen implementiert, eine für Interrutp 0 (der
wird immer bei LOW Level aufgerufen) und eine für UART Data Buffer
Empty. Wenn nun in den jeweiligen Routinen der "Grund" für den
Interrupt nicht abgeschafft wird (also INT0 ist immer low und UDR ist
immer leer), was passiert ? Bleibt das Programm in der Interruptroutine
hängen die zuerst aufgerufen wurde, oder werden die abwechselnd
aufgerufen ? Kommt das Hauptprogramm gar nicht mehr zum Zuge ?

MfG
Stefan

von Jörg Wunsch (Gast)


Lesenswert?

Eine Interruptroutine wird immer wieder aufgerufen, solange ihre
Ursache fortbesteht.  Besonders bei pegelgetriggerten externen
Interrupts muss man diese also ggf. abklemmen, wenn man das nicht will
-- andernfalls kommt das Hauptprogramm wirklich nicht mehr zum Zuge.

Wenn beim Wieder-Einschalten der Interrupts (nach RETI) mehr als eine
Interruptbedingung anhängig ist, wird die mit der höchsten Priorität
zuerst abgearbeitet.  Das Datenblatt beschreibt, welche das ist (in
diesem Falle wahrscheinlich der Externinterrupt).

von Werner B. (Gast)


Lesenswert?

Nach der Rückkehr aus einer ISR (mit reti) wird mindestens ein Befehl
ausgeführt bevor der nächste Interrupt ausgelöst wird (Siehe AVR
Datenblatt). Das Hauptprogramm kommt also zum Zuge, aber extrem
"schaumgebremst". Aus eigener Erfahrung, das ist so! ;)

von Jörg Wunsch (Gast)


Lesenswert?

sehr schaumgebremst. :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.