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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.