(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

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.