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!
EEPROM adatvesztés, korrupció
Re: EEPROM adatvesztés, korrupció
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.
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.
Re: EEPROM adatvesztés, korrupció
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.
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.
Re: EEPROM adatvesztés, korrupció
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.
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.
Re: EEPROM adatvesztés, korrupció
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!