Goto page 1, 2 Next
Robbo
Guest
Thu Jul 12, 2007 12:15 pm
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
pawel
Guest
Thu Jul 12, 2007 12:23 pm
Prawdopodobnie trzeba ustawić fusebity BODLEVEL.
Paweł
MoonWolf
Guest
Thu Jul 12, 2007 12:27 pm
Robbo denied rebel lies:
Quote:
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).
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.
--
MoonWolf
Sygnaturka poszła tędy -->
Piotr Pitucha
Guest
Thu Jul 12, 2007 12:40 pm
Użytkownik "Robbo" <przykre@ale.nie.mam> napisał w wiadomości
news:f752h4$dtp$1@atlantis.news.tpi.pl...
Quote:
W różnych aplikacjach jakie robiłem na AVR (ATmega8, 16 i 32)
zdarzają się problemy z utratą danych zapisanych w EEPROM.
Uwagi jak wyżej i omijać pierwszą komórkę w EEPROM, przynajmniej zalecali
tak przy Atmega8
Piotr
William
Guest
Thu Jul 12, 2007 12:45 pm
Może nie tak jest z twoją procedurą do zapisu EEPROM.... Bo jak
przypuszczam powielasz ją w swoich projektach.
A. Grodecki
Guest
Thu Jul 12, 2007 1:26 pm
Robbo napisał(a):
Quote:
W różnych aplikacjach jakie robiłem na AVR (ATmega8, 16 i 32)
zdarzają się problemy z utratą danych zapisanych w EEPROM.
Sa to dość powszechnie znane problemy w Atmelach, przynajmniej tych
starszych. Daje się je obejść sztuczkami, ale najlepiej używać produktów
lepszych firm.
--
Pozdrawiam,
A. Grodecki
"Wszystkie zwierzęta sa równe.
Ale te, które mają futerko w trzykolorowe pasy, są równiejsze."
Marcin Stanisz
Guest
Thu Jul 12, 2007 1:27 pm
On Thu, 12 Jul 2007 14:26:21 +0200, A. Grodecki wrote:
Quote:
Sa to dość powszechnie znane problemy w Atmelach, przynajmniej tych
starszych. Daje się je obejść sztuczkami, ale najlepiej używać produktów
lepszych firm.
....a każdy pijak to złodziej :)
Pzdr.
Marcin Stanisz
--
"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"
A. Grodecki
Guest
Thu Jul 12, 2007 1:41 pm
Marcin Stanisz napisał(a):
Quote:
On Thu, 12 Jul 2007 14:26:21 +0200, A. Grodecki wrote:
Sa to dość powszechnie znane problemy w Atmelach, przynajmniej tych
starszych. Daje się je obejść sztuczkami, ale najlepiej używać produktów
lepszych firm.
...a każdy pijak to złodziej
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".
--
Pozdrawiam,
A. Grodecki
"Wszystkie zwierzęta sa równe.
Ale te, które mają futerko w trzykolorowe pasy, są równiejsze."
Marcin Stanisz
Guest
Thu Jul 12, 2007 1:47 pm
On Thu, 12 Jul 2007 14:41:16 +0200, A. Grodecki wrote:
Quote:
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".
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
--
"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"
Maciej Wywrocki
Guest
Thu Jul 12, 2007 1:57 pm
Użytkownik "Piotr Pitucha" <piotrpitucha@poczta.onet.pl> napisał w
wiadomości news:f753t4$j42$1@atlantis.news.tpi.pl...
Quote:
Użytkownik "Robbo" <przykre@ale.nie.mam> napisał w wiadomości
news:f752h4$dtp$1@atlantis.news.tpi.pl...
Uwagi jak wyżej i omijać pierwszą komórkę w EEPROM, przynajmniej zalecali
tak przy Atmega8
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
A. Grodecki
Guest
Thu Jul 12, 2007 2:05 pm
Marcin Stanisz napisał(a):
Quote:
Co do strategii producenta się nie wypowiadam, bo nie o tym mówimy w tym
wątku.
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ł?
--
Pozdrawiam,
A. Grodecki
"Wszystkie zwierzęta sa równe.
Ale te, które mają futerko w trzykolorowe pasy, są równiejsze."
Robbo
Guest
Thu Jul 12, 2007 2:23 pm
Quote:
Prawdopodobnie trzeba ustawić fusebity BODLEVEL.
Ustawiam i potem w programie dodatkowo obsługuję
start po wykryciu BOD, że tak się wyrażę :)
Robbo
Robbo
Guest
Thu Jul 12, 2007 2:28 pm
Quote:
Może nie tak jest z twoją procedurą do zapisu EEPROM.... Bo jak
przypuszczam powielasz ją w swoich projektach.
Korzystam ze standardowo dostarczenej z WinAVR biblioteki
i tamtejszych procedur.
Jeszcze mi do głowy przyszły takie rzeczy jak np. to, że na ogół
obsługuję w programach przerwania sprzętowe i czasem zegary.
Może jak podczas zapisu (choć nie powinno mieć to teoretycznie
miejsca, gdyż maszyna nie pracuje podczas odczytu/zapisu do/z EEPROM)
bądź odczytu do/z pamięci program skarcze do obsługi przerwania
i stąd problemy. Ale to by były jakieś rzadkie sytuacje -- np. encoder
da impuls i uruchomi się procedura obsługi licznika drogi... maszyna
niby stoi, ale może np. miało miejsce jakieś drgnięcie mechaniki.
Z drugiej strony, odczytu/zapisu dokonuję na początku programu,
zanim zezwolę na przerwania.
Sam nie wiem.
Robbo
Robbo
Guest
Thu Jul 12, 2007 2:42 pm
Quote:
Uwagi jak wyżej i omijać pierwszą komórkę w EEPROM, przynajmniej zalecali
tak przy Atmega8
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
Heliogabal
Guest
Thu Jul 12, 2007 4:38 pm
Użytkownik "Robbo":
Quote:
W różnych aplikacjach jakie robiłem na AVR (ATmega8, 16 i 32)
zdarzają się problemy z utratą danych zapisanych w EEPROM.
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
Goto page 1, 2 Next