钻石会员
主题
帖子
积分18480
阅读权限50
注册时间2012-12-12
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2013-1-14 15:53
|
显示全部楼层
AVR芯片reset之前在干什么?不知你有没有做过试验或者观察过、想过?
AVR的运行速度快是他的一项有竞争力的特点,留意它自身资料介绍的reset
过程,不难发现在产生reset信号之前他有一段时间是处于非正常工作状态的,
我们可以直观观察在下载程序的过程中,在写入与校对之间,下载线会短暂的
释放reset脚,在进入校对时又进入reset拉低状态,在这个短暂reset释放期
间,你的程序会胡乱执行一段,有时都不一样,但确实是在执行你的程序,
我编写的液晶显示的系统会发现下载过程中液晶屏上会显示黑条,而且是会走
动的,写完进入校对之前显示一段正常的内容,但是由于是程序乱飞所以显示
的数据大部分时候全是零,估计这段时间程序跑进了我的显示部分,在进入校
对方式时,屏幕又不动了。
如果你的硬件系统设计上没有认真对待他的reset部分的处理,则会在上电的过
程中,reset有效之前系统就会乱飞执行一段你不想执行的程序,例如写eeprom
由于没有完整的执行过程,所以写入eeprom的数据也将是随机的,写入的地址也
将是随机的,但是avr的上电初始状态基本上ram都等于零,因此就产生了
“零地址不能使用,不可靠”的说法,如果在执行这段写eeprom之前又进入过
其他程序,那么你的eeprom的任何地址都将是“不能使用”和“不可靠的”,
因为这个时候鬼知道它携带了什么参数才进入eeprom操作的呢?要知道短短的
数十微秒他就足可以破坏你的eeprom,而且是用了你自己编的程序去破坏你自己
的数据,够残忍吧?!
===================================================
这是网上查到的我认为对EEPROM数据丢失现象最精辟的描述 |
|