EEPROM ma ograniczoną ilość zapisów, powiedzmy 100tys. Powiedzmy, że mam do zapisania kilka/naśco/dziesiąt bajtów konfiguracji. Wymyśliłem, jak zrobić, aby przy każdym zapisie użyć innego obszaru pamięci. Ale może są lepsze sposoby, to mnie na nie naprowadźcie.
Mój pomysł jest taki:
1. Za pierwszym odpaleniem, lub na jakiś przycisk ZERUJ_PAMIEC zeruję wszystkie komórki pamięci EEPROM.
2. Gdy zmieniam konfiguracje, względem domyślnej w programie, to chciałbym ją zapisać w pamięci nieulotnej EEPROM:
a) przeszukuję pamięć począwszy od pierwszej komórki i jeśli natrafię na wartości niezerowe, to był to poprzedni zapis. Wiem jaki ma rozmiar, więc zeruję te komórki (ustawiam wartości na zero) i zapisuję pod kolejnym adresem (uważając, aby struktura/dane zapisywane się zmieściły w dostępnej pamięci).
b) przy starcie systemu przeszukuję pamięć od początku i jeśli znajdę wartość nie zerową, to jest początek zapisanej poprzednio konfiguracji, odczytuję ją i mam konfigurację z poprzedniego zapisu.
Macie lepszy pomysł?
P.S.
Założyłem, że za każdym razem rozmiar zapisywanych danych jest taki sam. Ew pierwsza wartość może być informacją jakie dane zapisujemy.
Mój pomysł jest taki:
1. Za pierwszym odpaleniem, lub na jakiś przycisk ZERUJ_PAMIEC zeruję wszystkie komórki pamięci EEPROM.
2. Gdy zmieniam konfiguracje, względem domyślnej w programie, to chciałbym ją zapisać w pamięci nieulotnej EEPROM:
a) przeszukuję pamięć począwszy od pierwszej komórki i jeśli natrafię na wartości niezerowe, to był to poprzedni zapis. Wiem jaki ma rozmiar, więc zeruję te komórki (ustawiam wartości na zero) i zapisuję pod kolejnym adresem (uważając, aby struktura/dane zapisywane się zmieściły w dostępnej pamięci).
b) przy starcie systemu przeszukuję pamięć od początku i jeśli znajdę wartość nie zerową, to jest początek zapisanej poprzednio konfiguracji, odczytuję ją i mam konfigurację z poprzedniego zapisu.
Macie lepszy pomysł?
P.S.
Założyłem, że za każdym razem rozmiar zapisywanych danych jest taki sam. Ew pierwsza wartość może być informacją jakie dane zapisujemy.