Jak wszystko, kiedy się to opracuje, to też nie jest skomplikowane.
Muszę jednak rozszerzyć wypowiedź. Wiedza bierze się z chęci jej posiadania. Dla mnie wszystkie zagadnienia związane z elektroniką są ciekawe wiec nie ograniczam się do jednej dziedziny.
Czytam książki o PIC i STM i inne. Czytałem książki kolegi Tmf i po lekturze jednej z nich jedyna myśl jaka się nasuwa to to, że zwykłe Atmegi to "straszne dziady" ahahahaha
Warto sięgać po nowe
Wracając do książek warto poznać C. Potem czytasz książkę kolegi Tmf i widzisz przykład wydłużania żywotności pamięci. Przykłady do książki są do ściągnięcia ze strony wydawnictwa. Mając pojęcie o co biega bez problemu piszesz to w swoim ulubionym języku.
I tak nie jeden raz patrzysz na gotowy przykład w C i za 5 minut jesteś z kodem gotowy.
Nie będę streszczał książki - w telegraficznym skrócie naszkicuję o co chodzi.
Przyjmijmy że potrzebujesz 4 bajty na dane.
Ustalasz wiec, na przykład, że przeznaczasz na dane 10 x tyle bajtów
Pamięc na początku, zaraz po programowaniu, jeśli nic z nią nie robiłeś ma komórki zapisane FF`ami
Twoja funkcja zapisująca powinna czytać komórki po kolei aż natrafi na FF
Skoro natrafiła na FF znaczy, że dalej też będzie FF. Chyba że to już 40 komórka to znak że już zapisano całe dostępne miejsce, trzeba te miejsce przeznaczone na zapis nadpisać FF zaczynając od początku.
Możesz też przesuwać przed sobą FF. Wtedy przy następnym zapisie funkcja zapisująca go znajdzie.
Metod jest więcej nie będę się rozpisywał bo to można doczytać. Atmel wypuścił notę o "Wear leveling".
Wróciłbym do BODEN.
On nie służy tylko do tego by wyłączyć mikrokontroler kiedy napięci spada.
Mam sterownik który niczego nie zapisuje do EEPROM sam. Mam jednak w EEPROMIE zapisane wszystkie napisy które potem wyświetla na LCD.
Po dwóch burzach, kiedy napięcie sieciowe zanikało i pojawiało się bo przewodami poruszały gałęzie drzew. Na wyświetlaczu pojawiały się błędy.
Przypominam - sterownik niczego nie zapisuje.
Po prostu jeśli napięcie jest nieodpowiednie to mikrokontroler może robić niekoniecznie to co ma zapisane w programie.
Po ustawieniu BODEN od trzech już lat żadnych błędów na LCD.
Co do obliczenia CRC... Potrzebujesz Word i Byte mówisz...
To ja bym zadeklarował tablice czterech bajtów na zmiennej Dword poprzez Overlay. Czwarty bajt to by była CRC a zapisywałbym Dword za jednym zamachem jak Typ w C
Opisanie tego bliżej wymaga znów czasu a ja mam zajęcie. Jak nie doczytasz to napisz.