Kod: Markera allt
struct settings { ... bla bla.. };
struct klocka { ... bla bla.. };
struct hw_setup { ... bla bla.. };
// SRAM data - globala variabler
struct settings set = { 0 };
struct klocka clock = { 0 };
struct hw_setup hardware = { 0 }
// EEPROM data
struct settings EEMEM ee_set = { 0 };
struct klocka EEMEM ee_clock = { 0 };
struct EEMEM hw_setup ee_hardware = { 0 };
eeprom_write_word(&ee_hardware.modules, hardware.modules);
Jag kollar i filen projekt.map:
Kod: Markera allt
.eeprom 0x00810000 0x2b8 main.o
0x00810000 ee_reset_count
0x00810002 ee_set
0x00810030 ee_clock
0x0081003d ee_vald_profil
0x0081003e ee_profilnamn
0x008100b6 ee_profiler
... etc.

och jag hittar den inte alls i map-filen....

Det visar sig att jag råkat skriva i fel ordning:
Kod: Markera allt
struct EEMEM hw_setup ee_hardware = { 0 };
Kod: Markera allt
struct hw_setup EEMEM ee_hardware = { 0 };
När jag kör simulatorn hittar jag den i SRAM på adress 0x0136.
I verkligheten (processorn) hade den hamnat i eeprom på adress 0x136.
Det fungerar alltså som tänkt - data lagras i eeprom och jag kan återkalla det när jag startar om på nytt.
Men detta är mycket förrädiskt! Tänk om något annat hade legat på just den adressen i eeprom?
Då hade de skrivit över varandra och mycket märkliga fel hade kunnat uppstå!