Forum: Mikrocontroller und Digitale Elektronik sram und assembler auf atmega128


von Thomas Mohrs (Gast)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ü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
Noch kein Account? Hier anmelden.