Atmel AVR, problem z utratą danych z EEPROM

Witam,

W różnych aplikacjach jakie robiłem na AVR (ATmega8, 16 i 32) zdarzają się problemy z utratą danych zapisanych w EEPROM. Jedno z urządzeń pracuje blisko transformatorów zgrzewalniczych i w praktyce nie ma problemów... może ze 2 razy w ciągu kilku lat zdarzyło się, że po wyłączeniu i włączeniu zasilania dane z EEPROM zniknęły (ATmega32). Inne urządzenie, nienarażone na zakłócenia miało cyklicznie problemy z utratą danych -- średnio na 3 wyłączenia i włączenia, jedno przynosiło utratę danych z EEPROM (ATmega8). Robiłem też inny układ na ATmega32, w którym raz na jakieś 20 wyłączeń i włączeń, dane w EEPROM potrafiły się zmienić. W jednym z układów (ATmega16) był podobny problem -- wtedy pomiędzy (piszę w C, WinAVR, standardowe funkcje odczytu i zapisu do EEPROM) funkcjami zapisu i odczytu wstawiałem pętle z oczekiwaniem na gotowość pamięci -- to pomogło, pomimo, że nie powinno, gdyż funkcje odczytu i zapisu robią wewnętrznie to samo. Byłbym wdzięczny za podpowiedzi, jakie mogą być przyczyny takiego zachowania? Może jakieś spadki napięcia... Czy jeżeli takie problemy są powszechne, to dotyczą one całej pamięci, czy tylko niektórych komórek -- bo może wtedy można zapisywać te same dane w np. 5 różnych miejscach, a podczas wczytywania przyjmować za prawidłową tę wartość, która występuje więcej razy w tych różnych miejsach.

Robbo

Reply to
Robbo
Loading thread data ...

Prawdopodobnie trzeba ustawić fusebity BODLEVEL.

Paweł

Reply to
pawel

Robbo denied rebel lies:

Masz włączone Brown-out detection? Jeszcze nie słyszałem żeby u nas były problemy z danymi w eepromie - a trochę tego jest.

Reply to
MoonWolf

Użytkownik "Robbo" snipped-for-privacy@ale.nie.mam> napisał w wiadomości news:f752h4$dtp$ snipped-for-privacy@atlantis.news.tpi.pl...

Uwagi jak wyżej i omijać pierwszą komórkę w EEPROM, przynajmniej zalecali tak przy Atmega8 Piotr

Reply to
Piotr Pitucha

Robbo napisał(a):

Sa to dość powszechnie znane problemy w Atmelach, przynajmniej tych starszych. Daje się je obejść sztuczkami, ale najlepiej używać produktów lepszych firm.

Reply to
A. Grodecki

...a każdy pijak to złodziej :)

Pzdr. Marcin Stanisz

Reply to
Marcin Stanisz

Pijaków bym w to nie mieszał :) A od niepoważnych (w sensie strategii) producentów lepiej trzymać się z daleka. Nigdy nie wiadomo z czym nowym wyskoczą, co okaże się "po fakcie".

Reply to
A. Grodecki

Ależ. Nie powtarzaj "legend urbana" ;)

Sam jestem autorem kilku przemysłowych sterowników na AVR-kach. W żadnym nie miałem problemów z pamięcią EEPROM (z której notabene korzystałem).

Co do strategii producenta się nie wypowiadam, bo nie o tym mówimy w tym wątku.

Pozdrawiam Marcin Stanisz

Reply to
Marcin Stanisz

Użytkownik "Piotr Pitucha" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:f753t4$j42$ snipped-for-privacy@atlantis.news.tpi.pl...

Swego czasu zauważyłem, że dobrze jest "wycelować" rejstrem EEAR po każdej procedurze zapisu / odczytu eeproma w nieużywany fragment tejże pamięci. Eeprom potrafił zmienić zawartość, gdy w pobliżu procka następowało wyładowanie o napięciu ~80 kV. I jak dotąd problem ten się nie powtórzył.

Pzdr, Maciek Wywrocki

Reply to
Maciej Wywrocki

Marcin Stanisz napisał(a):

I tak, i nie. Wprowadzenie do sprzedaży produktu(-ów) ze zidentyfikowaną wadą (niech będzie - niedopracowaniem) do czego miałbym zaliczyć? Albo wstrzymanie produkcji popularnego elementu na bliżej nieokreślony czas, bo duży klient się trafił?

Reply to
A. Grodecki

Ustawiam i potem w programie dodatkowo obsługuję start po wykryciu BOD, że tak się wyrażę :)

Robbo

Reply to
Robbo

Też słyszałem o problemie z adresem 0. I uważam, że to szczera prawda. W moim urządzeniu zrobionym na ATmega8 w pamięci trzymałem jeden jedyny bajt, właśnie pod adresem 0 i właśnie z tym urządzeniem było najwięcej problemów -- niezmiernie często ten bajt był tracony po wyłączeniu i włączeniu zasilania. Na innych wersjach ATmega miałem więcej danych, ale także pod adresem 0 coś trzymałem i choć problemy były, to nie tak częste, jak na ATmega8.

Robbo

Reply to
Robbo

Użytkownik "Robbo":

A masz projekty, w ktorych nie korzystasz z tej pamieci ? Jesli tak to zapisz eeprom roznymi wartosciami i po dluzszym czasie sprawdz czy zawartosc pamieci sie zmienila. Jesli nie to wniosek prosty - Atmel ok, a ty zle zapisujesz.

Heliogabal

Reply to
Heliogabal

Dodam jeszcze, że procki taktuję kwarcem 18432000 Hz. Niemniej, takie same problemy miałem na układzie bez kwarcu.

Robbo

Reply to
Robbo

I co - przetaktowane procki wstawiasz do końcowego produktu??

Pozdrawiam Marcin Stanisz

Reply to
Marcin Stanisz

Tak, od wielu wielu lat.

Robbo

Reply to
Robbo

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.