Forum: Mikrocontroller und Digitale Elektronik Kann das stimmen: stack-pointer ?


von Joseph (Gast)


Lesenswert?

ich hab mal in ein mein programm eine routine eingebaut, die den stack
pointer an mein PC schickt. allerdings komm ich auf einen wert von 256.
Das würde ja bedeuten, dass der Stack 3/4 vom RAM meines Mega16s belegt
! Kann das sein ? der wert kommt mir schon zeihmlich hoch vor.

von crazy horse (Gast)


Lesenswert?

erst mal: ja, kann sein. Aber wie das zustande kommt, kann dir sicher
keiner sagen, da ausschliesslich das Programm (was du geschrieben hat)
besimmt, bis wohin der Stack kommt.
Weiterhin wichtig: welche Sprache/Compiler, evtl. eingestelltes
Speichermodell? Prinzipiell gibt es keine Notwendigkeit, den Stack am
Ende des RAMs beginnen zu lassen, auch wenn es meist so gemacht wird.
Der Wert 256 macht mich allerdings etwas stutzig, könnte auch ein
Programmierfehler beim Lesen/übertragen des SP-Wertes sein?
Einfacher geht das mit stack-end-markern, falls möglich, im Simulator
laufen lassen, besser mit Emulator/JTAG.

von Rolf Magnus (Gast)


Lesenswert?

> allerdings komm ich auf einen wert von 256.
> Das würde ja bedeuten, dass der Stack 3/4 vom RAM meines Mega16s
> belegt!

Ich würde sagen, es ist deutlich mehr als 3/4. Der Speicher fängt
schließlich erst ab Adresse 96 an.

> Kann das sein ?

Woher sollen wir denn wissen, wieviel Stack dein Programm braucht?

> der wert kommt mir schon zeihmlich hoch vor.

Du meinst niedrig, oder?

von Joseph (Gast)


Lesenswert?

Naja...ich glaub des war ein programmierfehler....des kann einfach nicht
sein. Ich hab jetzt im Programm noch einen Buffer angelegt, der die
hälfte vom RAM verbraucht. Und es kommt niemals zu einem Stack
Overflow.

Die register les ich doch mit SPL und SPH aus oder ?

Rolf Magnus:
Ich wüsste nicht was meinen stack soooo vollschaufeln sollte.
Nein. Ich meinte hoch....die angabe war in bezug auf 3/4tel gedacht ;)

von Simon K. (simon) Benutzerseite


Lesenswert?

du kannst keine 16bit oder größer Werte in nem 8Bit UART Paket
verschicken

von Andi K. (Gast)


Lesenswert?

Gegenfragen:
1. Welche Programmiersprache?
2. Wo wird der Stack beim Programmstart gesetzt, ganz oben oder unten +
definierte Größe des Stack?

MfG
Andi

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.