原创 AVR单片机上电复位不可靠问题的解决(原创)

2007-9-6 11:35 11081 5 16 分类: MCU/ 嵌入式
昨晚在调试AVR 单片机时又有一些心得体会,虽然结论是一个很小的问题造成的,但在此还是写出来给大家参考,避免走弯路。

 

 

事件描述:

       以前用AVR的芯片也做过好几个设计,从来没有怀疑过ATMEL的芯片的稳定性,以前的几个方案都是很稳定的,当然这跟PCB的设计有很大的关系,如果大家需要PCB相关参考资料的话可以到本站的PCB技术专栏里查找,那里有很多前辈的PCB布板心得。

        这次用的ATmega48制作的串口电压表就出现一个很奇怪的现象,电路板是用万能板焊接的,程序里用到ADC功能和串口通讯功能,用的AVR下载工具是STK500,每次下载程序后芯片总是不能正常复位工作,还要读取下芯片的特征字或熔丝位让芯片重新复位下才能工作,这时候复位后工作都稳定,没出现什么不正常。刚开始不在意这个问题,因为在开发的初期用AVR DRAGON仿真调试部分功能时复位脚不能接任何器件,所以也就把复位脚悬着不接复位电路,以为是没接阻容复位而造成不稳定。在此还是没有怀疑过芯片的问题。

         直到后来这个程序都开发完毕了,给ATMEGA48加上 一个10K的上拉电阻和0.1uF的电容做复位,把ISP线拔掉,独立给串口电压表上电(因为当时都是用几个电路模块连接做实验,串口电平转换电路也是独立的,初期串口调试已经都通过了,所以我把这个串口电平转换模块的连线都拔掉了),问题来了,上电不工作,手动把复位脚接地后放开可以工作,但过了一会后还是死了,加看门狗后还是老样,没有任何改善,每次手动复位正常工作后,把手指头放在ATMEGA48的1、2、3脚上方慢慢靠近,手指头还没碰到芯片就死机了~~~不会吧,没这么脆弱吧。以前用AVR Tiny26做的控制器,把手机放在芯片上方然后拨打10086都不会死机。不会中奖了吧,又不是第一次搞单片机,难道真要像以前论坛里的朋友开玩笑说:要杀只大公鸡祭拜下~~~face10.gif

        奇怪啊~~~实在没招,把串口电平转换电路给接上继续调试下,这时候再上电每次都是正常工作,而如果再把串口电平转换电路断开则又不能正常复位工作~~~手动复位后把手再靠近芯片的1、2、3脚上方就又马上死机~~~狂晕~~~~不是吧~~~ATMEGA48的第一脚是RST,2、3两脚刚好是RXD、TXD串行引脚,难道真的是这个串口干扰引脚影响到复位电路?不可能吧,ATMEGA48芯片用得人多的是,各方面的应用都有,不可能是芯片的缺陷,还是多怀疑下自己吧...重新再好好看看自己的程序吧...face12.gif

        程序里开始首先是对IO做初始化,TXD配置为输出,还有其他相关IO配置。然后是对定时器的一些初始化,再就是对串口的一些初始化了。看了下程序,在初始化的时候就把串口中断发送、接收允许都使能了,难道是这里的问题?串口电压表在实际工作的时候串口其实不是在一直工作的,是通过一个开关选择接地才发送数据,平时是不发送的,而在不接串口电平转换电路的时候RXD、TXD都是是悬空的,只有TXD为输出有上拉,RXD没有使能上拉,这时候RXD是最容易被外部干扰的,这就是问题的所在了。当然如果串口电平转换电路都连接着,那就没这个问题,因为串口电平转换电路已经把RXD的电平给钳住了。解决的方法很简单:在初始化串口的时候关闭串口中断使能,在主程序里需要发送数据的时候再使能串口,发送完马上关闭就可以。至此问题解决,这时候看你再怎么去“摸”ATMEGA48的引脚或封装都没有再出现任何的死机情况,每次上电复位都是非常的稳定。(把AVR的BOD熔丝打开可增加复位的可靠性,BOD LEVEL根据实际的电源电压进行选择,这里的电源是5V,所以BOD LEVEL选4.3V)

 

 

总结教训:

        这是自己的粗心大意、芯片内部功能的没有合理性利用的表现。在此引以为戒!告诉自己:不要以为自己做过一些小项目就飘飘然起来,不要动不动就去怀疑人家半导体厂家芯片的稳定性,要多怀疑自己才是。往往可能最基本的问题没注意而花费了很多的时间,自己做着玩的东西那都无所谓了,如果你是给别人打工呢?那性质就完全不一样了!

 

下图为AVR单片机 典型外部复位电路:

        AVR单片机已经内置了上电复位设计。并且在熔丝位里,可以控制复位时的额外时间,故AVR外部的复位线路在上电时,可以设计得很简单:直接拉一只10K的电阻到VCC即可。

 

        为了可靠,再加上一只0.1uF的电容以消除干扰、杂波。

 

        二极管1N4148的作用有两个:作用一是将复位输入的最高电压钳在Vcc+0.5V 左右,另一作用是系统断电时,将10K电阻短路,让0.1uF的电容快速放电,让下一次来电时,能产生有效的复位。

 

        当AVR在工作时,按下开关S 时,复位脚变成低电平,触发AVR芯片复位。

 


 

2007-3-30 17:07:00 AVR猎手

文章评论11条评论)

登录后参与讨论

用户906612 2008-8-22 09:25

wenyuo2008 ,你好 看了你的问题,挺复杂。 解决方案如下: 1、保证电源有足够的功率输出(这个非常重要) 2、启动AVR的BOD功能,选择4.3V的BOD 3、因为你的产品还考虑到休眠,不然可以在RXD上加上外部的上拉电阻。

用户155570 2008-7-30 09:29

我用的是M88V,电源5V,启用串口,串口与485芯片相连,用于远程通信,上电时485芯片处于襟用状态,RXD引脚电平处于三态(不定),但却先使能了RXD接收中断,系统上电5秒后如果无通信则进入掉电休眠状态,单片机晶振停振,等待通信换醒中断(电平变化),休眠时485也处于襟用状态,RXD引脚三态,换醒后485启用,RXD引脚处于上拉电平。在大量测试过程中,偶而出现死机现象,且外部复位无效,有时晶振停振,有时晶振一直工作,但单片机不动,出现该现象有时是上电时就出现,有时是通信过程中出现,但外部复位均无效。我采用了IMP809作为复位电路,按理不会出现复位问题。为了分析原因,我专门做了88的复们测式,让复位脚经4.7K上拉电原,即采用内部复位电路,上电成功后,用稳压电源调单片机电源,缓慢降到0.8V左右(复位临界电压),然后重新回到5V,这时88必定死机,停止工作,但外部复位能成功。之后又接回IMP809,反复重复上面测试过程,未出现死机现象。再回顾原电路,电源采用7550对12V经过75欧限流电电阻稳压,负载能力100mA,单片机和485工作电流小于50mA,但485通信出现冲突时可能大于50mA,但485芯片电源有一个20欧的限流电阻,将485芯片短路,5V电源只降到2.5V左右,不会使88V进入临界区。为什么上电或通信会使88V死机,而且外部复位也无效呢?真是百思不得其解。

用户906612 2008-2-27 10:56

 

TO: rock

“但不明白的是,RXD受到什么样的干扰才会使MCU复位呢.”

答:是我没有使能RXD的上拉电阻,但却使能了RXD接收中断, 这种情况下,如果RXD脚上也没有接232电平电路(即悬空),那就很容易被外部的信号干扰,如你手上的人体干扰、外部的电磁干扰等。。。。

用户906612 2008-2-27 10:52

 

TO: uliumao@sohu.com

当电源开关快速开关时,MCU偶尔会出现乱跳,停住不动等问题----这个的解决方法就是你说的开启BOD。

但你开启BOD后,又会因为继电器的动作而复位(首先,是你开启BOD后,继电器动作才复位,则可以分析出你的复位情况不是因为继电器电磁干扰造成的!)----这个原因有可能是继电器动作时,造成电压瞬间的下降,如果你的BOD是设置为4.3伏那就会受影响了,一旦瞬间的电压低于4.3V,那芯片可能会被BOD复位,这时候解决方法是:可以把BOD设置为2.7V就可以解决这个问题。

用户906612 2008-2-27 10:48

感谢大家。

简单点说就是:  如果你使能了串口接收中断,而RXD引脚却是悬空的(即没有接232通讯电路或加上拉电阻等),那芯片就很容易受到干扰,在上电的时候会出现不稳定的状态或死机。正常工作的时候也是如此,容易受干扰。

用户23742 2008-1-9 08:30

我也遇到过这样的问题,搞了很久才找到原因,要是早看到这篇文章,就可省不少时间;

但不明白的是,RXD受到什么样的干扰才会使MCU复位呢.

用户103918 2007-9-18 13:41

我也遇到了这个问题,当时也是把串口中断使能关掉了,可是也没从根本上解决问题。

现在还比较迷糊这个问题呢。到底是不是复位的原因呢?

 

用户60645 2007-9-17 16:51

楼主,你好!我用JTAG接口下载程序,连接不上,请问为什么,我用的是ARM LPC2136,我把JTAG电源与芯片电源隔离就可以连接上,但不能下载,然后我清除FLASH,就可以下载,可是断电重新开又不能下载。请问什么原因呢?

用户18909 2007-9-14 14:13

看文章是串口的事??

和复位有什么关系??

用户59449 2007-9-13 06:55

haowen

相关推荐阅读
用户906612 2010-03-22 16:47
关于纠偏器的精度(对边器/ 对边控制器/ 纠偏控制器 /产品供应)
对边器_纠偏器_对边控制器_纠偏控制器_纠偏系统_对边系统_批量供应,欢迎选购!量大优惠!本站淘宝店:【猎手的电子商铺】主营电子元件/智能家居无线遥控/纠偏器/对边器/纠偏控制器/对边控制器作为卷材纠...
用户906612 2010-03-22 16:45
卷布机(布料、薄膜等)对边控制器 纠偏控制器
欢迎选购!批量价优! 对边器_纠偏器_对边控制器_纠偏控制器_纠偏系统_对边系统_批量供应,欢迎选购!量大优惠!本站淘宝店:【猎手的电子商铺】主营电子元件/智能家居无线遥控/纠偏器/对边器/纠偏控制器...
用户906612 2008-08-27 10:42
瑞萨半导体的《CAN入门书》
瑞萨半导体的《CAN入门书》这个文档是由瑞萨半导体编写的,很详细,适合作为CAN学习的入门资料。上传上来供大家学习使用。版权归瑞萨半导体所有。分成两个压缩包,下载后放在一起,解压第一个包即可。压缩包1...
用户906612 2008-06-12 10:14
STM32F的 原理图器件库 PCB封装库 (从最新的Altium summer 08提取)
已经保存为低版本格式,可以用PROTEL任何版本软件打开,并使用。觉得好的话支持下!!!呵呵...
用户906612 2008-06-05 09:11
真是失望啊。发布几篇养生的文章,竟然都删除了
真是失望啊。发布几篇养生的文章,竟然都删除了整天工作,难道连健康都不顾了?!!!...
用户906612 2008-05-12 23:44
下午去参加利尔达在厦门举办的MSP430技术研讨会了
资料编写与整理:AVR猎手benladn911      出处:AVR猎手的地盘  http://blog.ednchina.com/benladn911/      转载请注明出处本来今天早上就要过...
我要评论
11
5
关闭 站长推荐上一条 /2 下一条