Forum: Mikrocontroller und Digitale Elektronik Bei Interrupt wird Umgebung nicht gesichert


von Miller (Gast)


Lesenswert?

Hi
habe das Problem, dass wenn ein IRQ ausgelöst wird, z.B. mein Register
temp (das dort in der Interruptroutine auch benutzt wird) nicht vorher
gesichert wird und dann zurückgewonnen wird. Denn nach dem Interrupt
ist das Register mit anderem Inhalt gefüllt ....

von Frank (Gast)


Lesenswert?

üblicherweise sichert man was man benötigt auf den Stack und holt es
anschliessend wieder da raus (Push und Pop). Da du es ja vorgezogen
hast nix Sachdienliches mit anzugeben, kann man eigentlich keine
näheren Tipps geben.

bye

Frank

von Peter D. (peda)


Lesenswert?

Ja, das ist so üblich.

Interrupts sollen ja schnell sein.

Und da sie nicht wissen können, ob und welche Du Register Du sichern
willst, mußt Du das eben selbst tun.

Da der AVR sehr viel Register hat, ist es effektiver, einfach einige
Register für die Interrupts zu reservieren, statt sie ständig zu pushen
und zu poppen.


Peter

von Winfried (Gast)


Lesenswert?

Und nicht vergessen, das SREG zu sichern und wieder zurückzuschreiben
vor verlassen der ISR.

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.