(Dieser Beitrag wurde geloescht)

Gast #284744
Lesenswert?

wenn man weis was man tut ists sicher kein prob.. das flag bleibt ja
erhalten und wenn du die ints wieder einschaltest wird der int dann
auch abgearbeitet...

sollte zumindest ;)

probs seh ich nur wenn du in der isr auf nen ander int warten
solltest... das gäbe dann einen schönen deadlock ;)

73
Gast #284745
Lesenswert?

Ricolaaaaaa!



Genau zu diesem Zweck wurde es erfunden, um Nestys durch Mehrfach-IRQ
zu unterbinden!
Es ist der ursprüngliche Sinn dieser Einrichtung. Ich gratuliere zur
Entdeckung.

Die ISR sollte selber auch nur ein Flag setzen, welches bei Prüfung
durch das Hauptprogramm in eine entsprechende Sub verzweigt. Diese
sollte nach Abarbeitung des Jobs das Flag zurücksetzen und den IRQ
wiederfreigeben bevor sie zu Main zurückkehrt.
Gast #284747
Lesenswert?

huch es geht also nicht nur mir manchmal so,dass ich nicht immer genau
weis was ich tue ;)

seh ich das richtig was du vor hast...

controller schläft... böser int weckt controller auf und schaltet sich
selbst "ab"... controller murkst herum und bevor er wieder schlafen
geht schaltet er den int wieder ein....

jo das haut schon hin ;)

73
Moderator Persönliche Seite #284750
Lesenswert?

> Die Interrupts in ISRs werden automatisch gesperrt.

Er möchte den Interrupt aber auch nach dem Ende der ISR noch
deaktiviert haben.  Das ist gerade für den (an sich unsinnigen) Fall
eines Tasters, der einen Extern-Interrupt auslöst, praktisch sogar
unabdingbar.  Normalerweise pollt man Taster lieber in der Timer-ISR
(und entprellt sie dort), der Extern-Interrupt hat lediglich für den
hier skizzierten Fall Sinn, dass man mit dem Taster den Prozessor aus
dem Schlaf aufwachen lassen möchte.
#284753
Lesenswert?

@Guido

"Warum pollen wenn ich doch durch den INT definitiv weiß, das der
Taster
gedrückt wurde?"


Weil Du es eben definitiv nicht weißt, ob wirklich das Drücken den
Interrupt ausgelöst hat oder das Reiben mit dem Pullover auf der
Tischplatte oder sonstige elektrostatische Entladungen.


Alle Impulse größer 50ns können einen Interrupt auslösen.


Peter

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