Hallo Leute,
ich habe meine Config im EEPROM vom XMEGA stehen, aktuell nutze ich zur Übernahme ins laufende Programm:
Und Arbeite dann nur noch mit dem im RAM stehende "TuerMCfg.", jetzt wollte ich das ganze etwas optimieren, in etwa so:
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
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;
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;
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