Jump to content
ELFORUM - Forumul Electronistilor
Gilbert Sparios

EEPROM rezista sau nu

Recommended Posts

Vorbind despre un Atmega328 capsulă smd.. as vrea sa fac o aplicație care sa îmi scrie la aproximativ 5 ore o pozitie in EEPROM. Evident, cu verificare in prealabil. 

 

Ma gândesc mai mult din punct de vedere al fiabilității. Cat va rezista..? In DS se vorbește de aproximativ 100.000 cicluri de scriere. la 5 ore.. ar insemna vreo 57 de ani daca am calculat bine. 

 

ceea ce zic ca e suficient. dar as vrea sa stiu daca ati întâmpinat situații in care uC a crăpat mult mai repede, sau dimpotrivă. 

 

oricum, din câte am citit, subiectul este controversat. unii spun ca au depasit 1.500.000. 

 

Practic niciodată nu am indraznit sa scriu des in eeprom, dar aplicația asta.. nu am unde sa scriu ultima poziție si e pentru prevenire cand se ia curentul electric. 

 

era bun un circuit de backup pe baterie, sau o memorie i2c dar sa rămânem la varianta cu eeprom-ul... 

Share this post


Link to post
Share on other sites

m-am gândit si eu sa folosesc o adresa ca sa indic adresa actuala. dar din cate am inteles.. daca folosesc biblioteca ce vine cu arduino, se re-scrie fiecare adresa chiar daca specific o anume adresa. poate am înțeles eu greșit.. 

Share this post


Link to post
Share on other sites

Sugestia mea era o metoda de a verifica cat poti sa rescrii o memorie. Un destroyer. 

 

Dar as lua de buna acea informatie cu 100k rescrieri, desigur e o medie verificata de producator. Daca-ti e suficient la rata ta de scriere, da-i inainte cu proiectul. 

Share this post


Link to post
Share on other sites

Am la lucru aparatura a caror memorii a fost specificata la 100k cicluri de scriere si am depasit milionul pâna la primul defect.  În timp de ca 10 ani. Daca mai am circuitul defect, îi fac o poza.

Share this post


Link to post
Share on other sites

Acum 4 ore, franzm a spus:

Am la lucru aparatura a caror memorii a fost specificata la 100k cicluri de scriere si am depasit milionul pâna la primul defect.  În timp de ca 10 ani. Daca mai am circuitul defect, îi fac o poza.

 

nu vreau poza. m-ar ajuta sa stiu in ce consta defectul. nu mai poti scrie nimic in eeprom sau doat la X locație.

 

daca se poate, bineînțeles. 

Share this post


Link to post
Share on other sites

La EEPROM se duce locatia X din moment ce se sterge si rescrie o singura pozitie, la FLASH unde trebuie sters toata pagina de 256 locatii pentru a rescrie o singura pozitie se duce pagina respectiva. Insa inainte sa ai coruptie totala (sa iti citeasca inapoi ca si gol 0xFF) o sa inceapa intai sa iti dea inapoi valori aiurea, tu scrii in EEPROM 0x10 si te trezesti ca o sa citesti inapoi 0xA0. Daca vrei sa fi sigur va trebuii sa stochezi si un CRC si sa validezi valoarea la citire. Poti pune un EEPROM i2c extern care costa 3lei si iti garanteaza 1.000.000 de scrieri.

Share this post


Link to post
Share on other sites

nu știu dacă ar face vreo diferența cu eeprom.update() cât timp eu citesc tot timpul inainte sa scriu.

 

extern nu mai pot. e terminat deja pcb, iar ideea cu eeprom a aparut de-abia recent, din păcate. 

 

in fine, pentru proiectul in discutie, imi e suficient si 50.000 de cicluri. care ar insemna 28 ani si 6 luni...

 

pentru alte proiecte cu siguranță nu ma voi avanta in eeprom, mult mai bine un i2c eeprom sau poate un sd card. ori vreo soluție de circuit de backup pe baterie/super capacitor, cu intrare uC in sleep pana revine tensiunea..

care totusi, nu ar acoperi un crash-reset din WD.. 

Share this post


Link to post
Share on other sites
Acum 21 ore, Gilbert Sparios a spus:

... m-ar ajuta sa stiu in ce consta defectul. nu mai poti scrie nimic in eeprom sau doat la X locație.

Nu s-a mai putut scrie în locatie. La început sporadic (adica se putea repeta cu succes scrierea) si apoi permanent, când repetarea scrierii nu avea succes.

Share this post


Link to post
Share on other sites

O sugestie, poate nu aplicabilă proiectului actual, dar care pe mine ma ajutat. Pentru că am avut probleme cu eeprom-ul intern din atmega, dar și la pic, ce constau în coruperea foarte rară dar reală a datelor din eeprom, am folosit într-o aplicație ce conținea și un RTC de tip DS1307, cele 56 de byte de tip RAM, 1307 având atașată baterie de backup. După ce am salvat datele în 1307 nu am mai avut probleme câți ani am mai folosit aplicația respectivă.

Poate că coruperea eepromului mi se datora prin erori în program, deși am încercat tot ce am putut ca să evit acest comportament, cert e că cu 1307 am scăpat de ele.

Share this post


Link to post
Share on other sites

@x_dadu, nu vreau sa generalizez insa pot sa-ti spun ca am in functionare multe zeci de device-uri ce stocheaza date in EEPROM, atat ATMega cat si PIC, unele care merg la temperatura d-afara de multa vreme. Daca un singur bit din ce-i stocat acolo ar lua-o razna, scula in cauza foarte probabil n-ar mai merge si as afla... intr-un mod mai placut sau mai putin placut... :) . Totusi in cativa ani buni n-am avut nici macar un singur caz. I-adevara ca n-am facut scrieri pt. testarea andurantei dar, de la caz la caz, am avut zeci spre suta de scrieri pe zi.

Share this post


Link to post
Share on other sites

Poți generaliza nu-i problemă. Eu însă am avut mereu probleme. Inclusiv cu un ceas cu matrici de leduri făcut de un coleg de aici de pe forum, ceas care a ajuns la mine. La un moment dat a trebuit resoftat Atmega-ul pentru că resetul nu mai remedia problema, afișa bălării.

Foarte ciudată era problema care o aveam cu un IR control, attiny2313 alimentat cu transformator-punte-7805, pentru controlul luminii din unele camere din casă, control făcut cu telecomanda televizorului aflat în camera respectivă. După 1-2 luni, uneori mai des alteori mai rar, nu era un tipar, o lua razna în sensul că lumina era comandată chiar dacă erau apăsate alte taste decât cele care trebuiau. De exemplu la cele de volum+/- care sunt și foarte folosite. O resetare ce o făceam oprind pentru scurt timp siguranța de pe lumini din casă, rezolva problema. Aveam implementat și watchdog dar degeaba. Apoi, pentru că butoanele telecomenzii erau stabilite și nu vroiam să le schimb, am programat attiny cu codul tastelor direct în flash, fără a mai folosi eeprom-ul, deci fără a mai avea în soft funcție de împerecheat întrerupătorul de pe perete cu un buton de telecomandă ir. Problemele se manifestau mai rar, dar tot se manifestau.

Cum ziceam ,probabil erori de cod, deși să le ia naiba că nu văd care ar fi fost alea, sau carcalaci pe alimentare. Deci cumva tot la carcalaci ajung, pe creier sau în priză :D

Share this post


Link to post
Share on other sites

Evident, producatorul s-a "spalat pe maini" cu cele 100.000 cicluri, posibil sa mearga mai mult.

Din cate am inteles, mai conteaza si vechimea de functionare a microcontrolerului...in sensul ca se degradeaza fizic materialul ce alcatuie EEPROM-ul.

 

La proiectul curent, am folosit adresa10 pentru a scrie locatia viitoare curenta. Practic citesc locatia, incrementez (11..256) apoi scriu valoarea ca index_eeprom, apoi o folosesc in cod. La fiecare resetare a uC, deci se schimba locatia. Iar eu sper ca se lungeste viata.. Nu i-am mai facut un CRC..

Edited by Gilbert Sparios

Share this post


Link to post
Share on other sites

Imi dau si eu cu parerea cum as face...

La initializare citesc intreaga memorie pana cand gasesc valoare <> 0 si-i memorez adresa.

Cand e nevoie sa scriu, sterg locatia memorata, generez o noua locatie cu functia RANDOM, o memorez, si scriu noua valoare iin locatia memorata.

 

Edited by Kreator

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.