www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Rcall im Interrupt erlaubt?


Autor: R--- S--- (rene66)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

Controller Mega 16 in asm.

Sind Unterprogrammaufrufe in Interrupts erlaubt die mit ret enden oder 
was sollte man beachten?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber sicher sind die erlaubt.

Autor: Jochen Müller (taschenbuch)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Besserwisserle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und auch ein Auge auf den Stack haben, der wird zusätzlich belastet.

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.