EEPROM adatvesztés, korrupció

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Bal
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2013. október 15. kedd, 9:51

EEPROM adatvesztés, korrupció

Hozzászólás Szerző: Bal »

Sziasztok!

Volt egy pár másodperces áramszünet otthon, és a hónapok óta hibátlanul futó projektemben az EEPROM nagy része zagyvasággá változott.

Mi lehet ennek az oka, illetve hogyan tudnám elkerülni?

Írom az EEPROM-ot időszakonként, de nagyon kicsi az esélye, hogy pont írta az áramszünet alatt, mivel csak kb. óránként egyszer íródik ki egy unsigned long a 2-es bytepozíciótól, más semmi.

Ezt találtam a témában:
http://www.atmel.com/webdoc/AVRLibcRefe ... ption.html

Saját lapom van, de UNO-ként programozom, Arduino.mk-val, azaz avrdude-dal. Így elvileg be van kapcsolva a BOD, ha jól sejtem. Át kéne állítanom más feszültségre?

Vagy mit lehetne tenni? Nézek ellenőrző bájtokat, de ez nem checksum a teljesen EEPROM-ban tárolt adatra, csak fix bájtok. Ezek persze nem sérültek meg, de úgy 100 másik byte igen.

Köszönöm a segítséget előre is!
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: EEPROM adatvesztés, korrupció

Hozzászólás Szerző: csegebiga »

az ilyen elmegy-visszajön tipusú áramszüntek a legveszélyesebbek, mivel a hálózat induktivitásként működik ilyenkor, és elég erős feszültségtüskék keletkezhetnek.
ezek a fesz tüskék a tápegység transzformátoron is átjut, és a belső tápellátásban is megjelenhet.
mivel az eepromok írása nem követel olyan magas(abb) írási feszültséget, mint pl az epromok, ezért az eeprom celláit durván átrendezheti egy ilyen táp felől jövő impulzus.

ez ellen kétféleképpen védekezhetsz:
1. túleszvédelemmel ellátott elosztót, konnektort, UPS-t alkalmazol a 230VAC oldalon. megveszed, bedugod, kész.
2. a tápegyéged okosítod fel, hogy az impulzust lenyelje, ne engedje a stabilizált oldalra.
ez utóbbit pl a trafó szekunder csúcsfeszültségénél kb 1.5x nagyobb zener dióda beillesztése az egyenirányított stabilizálatlan oldalra a + és - közé.
ha nem akarod sűrűn cserélgetni, akkor egy nagyobb áramot elviselő tipust választasz.
normál üzemben nem sok vizet zavar, a névértékénél nagyobb tüskéket viszont lesöntöli
régebben divat volt, manapság úgy láttam, lassan kikopik az a szokás, hogy az ic-k táplábai közé beraknak egy 10-100nF-os kondenzátort zavarszűrési célból.
lehet, hogy ez a kondi is megvédte volna az eeprom tartalmát.
látatlanban ennyit a táp zavarszűrésről. aztán ezt lehet bonyolítani a végtelenségig.
Bal
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2013. október 15. kedd, 9:51

Re: EEPROM adatvesztés, korrupció

Hozzászólás Szerző: Bal »

Köszönöm a választ!
Egy régi Nokia mobiltelefon töltője a tápegységem, utána jön a saját lapon a feszstabilizáló rész.

Én egyre inkább gyanakszom a 2.7 voltos BOD beállításra, amit az Arduino környezet beállít UNO esetére. Valahol olvastam, hogy ez kevés az Atmega328p-nek 16 Mhz-en. Átállítom majd 4.3 voltra, aztán meglátjuk, előjön-e még ez valaha. Egyébként gyanús nekem, hogy a flash tartalma is sérült, mert az EEPROM helyreállítása után egy fura programhiba is volt, ami 99%, hogy nem az én programozási hibámból jön.
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: EEPROM adatvesztés, korrupció

Hozzászólás Szerző: csegebiga »

itt a tápfesz-órajel összefüggésről értekeznek, mondván, ha elemről járatják, és csökken az elem kapocsfeszültsége, akkor a 2.7Vos tápfesz esetén (és az erre beállított BOD resetnél) max 10MHz a maximális biztonságos órajel.
de itt nem a BOD a lényeg, hanem az órajelhez képest túl alacsony tápfesz.

most néztem meg a ATmega328P fullos datasheetben, a karakterisztika ott is ugyanez (p316)
(BOD:p48)

szerintem ez az elkeveredés oka mégis inkább táp-zavar(tüske) volt, (beleértve a flash összekuszálódását is.)
égesd újra a programot a chipbe, teszteld alaposan, hogy kiderüljön, nem halt-e meg a chip valamelyik belső áramköre? (kiakadt regiszter bit cella, kiakadt flash cella, satöbbi)
((de ha a befektetett munka/ráfordítás mutatót nézzük, a leggazdaságosabb, biztonságosabb, ha egy szűz chipet programozol fel, és azt teszed be a rendszerbe, ezzel meg később játszol, már hobbiból))
kibicként, nem ismerve a rendszeredet, kívülről belevauvau kb ennyi.
Bal
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2013. október 15. kedd, 9:51

Re: EEPROM adatvesztés, korrupció

Hozzászólás Szerző: Bal »

Igen, igazad lesz. Minden újraégettem, bootloadert, fuse biteket, programot, eepromot, de egy olyan futási hiba jön elő néha, ami egy képtelenség. Valszeg megsérült a chip, kicserélem, és kitalálok valami védelmet. Köszi a segítséget!
Válasz küldése