• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zapis czasu pracy do EEPROM
#1
Dzień dobry wszystkim,
pracuje ostatnio nad prostym urządzeniem, w którym musze zliczać czas jego całkowitej pracy - od momentu pierwszego uruchomienia, przez kilka miesięcy. Urządzenie narażone jest na utratę napięcia, także muszę zapisywać zmienną do pamięci EEPROM, aby po ponownym uruchomieniu została odczytana. Napisałem prosty licznik czasu, ale nie wiem w jaki sposób wartości te zapisywać do pamięci EEPROM, głównie chodzi o fakt, że jedna komórka w pamięci przyjmie liczbę o maksymalnej wartości 256, a w przypadku pracy tego urządzenia 256 godzin to czas pracy w okresie 2 tygodni. 

Poniżej kod odpowiadający za zliczanie czasu pracy:
  czasPracy = millis();
  if (czasPracy/3600000>i){
    hour = i;
    i++;
  }

Z góry dziękuje za pomoc.
 
Odpowiedź
#2
Put i Get zapisuje duże liczby i zajmuje więcej komórek.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#3
Może się też zdarzyć, że zapis ulegnie skorumpowaniu i po 5 miesiącach nic nie będziesz wiedział. Powinieneś zapisywać jako liczbę np. uint32_t, czyli w 4 bajtach, a wtedy to mogą być minuty pracy, następnie dodać do tego CRC by potwierdzić, że oczytana wartość ma jakiś sens, dodać np. 4 puste bajty sugerujące gdzie się zapis kończy, złożyć z tego strukturę, taką zapisywać i odczytywać, i tak układać zapisy
--------
______--------
____________--------
wtedy nawet jak ostatni zapis się wykrzaczy to sięgniesz do poprzedniego wiele nie tracąc.
Może minuty to przesada, może co 10, można wyliczyć jak szybko zbliżysz się do 10000 zapisu pojedynczej komórki i tak ustalić częstotliwość by mieć zapas 2x.
Albo użyć jakiegoś ESP i wysyłać dane w Internet na thingspeak czy jakiś serwis w tym stylu.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości