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
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.
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
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.
..... :-\ .... 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.