mikrocontroller.net

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


Autor: Joseph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Joseph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Autor: Andi K. (Gast)
Datum:

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

MfG
Andi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.