EEPROM存储运行累积时间,有什么矫正技术避免很离谱错误数据?
单片机上电就先读取之前存储的累积时间然后一小时就存一次eeprom,这个累积数值肯定是逐渐递增,个别发现误差很离谱。明显是错误的数据。比如用几天而已竟然累积出几百天了。请问有没有存储矫正办法。多份存储 对比?目前只存一份数据。 这哪里是误差,明显是错误。这时候不是应该找出原因么 数据有问题不查哪里出的问题数据,而去考虑修饰数据。和头疼堵嘴,脚疼堵嘴,哪疼都堵嘴一样。 是不是mcu正在写eeprom时,出现掉电了?于是eeprom里写入的数据不完整? 电表里做法:数据存多份,数据加校验 肯定是代码溢出问题 EEPROM 1小时一次 不会出问题的
ackyee 发表于 2022-9-20 12:56
肯定是代码溢出问题 EEPROM 1小时一次 不会出问题的
(引用自6楼)
可是关键不是每个都出问题啊。如果软件出问题应该是很多。 比如100个才出1-2个 lin28 发表于 2022-9-20 14:13
可是关键不是每个都出问题啊。如果软件出问题应该是很多。 比如100个才出1-2个 ...
(引用自7楼)
应该,应该去掉2月29日,最快一千四百多天才出现一次,有时候两千天也不出现一次。 怀疑你的计时有问题 laujc 发表于 2022-9-20 15:15
怀疑你的计时有问题
(引用自9楼)
只是个简单的计数,int类型。一小时+1一次。不做时间处理的。 直接修改计数时基,提速测试不就快了。
很简单的事情。 lyl1070 发表于 2022-9-20 16:53
直接修改计数时基,提速测试不就快了。
很简单的事情。
(引用自11楼)
做过 没问题。就是很小概率出现。 已经开启了低于VOBD 禁止编程。
acmilannast 发表于 2022-9-20 12:44
电表里做法:数据存多份,数据加校验
(引用自5楼)
有没有具体的做法 可以分享下嘛
就是不知道什么时候错的,如果是写入的时候错的 那校验也是对的哈。
只用1个地址存?不是用多个空间循环擦写以提高寿命的吗?
多个空间循环擦写,通过连续0xff判断最新数据位置,因为你是累加方式,再简单判断下就知道数据有无错了吧 楼主是用mcu内部的data flash来存储数据的吗?如果是的话就要注意,要规避比较多地方的 Landmark 发表于 2022-9-20 19:43
楼主是用mcu内部的data flash来存储数据的吗?如果是的话就要注意,要规避比较多地方的 ...
(引用自15楼)
N76E003 用最后2页做eeprom 智涅 发表于 2022-9-20 19:36
只用1个地址存?不是用多个空间循环擦写以提高寿命的吗?
多个空间循环擦写,通过连续0xff判断最新数据位置 ...
(引用自14楼)
2个字节 ,int数据。 寿命10万次足够了哈。没做多处存储! 难道写入flash之前,先读取出来对比 再写入? lin28 发表于 2022-9-21 13:00
2个字节 ,int数据。 寿命10万次足够了哈。没做多处存储! 难道写入flash之前,先读取出来对比 再写入? ...
(引用自17楼)
"难道写入flash之前,先读取出来对比 再写入?"做滚动存储,你要判断之前写到哪里,肯定要先读,通过判断是不是连续0xff就可以了 数据加校验,你至少要知道出错的原因是数据不完整还是完整但是错了。 智涅 发表于 2022-9-21 13:55
"难道写入flash之前,先读取出来对比 再写入?"做滚动存储,你要判断之前写到哪里,肯定要先读,通过判 ...
(引用自18楼)
可以指定地址写入和读取的 。 出错时候是很大数据,现在怀疑是有某个字节变FF了,应该是几十的数据,突然变成65532 这样子。怎么会变FF呢 怎么避免 或者矫正回来呢
页:
[1]