Forum: Mikrocontroller und Digitale Elektronik Interrupts


von Udo Zaydowicz (Gast)


Lesenswert?

Moin,

ich habe da ein Verständnisfrage bezüglich Interrupts bei einem 2313,
die ich (mir) anhand der Dokumentation nicht beantworten kann:

Wird während der Ausführung einer Interrupt-Routine das
Interrupt-System automatisch komplett abgeschaltet, sodass nach
Beendigung der Routine keinerlei Interrupts mehr abzuarbeiten sind?

Falls nein, kann man es während einer Interrupt-Routine entsprechend
ausschalten bzw. wenigstens die Abarbeitung der während der Zeit
aufgelaufenen Interrupts verhindern?

Konkret geht es darum, das die beiden Eingänge INT0 und INT1 genutzt
werden, um bei einer steigenden Flanke am Eingang Relais ein- bzw.
auszuschalten. In der INT0-Routine wird Relais 1 ein und Relais 2
ausgeschaltet, in der INT1-Routine umgekehrt.
Nun kann es beim Ausschalten des Relais zum Prellen kommen, wodurch
natürlich wieder ein Interrupt ausgelöst werden würde.

MfG
Udo

von Frank Linde (Gast)


Lesenswert?

Schau Dir mal die Befehle SEI und CLI an. Damit kannst Du steuern, wann
Interrupts zulässig sind.

Gruß, Frank

von Udo Zaydowicz (Gast)


Lesenswert?

Moin Frank,

ich dachte bislang, dass die beiden sowieso implizit am Anfang und am
Ende einer Interrupt-Routine aufgerufen werden.

Mein Problem ist, dass ich nicht weiß, ob sich der µC trotzdem während
der Interrupt-Routine 'entstandene' Interrupts irgendwo merkt und
diese dann nach dem Ablauf der Interrupt-Routine ausführt.


MfG
Udo

von Jens Renner (Gast)


Lesenswert?

Das Datenblatt sagt dazu:
"If one or more interruppt conditions occur when the Global Interrupt
Enable is cleared (zero), the corresponding interrupt flag(s) will be
set and remembered until the Global Interrupt Enable bit is set (one),
and will be executed by order of priority."

von Udo Zaydowicz (Gast)


Lesenswert?

Moin Jens,

Irgendwie muss ich das überlesen haben :-(
Also muss ich in der Interrupt-Routine dafür sorgen, dass die
entsprechenden Flags gelöscht werden.

Danke!

MfG
Udo

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.