Forum
Interrupt-Handler - Keine Parameter angeben? (Computertechnik)
» Warum können einem Interrupt grundsätzlich keine Parameter übergeben
» werden, bzw. warum hat er keine Rückgabewerte?
Das kann man nicht allgemein beantworten. Darum gehe Ich mal davon aus, dass sich deine Frage auf µC-Programmierung mit C/C++ bezieht .
» Also es handelt sich hierbei um eine Frage aus einer Klausur.
Für welches Fach? (aus reiner Neugier )
» Ich hätte jetzt einfach gedacht, dass das Problem ist, dass der
» Interrupt irgendwann auslöst und mein main-Programm dadurch unterbrochen
» wird.
Ja; dein Programm wird unterbrochen, der Interrupt-Handler wird ausgeführt, dann wird an die unterbrochene Stelle in deinem Programm zurückgesprungen und der normale Programmflow geht weiter. Wenn der Interrupt-Handler verlassen wird ist da kein Code der den Rückgabewert des Interrupt-Handlers abfragen und weiter verarbeiten könnte, der Interrupt kann ja jederzeit auftreten.
Bezüglich der Parameter ist deine Frage, selbst mit meinen Annahmen, zu ungenau. Darum sage ich dazu im Moment lieber nichts als was falsches.
» Außerdem habe ich oft etwas von einem Stack und Variablen sollten
» volatile sein gelesen und deshalb kann man keine Parameter angeben.
Volatile sagt dem Compiler nur, dass er für diese Variable beim Optimieren aufpassen muss. Variablen die nicht als volatile deklariert sind, werden nicht für jede Operation erneut aus dem RAM geladen. Leseoperationen aus dem RAM sind teuer (= zeitaufwändig), daher wird der Wert einer Variable einmal aus dem RAM geladen und dann so lange in einem CPU-Register/Cache gehalten wie es der Compiler für sinnvoll hält und der Wert der Variablen wir erst dann in den RAM zurückgeschrieben wenn die Variable aus dem Register entfernt wird. Mit volatile sagst du dem Compiler, dass er die Variable jedes mal aus dem RAM holen soll.
Wenn ein Interrupt-Handler den Wert der Variable verändert, dann ist volatile wichtig, da die CPU ansonsten die Variable gerade im Cache halten könnte während der Interrupt-Handler auf die Variable zugreift.
Gesamter Thread:

