Hallo microcontrollerforum, wegen einer Registerknappheit wollte ich auf das SRAM des mega128 von AVR zurückgreifen. Um STS und LDS komfortabel nutzen zu koennen habe ich auf euere prima Tutorial zurückgegriffen und im Datensegment Variablen deklariert. Leider musste ich feststellen das dies ab einer Adresse von 0x60 bei meinem Programm nicht so richtig funktionierte. Ich hatte dann die vorher angelgeten .db's in Verdacht und erhöhte nach Gutduenken die Startaddresse auf 0x90. Jetzt Funktionierte es. Meine Frage ist jetzt wie wohl der Zusammenhang zwischen Anzahl der .db Bytes und der Verschiebung der org-Addresse ist. Gibt es hier auch so etwas wie Wortgrenzen (Gerade Anzahl von Bytes) wie bei der SPS ? Also am liebsten hätte ich eine Formel wie : nimm die anzahl der Bytes und addiere sie zu dem Hexwert der orgaddresse 0x60 hinzu oder so. hier ein codeausriss: ret Text0: .db " Hallo Bitz " Text1: .db " Hallo Lotti" .DSEG ; das Folgende kommt ins SRAM .org 0x90 ;etwas platz lassen von 0x60 verm wg .db's?? Count: .BYTE 1 TaFlag1_8: .BYTE 1 ; Eingabeflag 1-8 TAFlag9_10: .BYTE 1 ; Eingabeflag 9-10 RELFlag1_8: .BYTE 1 ; Ausgabeflag 1-8 RELFlag9_10:.BYTE 1 TaCount1_8: .BYTE 1 mfG T.Mohrs
Hallo, Du solltest schon im Datenblatt nachgeschauen, wo der SRAM des Mega128 beginnt??? Mit 0x90 wirst Du wohl auch irgendwie auf die Nase fallen. Gruß aus Berlin Michael
SRAM beim ATMEGA128 beginnt bei $0100. $0060-$00FF sind noch I/O-Register! Wenn Du die einfach so veränderst, kann es ein böses Erwachen im Programmverlauf geben.
Übrigens kannst du das .dseg auch weglassen, der Assembler macht das schon "richtig" ...
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.