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


von Michael (Gast)


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.

von Jörg Wunsch (Gast)


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.

von Michael (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.