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

Bascom AVR - zapis do EEPROM - czy warto dodawać opóźnienia między zapisami?

Daniel_GSM 04 Paź 2015 11:21 996 3
REKLAMA
  • #1 15041268
    Daniel_GSM
    Poziom 25  
    Witam,

    W urządzeniu kontroluję zanik zasilania głównego (urządzenie jest nadal podtrzymywane zasilaczem buforowym) i w momencie jego zaniku zapisuję kilka zmiennych do wewnętrznego eeproma.

    Zrealizowałem to tak jak poniżej i wszystko funkcjonuje ok.

    PYTANIE: Kod znajduje się w pętli głównej - zastanawiam się czy pomiędzy zapisem kolejnych zmiennych i/lub na końcu sekwencji zapisu wstawić jakieś "wait-y" aby zabezpieczyć się przed jakimiś krzakami.
    Czy warto wstawiać takie "poczekajki"?

    Fragment kodu z pętli głównej (Licznik to Long, godziny to Word, pozostałe to Byte):

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 15042035
    zagwizdow
    Poziom 17  
    Jak chcesz sie zabezpieczyć to częsciowo można poprzez dwa bufory i na końcu zapisuj sume kontrolna w jednym z buforów a w drugim moze nadpisywac sume zerami - gdy zapis przerwie sie w polowie to będą dobre stare dane . Opoznienie tylko wprowadza możliwość błedu gdy dodatkow zasilacz wylaczy sie szybciej.
    Jedyny sens ma opoznienie gdy sterujesz wylaczeniem dodatkowego zasilacza - to po skonczeniu zapisów można dodać opoznienie przed wyłączeniem zasilania żeby zapisać poprawnie.
  • REKLAMA
  • #3 15042217
    Daniel_GSM
    Poziom 25  
    zagwizdow napisał:
    Jak chcesz sie zabezpieczyć to częsciowo można poprzez dwa bufory i na końcu zapisuj sume kontrolna w jednym z buforów a w drugim moze nadpisywac sume zerami - gdy zapis przerwie sie w polowie to będą dobre stare dane .


    Wiele już czytałem o tym na forum, ale jakiegoś sensownego przykładu nie widziałem.
    Czy mógłbyś na podstawie mojego fragmentu kodu napisać lub dopisać sekwencję takiego zapisu?
    Przykładowo np dla jednej zmiennej z sumą kontrolną...

    Z góry dziękuję
  • #4 15045164
    zagwizdow
    Poziom 17  
    Wazniejszy będzie odczyt na początku i stwierdzenie które dane są aktualne

    Robisz sume z bufora 1 i porownujesz z zapisana w buforze 1 , tak samo dla drugim buforze i ten z wadliwa suma odrzucasz , gorzej gdy oba maja poprawna sume to wtedy albo na podstawie analizy danych stwierdzasz które są nowsze albo na podstawie indeksu dodanego do danych tylko trzeba zabezpieczyc sie przed przypadkiem przewiniecia indeksu. Zapamietujesz który bufor jest starszy i mozna w nim zapisywać oraz ostatni indeks w jakichs zmiennych. Podczas zapisu najpierw obliczas sume z danych i zwiekszonego indeksu , potem zapisujesz to wszystko do starszego bufora . Gdy masz pewnosc ze zapis jest poprawny mozna sprobowac nadpisac sume w drugim buforze zeby go unieważnić ale i tak powinien być stwierdzony jako starszy.
REKLAMA