Forum: Mikrocontroller und Digitale Elektronik Was liegt beim Interrupt auf dem Stack?


von Konrad (Gast)


Lesenswert?

Ich bins nochmal :-)
Momentan versuche ich rauszufinden, was passiert, wenn eine ISR 
aufgerufen wird. Meine Experimente haben ergeben, dass der Stackpointer 
dabei um 4 schrumpft, also beim aufrufen des Interrupts 4 Byte gesichert 
werden.

Kann mir vieleicht jemand sagen, welche das sind? (und in welcher 
Reihenfolge?).
Das einzige was mir spontan einfällt wäre die Rücksprungadresse. Aber 
die braucht ja nun keine 4 Byte....


Danke!

von Andreas K. (a-k)


Lesenswert?

Und den Controller dürfen wir erraten?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Controller?
Compiler?
.... ?

von wuffi, der Dobermann (Gast)


Lesenswert?

mein Frauchen rätselt auch immer, was auf meinem Stack liegt...

...und ihre Glaskugel habe ich verbuddelt....

wuff.

von Karl H. (kbuchegg)


Lesenswert?

Welcher Prozessor?

von Peter D. (peda)


Lesenswert?

Halt mal die Webcam an Deinen Kopf, damit wir hinein sehen können.


Peter

von Klaus F. (kfalser)


Lesenswert?

Hast Du das Datenblatt des Prozessors gelesen?
Steht garantiert drinn!

von Johannes M. (johnny-m)


Lesenswert?

Konrad wrote:
> Ich bins nochmal :-)
> Momentan versuche ich rauszufinden, was passiert, wenn eine ISR
> aufgerufen wird. Meine Experimente haben ergeben, dass der Stackpointer
> dabei um 4 schrumpft, also beim aufrufen des Interrupts 4 Byte gesichert
> werden.
>
> Kann mir vieleicht jemand sagen, welche das sind? (und in welcher
> Reihenfolge?).
Schau Dir einfach das Assembler-Listing an. Da steht, welche Register 
zusätzlich gesichert werden.

> Das einzige was mir spontan einfällt wäre die Rücksprungadresse. Aber
> die braucht ja nun keine 4 Byte....
Die Rücksprungadresse braucht, je nach Controller (ich gehe mal davon 
aus, dass Du AVRs meinst), 2 oder 3 Bytes. Zusätzlich wird i.d.R. das 
SREG (Statusrtegister) gesichert. Und der Compiler muss von Fall zu Fall 
entscheiden, welche von ihm verwendeten Register kritische Werte 
enthalten, die dann zusätzlich gesichert werden müssen. 4 Bytes sind da 
noch wenig.

von Konrad (Gast)


Lesenswert?

Wenn kein Controller genannt ist, geht es doch meistens um einen 
ATMegaXXX ;-)

Sorry, habe ich ganz vergssen, weil ich seid eh und je nur mit ATMega16 
arbeite. Da kann man schonmal vergessen, dasses auch noch andere µCs 
gibt!

von Johannes M. (johnny-m)


Lesenswert?

Konrad wrote:
> Wenn kein Controller genannt ist, geht es doch meistens um einen
> ATMegaXXX ;-)
Da würd ich mal behaupten, dass fast genau so viele Beiträge sich mit 
ATTinyXXX befassen! OK, PICs, 8051er u.ä. sind hier weniger verbreitet, 
ARM mit steigender Tendenz...

> Sorry, habe ich ganz vergssen, weil ich seid eh und je nur mit ATMega16
> arbeite. Da kann man schonmal vergessen, dasses auch noch andere µCs
> gibt!
Ist schon OK, passiert schon mal... Nur in Zukunft dran denken.

von Konrad (Gast)


Lesenswert?

Könnte man nicht direkt beim Anlegen eines neuen Topics darauf bestehen, 
dass der Autor aus einer Dropdownliste den verwendeten µC wählt?
Damit wäre dieses Ärgernis aus der Welt geschafft ;-)
Außerdem könnte man dann direkt in der Themenliste bei der 
Forenübersicht anzeigen, um welchen µC es geht, bzw. danach sortieren 
oder suchen...

(nur mal als Anregung, keine Ahnung ob das Sinn macht...)

von nop(); (Gast)


Lesenswert?

Da gab's doch eine Application note : AVRs und Interrupts oder so.

von Obelix (Gast)


Lesenswert?

> Könnte man nicht direkt beim Anlegen eines neuen Topics darauf bestehen,
> dass der Autor aus einer Dropdownliste den verwendeten µC wählt?

Die Forumstechnik hier stammt eh aus der Internet-Steinzeit.

von Jörn P. (jonnyp)


Lesenswert?

Wenn die ersten 5 Antworten auf ein posting nach dem Prozessortyp fragen 
und der poster das dann immer noch nicht mitkriegt, sehe ich das mehr 
als ein Problem des posters als ein Problem der Forumstechnik.

von Tobi (Gast)


Lesenswert?

offtopic
Nimmt hier im Forum immer mehr zu

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.