Arduino Polska Forum
Zapis czasu pracy do EEPROM - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Magazynowanie (https://forum.arduinopolska.pl/dzial-magazynowanie)
+--- Wątek: Zapis czasu pracy do EEPROM (/watek-zapis-czasu-pracy-do-eeprom)



Zapis czasu pracy do EEPROM - AnonimowyAnonim - 18-01-2023

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.


RE: Zapis czasu pracy do EEPROM - Jarewa0606 - 19-01-2023

Put i Get zapisuje duże liczby i zajmuje więcej komórek.


RE: Zapis czasu pracy do EEPROM - Irvin - 19-01-2023

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.