Rcall im Interrupt erlaubt?

#834000
Lesenswert?

Klar sind die erlaubt.

Ein sehr beliebter Fehler ist es aber, in der gecallten Routine dann 
globale Register zu ändern, die nicht gesichert wurden.
Immer daran denken, dass Du während der Bearbeitung der gecallten 
Routine ja  noch im Interrupt bist!
Sonst gibt es keinerlei Einschränkungen.


Gruss
Jochen Müller
#834019
Lesenswert?

Jochen Müller wrote:
> Ein sehr beliebter Fehler ist es aber, in der gecallten Routine dann
> globale Register zu ändern, die nicht gesichert wurden.

Noch ein beliebter Fehler ist, eine Funktion aufzurufen, die auch das 
Main benutzt.
Diese Funktionen müssen reentrant geschrieben sein.
Einfacher ist es daher oft, diese Funktion zweimal zu schreiben.

Aber Funktionen, die die gleichen Hardwareressourcen benutzen, kann man 
prinzipiell nicht im Interrupt und Main aufrufen, z.B. UART-Ausgabe.
Das gibt dann nen hübschen Byte-Salat.


Peter
Gast #834122
Lesenswert?

Hi,

prinzipiell ist's wohl möglich (haben ja auch die anderen schon 
geschrieben). Allerdings sollte man zusätzlich zu den genannten Punkten 
auch den Zeitaufwand der aufgerufenen routinen bedenken. Generell sollte 
ein Interrupt so kurz wie möglich sein, also vielleicht mal schaun, ob 
man da nicht einfach ein Bit setzt/löscht und die routine dann aus der 
main aufruft.
Gruß

Fred

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren