Setters und Getters auf EEPROM

pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Setters und Getters auf EEPROM

 · 
Gepostet: 21.06.2019 - 11:21 Uhr  ·  #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
Geschlecht: keine Angabe
Alter: 45
Beiträge: 308
Dabei seit: 07 / 2013
Betreff:

Re: Setters und Getters auf EEPROM

 · 
Gepostet: 21.06.2019 - 17:09 Uhr  ·  #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ß
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   51   65 · Page-Gen-Time: 0.022638s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI