Answers:
如您陈述的那样,内部EEPROM的寿命为100,000个写周期。这不是猜测-很大一部分ATmega328可以毫无问题地达到这个数字。我之前测试了三个处理器,所有处理器均达到了150,000个周期,没有任何问题。
重要的是要注意EEPROM的故障模式。大多数“ EEPROM破坏器”项目会反复进行读/写操作,直到完全不写入数据为止。在此之前,EEPROM仍然会损坏。这将通过在合理的时间内未保留数据来体现。由于这个原因,依靠超过100,000个写周期是不明智的。
EEPROM与ATmega上的RAM不同。编写它不是简单或快速的,但是将它包装在一个友好的Arduino库中,向用户隐藏了这种复杂性。
间接寻址的第一层是EEPROM库,这很简单],仅调用另外两个函数进行读写。这将调用eeprom_write_byte,位于此处。
此功能使用内联汇编,因此可能不容易理解。有一个很容易理解的评论:
设置编程模式:擦除和写入
这暗示了处理EEPROM的复杂性之一-要写入EEPROM,首先需要擦除它。这意味着,如果您调用EEPROM.write(),则无论您要写入的值如何,它都会执行一个写周期。
这意味着重复写入0xFF可能与写入0xFF,0x00,0xFF,0x00等具有相同的效果。
有多种方法可以解决此问题-您可以尝试在EEPROM.write()之前调用EEPROM.read()以查看该值是否已经相同,但这会花费更多时间。
还有其他技术可以避免EEPROM过度磨损,但是其使用方式取决于您的应用程序。
http://hackaday.com/2011/05/16/destroying-an-arduinos-eeprom/
Arduino插入壁式疣中并坐在“在沙发后面几个月了”。EEPROM在47天和1,230,163个周期后看到了第一次写入错误。这比atmel数据表上的规格好一个数量级,但与类似实验的结果类似。