Forum: Mikrocontroller und Digitale Elektronik Probleme mit dem Stack


von Marillion (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich arbeite mit CodeVision, AVRStudio und dem mega64L.

Nach Start und Initialisierung meines Programmes steht der Stackpointer
auf 0x10FF. Sobald die erste ‚Call-Routine’ aufgerufen wird,
dekrementiert der Stackpointer  auf 0x10FD. Schaue ich nun im
(Data)Memoryfenster, unter der Adresse von 0x10FE und 0x10FF vom Studio
nach, so findet sich da aber nicht die Rücksprungadresse, sondern der
Wert 20h 20h.
Somit ist klar, dass das Programm nach dem inkrementiern des
Stackpointers abstürzt.

Stelle ich in den Projektsettings von CodeVision(siehe Anhang) die Heap
size von 0 auf 1024 ein, so funktioniert alles Bestens.

Bei anderen Projekten, mit mega16 und mega128, habe ich nie den Heap
size benötigt.


Kann jemand dieses Phänomen erklären?  Vielen Dank!

Die Projektsettings stehen im Anhang.

von Florian Pfanner (Gast)


Lesenswert?

Hallo,

ich hatte so ein ähnliches Problem mit meinem Mega128: Etwa die letzten
100 Bytes vom RAM konnte ich nicht beschreiben bzw. lesen. Also ging
auch kein Rücksprung von Sub-Routienen weil der Stack ja auf die letzte
Speicheradresse zeigt. Wenn ich den Stack-Pointer unter diesen Bereich
legte, dann funktionierte alles prima. Nach etwa einem Tag suchen bin
ich drauf gekommen, dass die Mega103 Fuse gesetzt war. Als ich diese
löschte war alles wunderbar.

Gruß, Florian

von Marillion (Gast)


Lesenswert?

Hallo Florian,

vielen, vielen Dank, für Deinen Tip. Genau das war's.
Ich Blödi, hab' mir doch genau die Fuse angesehen.


Ich überreiche Dir hiermit den Mikrokontroller.net-Award 2005

                                  \/
                                 -00-
                                  /\
                                  ||
                                  ||
                                  ||
                               ========



Sckönen Gruß   Marillion

von Chris (Gast)


Lesenswert?

@Marillion:
btw, jpeg ist für Fotos geeignet, nicht für Screenshots. Dafür nimmt
man png oder wenn es nicht anders geht gif. Aber niemals jpeg (Hinweis
fürs nächste Mal).

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.