logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega16/32][C] Zabawa z eeprom'em - wydłużenie jego życia

demeus 29 Mar 2009 23:23 2440 5
REKLAMA
  • #1 6351444
    demeus
    Poziom 18  
    Witam

    Na wstępie powiem, iż jestem początkujący w zabawie z prockami.

    Otóż zastanawia mnie taki problem, z tego co podaje producent żywotność pamięci eeprom wynosi 100k operacji. Lecz z tego co wiem w praktyce wychodzi, że żywotność pamięci wynosi ok 30k operacji.

    I teraz szukam sposobów by przedłużyć żywotność pamięci eeprom.

    Przeglądając to i tamto natknąłem się na dwa następujące rozwiązania:

    1) Każdy zapis do eepromu wykonywać do kolejnej komórki, dzięki czemu każda komórka eepromu będzie jednakowo używana.
    2) Dane zapisywać do eepromu tylko w momencie zaniku zasilania procesora, normalnie dane przechowywać w zmiennych a gdy nastąpi zanik zasilania w procku wywołać przerwanie zapisujące dane do eepromu. Oczywiście wymaga to dorobienia układu wykrywającego zanik zasilania i podtrzymującego przez chwilę zasilanie na uC.

    Są to rozwiązania teoretyczne, czy ktoś by mógłby ukazać ich praktyczną realizację? Szczególnie interesuje mnie sposób wykonywania każdorazowego zapisu do kolejnej komórki za pomocą języka C. Ew. z chęcią poznam inne rozwiązania pomagające wydłużyć żywotność pamięci eeprom.

    Z góry dziękuję za wszelkie rady i sugestie.

    --
    pozdrawiam,
    demeus
  • REKLAMA
  • REKLAMA
  • #3 6351778
    demeus
    Poziom 18  
    Witam

    Dziękuję za odpowiedź.
    Owszem jest na stronie atmela o tym...

    Ale z tego co wiem istnieją jeszcze inne rozwiązania i chciałbym je poznać.


    --
    pozdrawiam,
    demeus
  • REKLAMA
  • Pomocny post
    #4 6352026
    kaktus_c++
    Poziom 18  
    przejrzałem ten dokument od atoma , podano tam że oba o-bufory mają być podobnych rozmiarów , to by w takim przypadku zmniejszało pojemność pamięci o połowę ale zużycie komórek było by mniej więcej równomierne.

    Natomiast w przypadku gdyby do zapisywania było nie jedna zmienna tylko powiedzmy n zmiennych (komórek pamięci) to status bufor mógłby być proporcjonalnie mniejszy od parameter buffor. Status wskazywał by tylko w którym przedziale pamięci są zapisane aktualne dane, ale w takim przypadku komórki w status bufor były by częściej używane niż w parameter bufor.

    Można by zrobić to podobnie z użyciem tylko jednego o-bufora w ten sposób: masz do zapisania n komórek, szukasz komórki zawierającej wartość 0xFF, w całej pamięci musi być tylko jedna taka komórka w danej chwili, znajdujesz ją, nadpisujesz ją swoją pierwszą nową wartością i do następnych komórek wpisujesz swoje pozostałe dane, na koniec dopisujesz znowu komórkę z wartością 0xFF.

    Tylko jest mały minus - twoje dane nie mogą zawierać wartości 0xFF (lub jakiejś innej którą sobie obierzesz aby była markerem), można też jako markera użyć np. dwóch komórek 0xFF 0xFF
  • REKLAMA
  • #5 6352624
    kemot55
    Poziom 31  
    Też z tym miałem problem. Nie wiem tylko skąd wzięło się koledze 30k zapisów. Z moich doświadczeń wynika, że będzie to dobrze ponad 100k. Może trafiłeś na jakiś wadliwy egzemplarz. Jak wyglądał test?
    Wracając do tematu. Kombinować nad przedłużeniem życia oczywiście zawsze można ale... myślę, że dobrym rozwiązaniem (dla częstych zapisów) może być pamięć zewnętrzna FRAM (Nonvolatile RAM). Nie stosowałem jej, ale się przymierzam. Jest trochę droga (zastosowanie w dużych seriach). Ciekaw jestem opinii innych kolegów na temat tych pamięci.
  • Pomocny post
    #6 6353360
    Konto nie istnieje
    Poziom 1  
REKLAMA