Forum: Mikrocontroller und Digitale Elektronik Stack - AVRstudio - RAMend


von Burt (Gast)


Lesenswert?

hallo!

Hab versucht ein kleines testprog zu schreiben um die Sache mit dem
Stack richtig zu verstehen!
Aber alleine schon die 16-Bit addresse macht mir zu schaffen....

hab wie im Tutorial die befehle   ldi tempvar, low(ramend).....
benutzt. wenn der simulator die stack-initialisierung durchgelaufen ist
steht im StackPointer 0x10ff = 4351. Im DB steht aber dass der ram bei
4096 endet???

... und außerdem zeigt der Stack Monitor im Simulator während des
gesamten Prog. ablauf    Stack monitor disabled....

es gab schonmal nen thread
(http://www.mikrocontroller.net/forum/read-1-248885.html#new)
aber ohne ergebnis!

Danke, Burt

von Jadeclaw D. (jadeclaw)


Lesenswert?

Welcher Controllertyp?
für den ATMega8 muss das so aussehen:
 RESET: ldi r16,high(RAMEND); Main program start
 out SPH,r16 ; Set Stack Pointer to top of RAM
 ldi r16,low(RAMEND)
 out SPL,r16

Nach der Initialisierung steht der Stack bei 0x045F (ATMega8)
Bei grösseren Controllern entsprechend höher.
Zu bemerken ist, dass das Highbyte zuerst geladen wird.
Ausserdem ist der Simulator im AVRStudio nicht ganz frei von
Einschränkungen. (Controllerabhängig)

Gruss
Jadeclaw.

von Burt (Gast)


Lesenswert?

danke für die schnelle antwort....

Den typ sollte ich natürlich angeben.....
Ich arbeite mit dem ATmega128 und der hat eben ein 4k ram....
woher kommt der wert? ist ja nichtmal auf 8er basis??!!

Danke, Burt

von Jadeclaw D. (jadeclaw)


Lesenswert?

Der Wert ist immer etwas höher als die SRAM-Angabe in den technischen
Daten, da der IO-Bereich noch dazu kommt.
Wenn wir uns mal die MemoryMap auf Seite 18 des Datenblatss ansehen
(Memory Configuration A), dann sehen wir, dass das SRAM praktisch
hintendranhängt.
Und da sehen wir auch, das 0x10FF der korrekte Endwert ist.
Dieses Hintendranhängen des SRAM ist übrigens bei allen AVR mit Ram
so.
Achja, und daran denken, die ATMega103-Fuse auf 1 setzen, sonst fehlt
dem Teil einige Funktionalität.
Da RamEnd im .def-File fix eingetragen ist, gibt es bei gesetzter
103er-Fuse Probleme. (Seite 289/Table 117).

Gruss
Jadeclaw.

von Burt (Gast)


Lesenswert?

.....  :-\   .... da sollte man selber drauf kommen.... hab halt erst
mal auf der ersten seite des DB gelesen 4kByte internen sram und im
AVRstudio wird unter info für das sram ebenfalls 4096 Byte
angegeben..... peinlich

Die Atmega128 "komische sachen" liste hab ich schon kennengelernt
sonnst würde ich hier sitzen und fragen warum meine ISP schaltung nicht
funktioniert (MOSI und MISO ist nicht gleich MOSI und MISO :-))

warum aber mein stack-monitor disabled ist kannste mir nicht zufällig
sagen? im simulator wird das erste call korrekt ausgeführt und es wird
auch an die richtige adresse zurückgesprungen. aber trotzdem ist der
stack monitor disabled!?

Danke für die bemühungen Jadeclaw

Burt

von Hartmut Gröger (Gast)


Lesenswert?

Hi

Soweit ich mich erinnern kann funktioniert der Stackmonitor nur bei
bestimmten Emulatoren (JTEG) und nicht im Simulator.

MfG HG

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.