Forum: Mikrocontroller und Digitale Elektronik stack


von Michael (Gast)


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

von hebel23 (Gast)


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

von Markus (Gast)


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/

von Michael (Gast)


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

von Markus (Gast)


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

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.