Array in Eeprom an bestimmte Adresse speichern

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

Array in Eeprom an bestimmte Adresse speichern

 · 
Posted: 30.01.2017 - 16:13  ·  #1
Ich möchte ein Array in das interne eeprom speichern, da es aber in Zukunft erweitert werden soll, möchte ich es irgendwo in die Mitte des Eeproms legen.

{$EEPROM}
var
ee_EILGANG,
ee_RAMPUPTIME,
ee_SpSteigung : float;
ee_Motorsteps,
ee_EncoderSteps,
ee_RETURNDELAY : word;
ee_mode : byte;
ee_mode_steigung : array[0..MAXMODE] of float;

Jetzt könnte es sein, dass ich vor der Array-Deklaration noch andere Variablen einfügen muss, das Array könnte auch erweitert werden. Ich muss also sicher stellen, dass vor dem Array noch Speicher frei bleibt, und dahinter auch. Ich würde das Array daher gerne in die Mitte des EEprom-Bereichs setzen. So könnte ich davor und danach noch Dinge hinzufügen ohne die bereits gespeicherten Daten zu überschreiben.

Wie mache ich das?
Gibt es einen Befehl mit dem man eeprom-Variablen an einer bestimmten Adresse definieren kann?
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: Array in Eeprom an bestimmte Adresse speichern

 · 
Posted: 30.01.2017 - 16:29  ·  #2
If you want to put it at an absolute address, you can, although of course it it up to you to make sure there is enough space.

e.g.

Ee_mode_range[ $150 ]: array [0..MAXMODE] of float;

to put it at address $150.

You used to be able to put

Ee_mode_range[ @ee_mode + 16 ]: array [0..MAXMODE] of float;

for example, but this now produces an error (Not sure if some flag allows error to be overridden) but you can still use the somewhat convoluted form

Ee_mode_range[ @EEPROM[ @ee_mode + 16 ]]: array [0..MAXMODE] of float;

Update
======

RTFM.
{$NOOVRCHECK} allows the form
Ee_mode_range[ @ee_mode + 16 ]: array [0..MAXMODE] of float;
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: 14 · Cache Hits: 14   50   64 · Page-Gen-Time: 0.039491s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI