return in ISR. Was bedeutet das?

Gast
Kann gehen.

Wenn dem Compiler bekannt ist, dass es eine ISR ist, setzt er für das 
Return ein Return-from-Interrupt ein.

Auf manchen µC-Familien löscht Return-from-Interrupt automatisch die 
Interruptbedingung und schaltet die Interrupts wieder ein.

Hängt halt von deinem Target ab und wie der Rest um diese Zeile 
programmiert ist.
Gast
Im AVR-GCC-Tutorial (1) und im Manual (2) steht dazu, dass die 
Interrupts während der ISR gesperrt sind und durch das Return Interrupts 
wieder zugelassen werden.

Der Auslöser des gerade behandelten Interrupts ist schon weg. Ein 
"einfaches" Verlassen ist grundsätzlich in Ordnung.

Aber: In der Laufzeit des ISR aufgelaufende Interruptquellen werden 
gemerkt und entsprechend ihrer Priorität nach dem Return abgearbeitet.

Es kann also sein, dass inzwischen die gleiche Interruptquelle für deine 
ISR wieder aktiv war und während der Interruptsperrung ein 
Folgeinterrupt (pending interrupt) gespeichert wurde, der nach dem 
Return (fast) als nächstes abgearbeitet wird. Wie das Timing hier genau 
ist, steht ausführlich im Manual.

(1) 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Interrupts_mit_dem_AVR_GCC_Compiler_.28WinAVR.29
(2) AT90CAN... Manual Abschnitt 3.8.1 Interrupt behavior
http://www.atmel.com/dyn/resources/prod_documents/doc7679.pdf
Gast
> if ("Bedingung") return;
>
> Was bewirkt diese Zeile?

Die Funktion wird verlassen, wenn die Bedingung wahr ist.

> Kann man so die ISR einfach verlassen, obwohl die Interrupt Bedingung
> noch aktiv ist?

Wie würdest du sonst eine ISR verlassen, außer "einfach so"?

> Ist ein AT90CAN

Das ist aber kein PC.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.