ATmega8 - občas je z EEPROM načten nesmysl

V několika svých aplikacích používám vnitřní EEPROM pro zápis a čtení hodnot který občas za provozu změním a pří dalším zapnutí samozřejmě chci abych načetl tu poslední změněnou hodnotu, z cca 95% to tak je, ale někdy se stane, že se z EEPROM načte nesmysl. Program píšu v CodeVisionAVR v.2.03.4 a zápis i čtení dělám podle nápovědy.
Př.:
eeprom unsigned int promenna;
bit znema;
.
.
.
.
void ZapisEEPROM(void)
{
promenna=x;
}

void CteniEEPROM(void)
{
x=promenna;
)

void main(void)
{
.
.
.
while (1)
{
//nekde
CteniEEPROM();

if (zmena==1) //zapis se provadi jen nekdy
ZapisEEPROM();
.
.
.
.
}
}

Podle mě dochází k přepsání EEPROM při zapnutí nebo vypnutí.
Jestli někdo používá EEPROM k podobným účelům a funguje to spolehlivě,uvítal bych radu nebo kousek zdrojáku.
P.S.: Stává se mi to i u jedný aplikace na ATtiny2313.

:arrow_right: administrator: přejmenováno z "ATmega8-zápis a čtení interní EEPROM"

Tu poznamku v dadtasite ohladom nizkeho napatia mas precitanu a osetrenu… ako mas osetrene vypnutie ? je zaisteen ze sa dokonci zapis pred vypnutim zariadenia ?

Poznamku ohledne nizkeho napajeni prectenou nemam(podivam se),ale v mem pripade to asi neni problem,protoze napajeni mam vzdy 5V
(stabilizator 7805).Vypnuti osetreny nemam.Zapis je provaden tlacitkem po zmene promenne a to ne pri kazdem zapnuti(provoze),da se rict jen vyjimecne.Ale nacteni nesmyslu se vyskytuje nahodne,ikdyz zapis nebyl proveden.

pri simulacii to chodi dobre ?

Simulaci jsem zatim nezkousel,dobrej napad zkusim.

Atmel doporučuje nepoužívat v Eeprom adresu 0, která je nejvíc ohrožená přepsáním.

Také se doporučuje mít ve fuses zapnutý BOD, který při klesání napětí např po vypnutí, zablokuje procesor dřív než napětí klesne na hodnotu při které by se mohl chovat divně.

Narazil jsem nyní na podobný problém s přepisem EEPROM. Moje aplikace je s ATMEGOU 16.
Občas se mi také přepíše EEPROM a nevím co s tím. Určitě to ale není při zapnutí nebo vypnutí napájení, a poklesem nebo špatnou filtrací napájení to taky nebude (7805, elektrolyt a 100n-několik, 10n a 1n na napájení). Netušíte v čem je problém ?

Ahoj, měl jsme zřejmě ten samej problém s ATmega88. Vyřešil jsem to zapnutím pojistky BODLEVEL. Od té doby s tím nebyl nikdy problém.