Wie Sie feststellen, hat das interne EEPROM eine Lebensdauer von 100.000 Schreibzyklen. Dies ist keine Vermutung - ein sehr bedeutender Anteil von ATmega328 wird diese Zahl ohne Probleme erreichen. Ich habe bereits drei Prozessoren getestet und alle 150.000 Zyklen ohne Probleme erreicht.
Es ist wichtig, den Fehlermodus des EEPROM zu beachten. Die meisten "EEPROM-Zerstörer" -Projekte lesen / schreiben wiederholt, bis die Daten überhaupt nicht mehr geschrieben werden. Vor diesem Zeitpunkt ist das EEPROM immer noch beschädigt. Dies würde sich dadurch manifestieren, dass die Daten nicht für einen angemessenen Zeitraum aufbewahrt werden. Aus diesem Grund ist es nicht ratsam, sich auf mehr als 100.000 Schreibzyklen zu verlassen.
EEPROM unterscheidet sich vom RAM eines ATmega. Das Schreiben ist nicht einfach oder schnell, aber es ist in eine freundliche Arduino-Bibliothek eingebettet , die diese Komplexität vor dem Benutzer verbirgt.
Die erste Indirektionsebene ist die trivial einfache EEPROM-Bibliothek , die nur zwei weitere Funktionen zum Lesen und Schreiben aufruft. Dies ruft eeprom_write_byte auf, das Sie hier finden .
Diese Funktion verwendet die Inline-Assemblierung und ist daher möglicherweise nicht leicht zu verstehen. Es gibt jedoch einen leicht verständlichen Kommentar:
Programmiermodus einstellen: Löschen und schreiben
Dies deutet auf eine der Komplexitäten des Umgangs mit EEPROM hin - um darauf zu schreiben, müssen Sie es zuerst löschen. Dies bedeutet, dass beim Aufrufen von EEPROM.write () ein Schreibzyklus ausgeführt wird, unabhängig davon, welchen Wert Sie schreiben.
Dies bedeutet, dass das wiederholte Schreiben von 0xFF wahrscheinlich den gleichen Effekt hat wie das Schreiben von 0xFF, 0x00,0xFF, 0x00 usw.
Es gibt Möglichkeiten, dies zu umgehen. Sie können versuchen, EEPROM.read () vor EEPROM.write () aufzurufen, um festzustellen, ob der Wert bereits derselbe ist. Dies erfordert jedoch zusätzliche Zeit.
Es gibt andere Techniken, um übermäßigen EEPROM-Verschleiß zu vermeiden, deren Verwendung jedoch von Ihrer Anwendung abhängt.