Variable in Userdevice an bestimmter Adresse legen

Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Variable in Userdevice an bestimmter Adresse legen

 · 
Posted: 19.01.2019 - 18:30  ·  #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
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Posted: 20.01.2019 - 22:37  ·  #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
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Posted: 21.01.2019 - 10:21  ·  #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
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Posted: 21.01.2019 - 13:28  ·  #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
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Posted: 21.01.2019 - 14:05  ·  #5
Aber werte oder konstante ins user Device abzulegen geht halt nur zur Laufzeit !!!!
Rolf
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Posted: 21.01.2019 - 14:26  ·  #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
Gender: n/a
Age: 43
Posts: 308
Registered: 07 / 2013
Subject:

Re: Variable in Userdevice an bestimmter Adresse legen

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

Gruß
Thomas
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Variable in Userdevice an bestimmter Adresse legen

 · 
Posted: 22.01.2019 - 17:04  ·  #8
Ja, das könnte klappen, danke für den Tipp.
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   141   155 · Page-Gen-Time: 0.026407s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI