mega8 codevision ulozenie pola do eeprom

Zdravim, somtu novy a aj v programvani AVR som viac menej novacik. Potrebovl by som v codevision ulozit do internej eeprom mega8 ulozit dvojrozmrne pole aby som si ho mohol po vypnuti a zapnti precitat. Kedze som novacik skusal som vselico alenic mi neslo. Navody co som nasiel aj tu na fore boli zamerane na jednu premennu - nie pole. Da sa to nejako salamunsky? Alebo budem musiet prehadzat to pole usok po kusku a ukladat to, a po restarte kuok po kusku citat. Dakujem za vse namety.
Mario

Pole můžeš naplnit hodnotami hned při deklaraci.
Do globálních deklarací napíšeš

eeprom unsigned char epole[2][3] = { {1,2,3}, {4,5,6} };
Při překladu se vytvoří soubor *.eep s hodnotami pole.
Ten pak při programování zapíšeš do eeprom.

Nebo můžeš deklarovat pole bez inicializace

eeprom unsigned char epole[2][3];

a hodnoty do něho zapisovat v programu.
Soubor *.eep v tomto případě nemusíš zapisovat (obsahuje jenom inicializační nuly).

Dakujem uz to funguje az na to ze:

nevytvori sa eep subor, ale len hex a ked dam chip naprogramovat tak v eepromke tie hodnoty (kt. som nastavil v deklaracii) su zapisane, takze to funguje. Ale teraz pri kazdom preprogramovani chipu sa mi zakazdym prepise aj obsah eeprom. Da sa nejako naprogramovat ten chip tak aby tie data v eeprom nepomenil? Tie su totiz zmenene uz samotnym behom programu v chipe. Ked chip vypnem a zapnem, tak si data pekne potiahne z eeprom a pokracuje tam kde skoncil cize ide to tak ako ma. Len to programovanie to vzdy prepise… Neviem ci som sa vyjadril dost jasne, ale snad ano. Dakujem za odpoved.

Tak si vyhraď jeden byte v eeprom, pro indikaci.

Před prvním zápisem je stav všech bytu EEPROM na hodnotě 0xFF.
Při zápisu do eeprom změníš indikační byte třeba na 0x00.
A pak už jen při každém startu tento byte testuješ.

Takto som to aj spravil, ale toto mi osetri len ten stav ze ked vypnem MCU a potom ho zapnem tak si ocekuje ze si ma nieco v eeprom,ak je ten byte na 0XFF tek eeprom je prazdna a nastavi si defaultne inicializacne hodnoty jednotlivych premennych. Inak ichma ulozene v eeprom. Ale problem nastane vtedy ked zmenim program, naprogramujem MCU, vtedy mi vymaze celu EEPROM a vlastnepri spusteni MCU sa do premennych nacitaju defaultne hodnoty. Asi som to pred tym presne nepopisal, alebo som mozno nepochopil co mi navrhujes. Vedel by som to vyriesit aj tak ze pred samotnym naprogramovanim MCU stiahnem eeprom do suboru, naprogramujem ho, a potom obsah toho suboru nalejem naspat do eeprom. Len islo mi o to ci sa to neda tak, aby pri programovani MCU nechal eeprom napokoji. Diky.

Inak musim povedat ze programovanie MCU ma fakt ocarilo, je to vazna haluz…

Nevím čím to do toho MCU vypaluješ,
ale někde by měla být volba pro ochranu EEPROM
proti vymazání.
U ELNECU je to nazvané “Preserve EEPROM memory through the chip erase”.

No softy ktorymi vypalujem sice tuto moznost maju,ale evidentne to nefunguje. Kazdopadne dakujem, nejak si uz poradim

Zkus ještě pojistku EESAVE. Ta zabrání smazání eeprom při mazání flash.

To je proto, že jak píšeš dříve, zapisuješ jedním příkazem FLASH i EEPROM.
Musíš najít příkaz který zapíše jenom FLASH.

Např. Ponyprog má volby
Write FLASH
Write EEPROM
Write Device (zapíše flash i eeprom)

Uz som to nejak rozchodil,dakujem vsetkym