Forum: Compiler & IDEs (Dieser Beitrag wurde geloescht)


von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Hans (Gast)


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

von Winfried Jaeckel (Gast)


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.

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Hans (Gast)


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

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Werner Hoch (Gast)


Lesenswert?

Die Interrupts in ISRs werden automatisch gesperrt.
Will man verschachtelte Interrupts benutzen, so muß man das Interrupt
Flag in der ISR aktiv einschalten.

Quelle: Atmega16, S. 11 ff

http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Werner Hoch (Gast)


Lesenswert?

Achso, jetzt hab ichs verstanden.
Dann würd ich aber auch das Aufwecken und die Entprellung trennen.
Aufwecken über Interrupt und anschließen pollen.

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Peter D. (peda)


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

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

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.