搜索
bottom↓
回复: 14

关于:mega16上电复位时刻,自检校验eerom里的参数时偶尔出错,如何解决?

[复制链接]

出0入0汤圆

发表于 2008-6-19 21:57:14 | 显示全部楼层 |阅读模式
我做的一个电机控制器,在上电后,读取eerom里的设定过的参数,进行参数自检校验,若N个参数都校验正确,则认为参数正常;若存在哪怕一个参数校验没有通过,则重新从flash程序区读取默认参数值到eerom里,然后再显示参数错误故障,提示用户重新设定适合自己的参数值!
      硬件电路接法为:整流滤波后的+5V,其一接mega16的Vcc引脚,其二通过一个4.7k的电阻接mega16的reset脚。
问题是:在上电时,偶尔会出现读取eerom里面的参数校验错误,不知是上电初始电压太低而读取错误,还是上电过程_真地将eerom里面的数据干扰丢了?如何解决此问题?谢谢

出0入0汤圆

发表于 2008-6-20 11:14:11 | 显示全部楼层
启用BOD功能试试.

出0入0汤圆

发表于 2008-6-20 11:41:33 | 显示全部楼层
有碰到上电时EEPROM里的校验数据被改写,后来就是启用BOD功能解决的,楼主可以试试

出0入0汤圆

发表于 2008-6-20 12:56:00 | 显示全部楼层
用BOD

出0入0汤圆

 楼主| 发表于 2008-6-20 13:50:15 | 显示全部楼层
谢谢各位的建议!
    注明:mega16使用的外部8M石英晶振
    我目前用如下措施,可以大大降低此现象常出现的几率:
    1、加大电源的电容量,即:在+5V与4.7K电阻连接的地方放置一个105电容。
    2、同时,使能BOD,
             但是:在设置容丝位时,SUT1..0(即:晶体振荡器时钟选项对应的启动时间)
                   我选用了11(即:石英振荡器,电源慢速上升)
   
另:是否在使能BOD时,SUT1..0必须对应选用01(即:石英振荡器,BOD使能),才会真正起到作用?

出0入22汤圆

发表于 2008-6-20 13:54:33 | 显示全部楼层
上电后,延时一点时间再操作eeprom看。

出0入0汤圆

发表于 2008-6-20 16:17:13 | 显示全部楼层
参考:不要忘记使用AVR的BOD功能! http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=762280&bbs_page_no=1&bbs_id=1003

出0入0汤圆

 楼主| 发表于 2008-6-20 16:39:39 | 显示全部楼层
非常感谢马老师提醒!!!

下面为转马老师的帖子:

作为一个正式的系统或产品,当系统基本功能调试完成后,一旦进行现场测试阶段,请注意马上改写熔丝位的配置,启用AVR的电源检测(BOD)功能。

对于5V系统,设置BOD电平为4.0V;对于3V系统,设置BOD电平为2.7V。然后允许BOD检测。

这样,一旦AVR的供电电压低于BOD电平,AVR进入RESET(不执行程序了)。而当电源恢复到BOD电平以上,AVR才正式开始从头执行程序。保证了系统的可靠性!

原因分析如下:
AVR是宽电压工作的芯片,当电压跌至2.5V,系统程序还能工作。这是有2个可怕的现象可能出现,
1。外围芯片工作已经混乱,AVR读到的东西不正确,造成程序的执行发生逻辑错误(不是AVR本身的原因)。
2。当电源低到临界点,如2.4V时,并且在此互上互下的,AVR本身的程序执行也不正常,取指令、读数据都可能发生错误,或程序乱飞、不稳定(AVR本身的原因,实际任何的单片机都是这样的),非常容易造成EEPROM、FALSH的破坏。有人问51怎么不会?实际上51也是这样,只是51内部没有直接写EEPROM、FLASH的指令,它的程序乱飞留不下痕迹。还有人有疑问:外挂EEPROM,掉电时怎么不会改写?实际是外挂EEPROM,当电压低于4V(2.7V)时,它已经不工作了,程序去改内容也改不了。而AVR内部的东西在临界电压时都能工作,但非常不稳定。

AVR的BOD功能必须要使用,我早期使用51时,凡是产品外部都要使用电源监测芯片,现在AVR自己本身就有该功能,一定要使用。

这些教课书上是没有的。

出0入0汤圆

 楼主| 发表于 2008-6-20 16:48:21 | 显示全部楼层
我还有一个疑问,请赐教:
   
(用外部石英晶振前提下)在使能BOD时,熔丝SUT1..0(晶体振荡器时钟选项对应的启动时间)的值
        是选择11(即:石英振荡器,电源慢速上升)?
        还是选择10(即:石英振荡器,电源快速上升)?
        还是选择01(即:石英振荡器,BOD使能)?
如何设置该熔丝位,对系统会更好一些?

出0入0汤圆

发表于 2008-6-20 17:03:42 | 显示全部楼层
BOD在任何情况下都要用.

采用慢速保险,等电源全部稳定后再启动工作.

出0入0汤圆

发表于 2009-11-17 21:05:28 | 显示全部楼层
MARK

出0入0汤圆

 楼主| 发表于 2010-8-6 16:32:57 | 显示全部楼层
marking

出0入0汤圆

 楼主| 发表于 2010-8-10 14:04:42 | 显示全部楼层
*****总结内容:两年后,通过产品实际运行得出的如下结论*****

采取的措施:
1、采用了BOD使能2.7V
2、电源快速上升(因为慢速上升的结果是:更容易出现参数丢失)
3、Vcc和Reset两引脚之间接300欧姆电阻(有效果)
4、电源处使用大容量电解电容1000uF/16V(有效果)

结论是:
    偶尔还是有参数丢失的情况

出0入0汤圆

 楼主| 发表于 2010-8-10 14:06:38 | 显示全部楼层
补充:
如果采用BOD使能4.3V的话,比2.7V更容易出现参数丢失

出0入0汤圆

发表于 2010-8-10 14:07:18 | 显示全部楼层
可以软件加校验,我试下来很可靠
得用EEPROM使能位后4T的时间来校验
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 12:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表