Interrupt mit Call und ohne Call aufrufen

Gast #4612557
Am einfachsten du schreibst 2 Funktionen.

Eine ganz normale Funktion macht die ganze Arbeit.

Die Interrupt-Routine hat nur 2 Zeilen. Den Aufruf der normalen Funktion 
und das return-from-interrupt.
#4612562
Und andersherum: sich in einer ISR befinden, ohne dass die anderen 
Interrupts das wissen/gesperrt sind. Beim AVR z.B. läuft im Normalfall 
nur eine einzige ISR, die nicht unterbrochen werden kann (kann 
theoretisch schon, wenn man es will). Gibt ganz schnell ziemliches 
Chaos...
(Firma: Vescomp) #4612568
Paul B. schrieb:
> Vielleicht, um den Inhalt der Interruptroutine ausnahmsweise "außer der
> Reihe" auszuführen, indem man es durch einen eigenen Aufruf "mit Gewalt"
> erzwingt? Das ist eine Sache, die ich mir gut vorstellen kann.

 Und dabei von einem anderen Interrupt ( vielleicht noch von sich
 selbst) unterbrochen wird ?

 EDIT:
 Ansonsten gibt es natürlich noch die Möglichkeit, durch setzen der
 bits im entsprechenden IFR (Interrupt Flag Register) den Interrupt
 manuell zu triggern. Das ware dann wohl der zweite Fall, nämlich
 ohne CALL.
Gast #4612592
Ohne "CALL"? - Da erwartet man ein Ereignis. Zufälligerweise ist
das der eigentliche Sinn von Interrupts.

Mit "CALL"? - Ob das bei allen µCs geht, weiß ich nicht. Aber bei
AVRs sollte ein CALL kein Problem sein. Das RETI am Ende setzt
allerdings das globale Interrupt-Enable-Flag.
Will man das nicht haben, muss dem "CALL" ein DI folgen.
(Warum? Nützt das immer?)

Dritte Möglichkeit: Man PROVOZIERT (wenn möglich) im Programm,
dieses Ereignis.


Allerdings dürfte dies niemandem helfen, der hiermit
trotz Desinteresse Punkte holen möchte...
#4612624
Wobei der GCC entweder haurein() in die ISR inlined und dann 2x hat, 
denn ISR und Funktionsaufruf haben unterschiedliche Regeln für die 
Registersicherung, oder aber in der ISR wegen Funktionsaufruf alle 
Register sichert. Wenn die ISR also schnell sein muß, oder RAM/Stack 
knapp ist, keine gute Idee.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.