问题描述
当使用带有 Arduino EEPROM library 的 ESP8266 集成(闪存)存储器存储单个布尔值时,我正在尝试实现更长的存储器写入寿命。单个硬件内存位置不能无限更改,我正在尝试找到一种有效的解决方案,以延长多个不同(类似)平台上的内存使用写入周期的寿命。
一些消息来源确定单个 EEPROM 存储器(位)位置的实际写入周期量约为 100k - 1M 写入(当然,这取决于所使用的硬件而有很大差异)。 One test I found measured 9584038 passed write cycles with Arduino 但如果可能的话,我仍然想延长内存写入周期。
据我所知,无法使用 EEPROM 库访问单个位,并且您只能存储和读取 8 位字节值。
使用 Arduino EEPROM 库存储布尔值的最简单解决方案可以将 FALSE
存储为 0
值,将 TRUE
存储为 1
(例如).
问题是:这种(“位移”)方法(下图)与仅将 0
和 1
值写入相比有什么不同吗?单个 Arduino EEPROM(8 位)内存地址。这种方法背后的想法只是在更改用作布尔值的实际 Arduino EEPROM 存储器(8 位)地址值时更改单个位(位的反向奇偶校验 00000000
= false
,{ {1}} = 00000001
、true
= 00000011
、false
= 00000111
等)。或者我应该删除 Arduino EEPROM 库并以其他方式执行此操作?在使用 Arduino EEPROM 库时,我试图弄清楚引擎盖下发生了什么,但无法理解它在微芯片内部的实际工作原理。
“Red Block”代表更改的位 - “DECVAL”是实际存储的 Arduino EEPROM 无符号字符值。所以实际存储的(无符号)字符值循环将是 true
,0
,1
,3
... 7
,224
,192
、128
、0
...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)