Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage - MSP430F Datenbereich anlegen


von Anfänger (Gast)


Lesenswert?

Guten Tag liebe Forumsmitglieder,

ich möchte gerne bei meinem MSP430F2013 eine Datenbereich unter einer 
bestimmten Adresse anlegen und dort verschiedene Werte abspeichern 
(Flash oder ROM ist vorerst egal es geht mir nur ums Prinzip). Als 
Programmierumgebung verwende ich IAR und als Programmiersprache 
Assembler.

Bisher verwende ich den DB Befehl der mir die Daten anlegt:

z.B DB 0x12, 0x13, 0x14 usw.

Allerdings weiß ich nicht welchen Befehl ich noch schreiben muss, dass 
mir die Daten unter z.B der Adresse 0400 angelgt werden. (Habe gedacht, 
dass es der Befehl #pragma ist, hat allerdings nicht funktioniert)

Die Frage ist leider echt sehr trivial, aber ich habe leider dazu noch 
nichts im Forum oder sonst wo gefunden...
Wäre für eine Antwort sehr dankbar!

Mfg

von Jörg S. (joerg-s)


Lesenswert?

Steht in der Compiler Anleitung.
In C ist es bei IAR das '@' Zeichen mit Adresse hinten dran.

von Anfänger (Gast)


Lesenswert?

Vielen Dank für die schnelle Antwort. Allerdings hab ich in der Compiler 
Anleitung irgendwie nichts dazu gefunden (vll. verwende ich aber auch 
das falsche...)
Jedoch möchte ich das ganze in Assembler schreiben und ich habe gedacht, 
dass es bei den MSP sowas ähnliches gibt wie bei den XC`s. Ungefähr 
sowas:

data_s1 SECTION DATA at 0x00C10000
table1 DB "Text der frei festgelegt werden kann",0x00
data_s1 ENDS

Und des für den MSP. Vielleicht bin ich aber auch damit komplett auf den 
Holzweg.

von Stefan (Gast)


Lesenswert?

Wenn Du in Assembler programmierst, wär's vielleicht auch sinnvoll, im 
Assembler Reference Guide nachzuschauen.
Unter "Segment control directives" wirst Du vielleicht fündig...

von Johnny B. (johnnyb)


Lesenswert?

Also ich habe die Syntax gerade nicht zur Hand, aber prinzipiell kenne 
ich zwei Möglichkeiten:

1. Du definierst den gewünschten Bereich im Linkerscript und kannst dann 
im Code bequem mit dem Namen der kreierten Section arbeiten

2. Du definierst einfach einen stinknormalen Pointer und lässt ihn auf 
die gewünschte Adresse zeigen

Ich würde mal die Codebeispiele von TI zum Umgang mit dem Flashspeicher 
angucken (findest Du auf der Homepage), da hats viel brauchbares 
darunter, was Du als Grundlage heranziehen kannst.

von Martin S. (sirnails)


Lesenswert?

Also wenn ich Dich richtig verstanden habe: Beim M68xxx heißt der Befehl 
"origin". Dort läuft das in etwa so ab (aus dem FF, sich nicht ganz 
richtig):
1
    .org    $xxxx
2
    .dc.b   $AF
3
    .dc.b   $FE
4
    .dc.b   "Hilfe, ich stecke im Speicher!"
5
    //...

von Erik (Gast)


Lesenswert?

fürs Ram bescheiben ,

mov.w R4,&0200h   register ins Ram (je nach Modell!)
mov.w &0F000h,R4   Memory  ins Register
mov.w &0F000h,&0200h    Memory to Memory

wenn du über einen Pointer arbeitest mus ich noch mal nachgucken .
da geht nicht alles was mann so denkt


mfg Erik

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.