Variable in Userdevice an bestimmter Adresse legen

Lschreyer
Schreiberling
Avatar
Geschlecht: keine Angabe
Beiträge: 527
Dabei seit: 02 / 2007
Betreff:

Variable in Userdevice an bestimmter Adresse legen

 · 
Gepostet: 19.01.2019 - 18:30 Uhr  ·  #1
Im eeprom kann man mit

var
testarray[$05DC]: array[0..20] of word;

eine var an eine bestimmte Adresse legen.

Im Userdevice geht das scheinbar nicht, gibt es einen Weg das zu machen?
Hintergrund ist, dass ich am Anfang des Frams Einstellungen speichere, die nach und nach erweitert werden können. Das TestArray kann später evtl. auch größer werden.

Das obige TestArray soll bei einer Erweiterung der Einstellungen nicht überschrieben werden, also möchte ich das gerne in einen Bereich legen den ich sonst nicht nutze. Ich wollte dazu das Fram in 4 Blöcke teilen, und das TestArray in den letzten Block legen.

Ich erhalte jetzt eine Fehlermeldung, Error: Adress $05DC is below idatastart $2000
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Gepostet: 20.01.2019 - 22:37 Uhr  ·  #2
Hallo Louis,
wie soll das gehen?
Der Compiler macht dem Programmer Vorgaben, Fuses, Flash, EEprom.
Er kann aber dem Programmer nicht beibringen dass da ein externes
FRAM programmiert werden soll. Wie denn auch ???
rolf
Lschreyer
Schreiberling
Avatar
Geschlecht: keine Angabe
Beiträge: 527
Dabei seit: 02 / 2007
Betreff:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Gepostet: 21.01.2019 - 10:21 Uhr  ·  #3
Vielleicht habe ich das falsch beschrieben.

Ich kann eine Variable ins EEprom legen mit
{$EEPROM}
Var testarray: array[0..20] of word;

Wenn ich nun möchte dass die Testvar an einer bestimmten Adresse im EEprom liegt definiere ich sie mit
{$EEPROM}
var testarray[$05DC]: array[0..20] of word;

Mit dem Devicetreiber kann ich Variablen auf ein externes Device legen, in meiem Fall in ein Fram.
Das klappt prima und sehr, vielen Dank dafür.

Ich mache es dann analog mit

{$UDATA}
Var testarray: array[0..20] of word;

Die Frage ist jetzt: Kann ich diese Variablen auch an eine bestimmte Adresse in UDATA legen?
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1343
Dabei seit: 02 / 2009
Betreff:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Gepostet: 21.01.2019 - 13:28 Uhr  ·  #4
Hallo Lschreyer,

lege doch einfach ein komplettes Array of Byte oder Word über den ganzen bereich. Dann kannst es mit dem Array adressieren.

Beispiel Array [0.254} of Word;

Und dein Testarray legst Du fix ab Array adresse 200 ab. Wenn Du hier mit Pointern arbeitest kannst Du alle möglichen Strukturen so ablegen zu zugreifen.

Oder habe ich das falsch verstanden?

Thorsten
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Gepostet: 21.01.2019 - 14:05 Uhr  ·  #5
Aber werte oder konstante ins user Device abzulegen geht halt nur zur Laufzeit !!!!
Rolf
Lschreyer
Schreiberling
Avatar
Geschlecht: keine Angabe
Beiträge: 527
Dabei seit: 02 / 2007
Betreff:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Gepostet: 21.01.2019 - 14:26 Uhr  ·  #6
Thorsten, das ginge, aber dann brauche ich kein Userdevice.
Ich wollte halt gern wissen ob das mit dem Userdevice geht, anscheinend nicht.
Dann werde ich mir etwas anderes überlegen, wäre halt elegant gewesen.
Thomas.AC
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 44
Beiträge: 308
Dabei seit: 07 / 2013
Betreff:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Gepostet: 21.01.2019 - 19:38 Uhr  ·  #7
Hallo,
theoretisch sollte das mit banked device gehen.
Demo unter AVRcoAVRcoDemosBanking

Gruß
Thomas
Lschreyer
Schreiberling
Avatar
Geschlecht: keine Angabe
Beiträge: 527
Dabei seit: 02 / 2007
Betreff:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Gepostet: 22.01.2019 - 17:04 Uhr  ·  #8
Ja, das könnte klappen, danke für den Tipp.
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   141   155 · Page-Gen-Time: 0.04971s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI