Jak uvádíte, interní EEPROM má životnost 100 000 cyklů zápisu. To není odhad - velmi významná část ATmega328 dosáhne tohoto čísla bez problémů. Předtím jsem testoval tři procesory a všechny dosáhly 150 000 cyklů bez problémů.
Je důležité si uvědomit režim selhání EEPROM. Většina torpédoborců „EEPROM“ projektuje opakovaně čtení / zápis, dokud nejsou data zapsána vůbec. Před tímto bodem bude EEPROM stále poškozena. To by se projevilo tím, že údaje nebudou uchovávány po přiměřenou dobu. Z tohoto důvodu není moudré spoléhat se na něco více než 100 000 cyklů zápisu.
EEPROM se liší od RAM v ATmega. Zápis do něj není jednoduchý ani rychlý, ale je zabalen v přátelské knihovně Arduino, která tuto složitost skrývá před uživatelem.
První úroveň nepřímá je EEPROM library, což je triviálně jednoduché], stačí volat dvě další funkce pro čtení a zápis. Toto volá eeprom_write_byte, které najdete zde.
Tato funkce používá vložené sestavení, takže nemusí být snadno pochopitelné. Existuje však snadno srozumitelný komentář:
Nastavit režim programování: mazat a psát
To naznačuje jednu ze složitostí práce s EEPROM - Chcete-li psát, musíte jej nejprve vymazat. To znamená, že pokud zavoláte EEPROM.write (), provede cyklus zápisu bez ohledu na hodnotu, kterou píšete.
To znamená, že opakované psaní 0xFF bude mít pravděpodobně stejný účinek jako zápis 0xFF, 0x00 , 0xFF, 0x00 atd.
Existují způsoby, jak to obejít - můžete zkusit volat EEPROM.read () před EEPROM.write (), abyste zjistili, zda je hodnota již stejná, ale to vyžaduje další čas.
Existují i jiné techniky, jak se vyhnout nadměrnému opotřebení EEPROM, ale jejich použití závisí na vaší aplikaci.