EEPROM的奇怪问题!

[复制链接]
3537|10
 楼主| 电子老鹰 发表于 2012-3-1 22:54 | 显示全部楼层 |阅读模式
PICC9.80和谐版   IDE8.80    片子是1939
上电时,需要读一次EEPROM数据。读之前先判断WRERR位,若为1,则我认为上次写EEPROM有问题,则不读EEPROM了,采用默认值运行后续程序;若WRERR为0,则正常读EEPROM,然后运行后续程序。
现在的问题是,经常发现上电时WRERR为1!如果断电后马上上电(2秒内),则WRERR基本为0;但若断电后停一会再上电(几秒吧),则几乎每次都发现WRERR为1!跟断电时间竟然有关系??

另外,即使WRERR为1了,我若强行读EEPROM,发现数据也很正常,并无紊乱数据。看1939手册,WRERR是表示写EE过程被异常中断的标志位呀,既然写的时候有异常,那么再读出来也应该是很乱的数据呀。

闹了一晚上,愁啊!
Ryanhsiung 发表于 2012-3-2 08:21 | 显示全部楼层
这个位的上电状态是未知的,是1 是0很正常。 一般为0. 断电马上上电,MCU没有彻底掉电,实质寄存器很多都还没有丢掉。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yewuyi 发表于 2012-3-2 08:38 | 显示全部楼层
你真是个神仙,此乃绝路,回头是岸。。。。。。

你见过谁家MCU的特殊寄存器在断电后还能正常保持的吗?这是最基本的常识啊。。。

1、要想实现EEPROM的读写断电时的异常检查,一般是在EEPROM数据后面附加一个CRC16的校验,写EEPROM的时候,先写数据再写CRC16值。
2、还有一个办法就是设计一个掉电检测电路并在MCU的VCC上接一个稍微大点的电解电容,利用电容续电,当掉电后靠这个电容可以把余下的EEPROM数据写完。
tmark 发表于 2012-3-2 10:59 | 显示全部楼层
这个数据可以
yewuyi 发表于 2012-3-2 11:15 | 显示全部楼层
979832楼的图不是1939的手册吧。我贴出1939的手册。图中的q,是说按一定条件置位。不过,POR是上电复位吗,我不确定。BOR是欠压复位,这个我知道。 3楼说特存断电后都不能保持,我有保留。 ...
电子老鹰 发表于 2012-3-2 10:25


不是不能保持,是不能确定一定会保持。

无需保留,呵呵。。。
kvdong 发表于 2012-3-2 11:17 | 显示全部楼层
POR是上电复位
你的图上不是很清楚的说明了POR和BOR时此位状态未知了吗
 楼主| 电子老鹰 发表于 2012-3-2 11:17 | 显示全部楼层
我查了,POR是上电复位。所以此位上电时确实不确定,不能作为判断依据。
5楼说的是啥意思?
 楼主| 电子老鹰 发表于 2012-3-2 11:19 | 显示全部楼层
啊,回复完已刷新,6、7楼都出来了。谢谢各位,结贴!
yesful 发表于 2012-3-2 23:35 | 显示全部楼层
我一般给要保存的数据分两个区,一个是数据存储区,一个是备份区,两个都加CRC16校验,当读数据存储区的数据不对时,再读备份区的数据,如果再不对,那就读默认值了~~~:lol
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

274

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部