www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik stack


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
kann mir mal einer erklaeren wie ich merke
ob mir mein Stack im SRam ueberlaeuft??
Ich benutze einen 8535 und glaube das ich zu viele Variablen
ins SRam schiebe und bei verschachtelten Unterprogrammaufruf
mir der Stack ueberlaeuft.

Wie kann ich das Problem loesen?


Gruss Michael

Autor: hebel23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

Man kann das zum Beispiel mit dem Simulator vom AVR-Studio überprüfen. 
Du simulierst einfach das Programm und guckst Dir nach einem 
Programmdurchlauf den Speicher (Data Memory) an.
Im Normalfall setzt man den Stackpointer ja an das RAM-Ende und die 
Variablen an den Anfang des RAM.
Wenn Du im Simulatorfenster dazwischen immer noch ein paar 
Speicherzellen mit 00 siehst, ist alles I.O. Wieviel Speicher hast Du 
denn in Benutzung? Der 8535 hat doch gigantische 512 Byte RAM. Nutzt Du 
den denn voll aus?

Gruß Andreas

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Programm wenn möglich mal im Simulator testen oder den SP an 
bestimmten Stellen über die serielle schnittstelle schieben.

Gruß
Markus
http://www.elektronik-projekt.de/

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich programiere in C und da wird die Speicherverwaltung
vom Compiler uebernommen. Ich benutze ziemlich grosse Felder
um Daten zu kopieren. Ich kann diese Felder aber leider nicht als static 
deklarieren da ich sie staendig veraendere.

Wie gebe ich den SP den aus ???

Gruss Michael

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der SP steckt einfach in zwei Registern, normalerweise SPL und SPH. Ob 
das bei Deinem Compiler so heist mußt du mal raussuchen. Ließ einfach 
die beiden Register aus und schick sie über die serielle schnittstelle.

Gruß
Markus

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.