mikrocontroller.net

Forum: Compiler & IDEs Was passiert bei doppeltem Fkt.-Aufruf durch nen INT?


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Linker legt doch fest, wo im RAM die Variablen einer Funktion
platziert werden (oder?).

Angenommen, ein Interrupt tritt auf, während man in einer Funktion mit
lokalen Variablen ist und dieser Interrupt dann dieselbe Funktion quasi
nochmal aufruft.

Werden die Variablen nun kaputt-überschrieben? Auf den Stack gerettet
und zuletzt wiederhergestellt? Zusätzlicher Satz von Variablen für die
INT-Routine irgendwo angelegt? Oder wie nun wirklich?

..für's Verständnis sowieso und um ggf. entsprechende Maßnahmen
ergreifen zu können interessant.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lokale Variablen sind auf dem Stack.

Nur globale und statische Variablen sind gefährdet.

Funktionen aus ISRs heraus aufzurufen ist aber unklug, da die ISR dann
viel mehr Register retten muß, als wenn Du sie gleich sehr einfach
hälst.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, weiß ich Bescheid, auch den Nachteil mit viel retten. Ist
aber keine Zeitkritische Angelegenheit, (Stack-)Speicher mit ordentlich
Reserve vorhanden.

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.