hallo, Controller Mega 16 in asm. Sind Unterprogrammaufrufe in Interrupts erlaubt die mit ret enden oder was sollte man beachten?
Gast
#833987
Aber sicher sind die erlaubt.
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
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
#834045
Und auch ein Auge auf den Stack haben, der wird zusätzlich belastet.
Gast
#834122
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.