Setters und Getters auf EEPROM

pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Setters und Getters auf EEPROM

 · 
Posted: 21.06.2019 - 11:21  ·  #1
Hallo Leute,

ich habe meine Config im EEPROM vom XMEGA stehen, aktuell nutze ich zur Übernahme ins laufende Programm:

Code
procedure TuerBitCfg;   // setzte einzelne BIT Werte in CFG um
var
 wBufferCfg : WORD;
begin
//MX30
wBufferCfg:= CFG1.WM001E_Konfig1_MX030;
TuerMCfg.B_Hupe_immer_3min := BIT(  wBufferCfg.0);
TuerMCfg.B_AHM_FTTT := BIT(  wBufferCfg.1);
TuerMCfg.B_AHM_FTSS := BIT(  wBufferCfg.2);
...
end;


Und Arbeite dann nur noch mit dem im RAM stehende "TuerMCfg.", jetzt wollte ich das ganze etwas optimieren, in etwa so:

Code
property
  B_Hupe_immer_3min : boolean
    read GetB_Hupe_immer_3min
    write SetB_Hupe_immer_3min;

//===================================================
{ functions }
function GetB_Hupe_immer_3min : boolean;
var
 wBufferCfg : WORD;
begin
 wBufferCfg:= CFG1.WM001E_Konfig1_MX030;
  return( Bit( wBufferCfg, 0));
end;

procedure SetB_Hupe_immer_3min( NewVal : boolean );
var
 wBufferCfg : WORD;
begin
 wBufferCfg:= CFG1.WM001E_Konfig1_MX030;
   SetBit( wBufferCfg, 0, NewVal );
    CFG1.WM001E_Konfig1_MX030:=wBufferCfg;
end;


Leider lässt der Compiler keinen direkten Zugriff auf das EEPROM-Word zu, deswegen muss ich den Zwischenschritt mit dem umkopieren in dem "wBufferCfg " gehen.

Frage ist natürlich in wie weit das ganze dann überhaupt noch eine Optimierung bringt:

Warum lässt der Compiler diese Getter/Setter nicht im EEPROM zu?
Geschwindigkeit beim Zugriff?

Bringt die Idee überhaupt einen Vorteil (Speicher / Geschwindigkeit) oder gibt es einen besseren Lösungsansatz?

Thorsten
Thomas.AC
Benutzer
Avatar
Gender: n/a
Age: 43
Posts: 308
Registered: 07 / 2013
Subject:

Re: Setters und Getters auf EEPROM

 · 
Posted: 21.06.2019 - 17:09  ·  #2
Meine Meinung:

Dein erstgenannter Code ist schneller und hat weniger EEprom Zugriffe.
Property ist eine schöne Sache, um die Lesbarkeit vom Code zu erhöhen. Ob der Aufwand gerechtfertigt ist, muss du selber entscheiden.

Richtig, der bit-Typ wird im EEPROM nicht unterstützt. Man kann nicht alles haben :-)

Gruß
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   51   65 · Page-Gen-Time: 0.046201s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI