0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何避免单片机死机

电子工程技术 2019-09-20 15:24 次阅读

一、振荡器停止振荡

又可以分为电源电压不稳,或者强干扰引起的振荡器停振。

二、PC指针跑飞

电源电压不稳或强干扰引起PC跑飞,如果看门狗不好,也会引起死机。

三、设计上对长引出线的IO没有保护,静电打在IO口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。



四、复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。综上所述:

设计电路时,应该注意:
1.电源稳定
2.IO保护
3.振荡器PCB布线要注意
4.复位电路设计和PCB布线
5.电源,信号线干扰路径的保护,加滤波TVS
6.高速信号输出远离信号输入端,如SPI总线,I2C总线布线要远离ADC,复位,时钟等布线处,以及其他模拟前端。

一家之言,欢迎纠正

电源电压的地不稳定造成电源电压瞬间负电压导致单片机故障程序不发运行。

我的理解:

1、"跑飞"是因为程序隐患或外部干扰引起的误动作,致使PC被写入"出界"数据,跑到了RAM区,或者跑到了FLASH的空白区。如果PC指向了RAM区,哪情况就不好说了!因为程序译码器可能得到任意译码结果。如果PC指向了FLASH空白区,则可以事先将所有FLASH空白区填入某个你想要的数据,迫使程序译码器在这里翻译出你想要的指令,从而进行相应的处理。在IAR Workbench中好象有在空白区填充数据的设置。

2、"死机"是指PC进入了"死循环",或者是MCLK等于近似为零的值。此时,要想救活MCU,非外狗不可。

*程序运行过程中,如果MCU电源出现问题(电源供电问题,或其它外部电路引起的电源扰动),比较容易出现"跑飞"现象。程序跑飞应该是PC出错;软件和硬件都可能出这样的问题。

死机应该是CPU根本没有运行,多是硬件方面的问题造成的,比如POR复位不成功,430比较容易出现掉电不完全后重新上电。

有了看门狗就不会死机?

死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复全才能走出死循环,执行正常的程序流程。众所属知,克服死机的最有效手段是加看门狗(WatchDog)。

目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句--FeedDog语句,以保证程序正常运行时DogTimer不会溢出。

一旦程序进入一个不含FeedDog语句的死循环,DogTimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成比,如MAX706、MAX791等[1];还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705等,

有一个错误观点:加了看门狗,单片机就不会死机。实际上,看门狗有时间会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双对限看门狗和定时复位看门狗。

双时限看门狗有两个定时器;一个为短定时器,一个为长定时器。短定时器定时为T1,长定时器定时为T2,0

这样,当程序进入某个死循环,如果这个死循环包含短定时器FeedDog语句而不包含长定时器FeedDog语句,那么长定时顺终将溢出,使单片机复位。巧妙安排长定时器FeedDog语句的位置,可保证出现死机的概率根低。在水轮发电机组微机控制装置中的对比应用证明了这一点。

目前几乎所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU的看门狗是不能保证单片机在分之百不死机的。

在绝对不允许死机的装置中,笔者设计了一种完全不依赖于CPU的看门狗--定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要CPU FeedDog。

简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。

智能电表(包括IC卡电能表、复费率电能表、多功能电能表)中采用了定时复位看门狗,每1秒让CPU强行复位,迄今数十万电表运行了近五年,无一例死机报告。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43970

    浏览量

    620771

原文标题:单片机死机了怎么办?这6个方法你应该知道

文章出处:【微信号:EngicoolArabic,微信公众号:电子工程技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何有效避免MCU单片机死机问题

    单片机的都可能遇到过因外部干扰或因软件BUG导致死机,这对于有功率负载的电路是极为不利的。现在MCU都有了WDT看门狗,当计数溢出就强制进行复位。但如果单片机因某种原因(如静电、浪涌等击穿)直接
    发表于 07-25 09:17 812次阅读
    如何有效<b class='flag-5'>避免</b>MCU<b class='flag-5'>单片机</b><b class='flag-5'>死机</b>问题

    485总线上的单片机死机

    进行(执行过程通过LED观察)。主机延时一段时间后又重复上述过程,但从就出现问题了!有时第二轮循环中就有单片机死机(示波器观察晶振停振,没有时钟信号,看门狗也没用),有时经过两三轮后才会有
    发表于 09-26 14:42

    单片机/ARM死机或跑飞的诊断疗法

    有时,在写ARM时会遇到经常死机的情况,莫名其妙,在这里我总结了一些单片机/ARM死机或者跑飞的一些常见的查找方法和我对此的一些拙见希望对大家有帮助。“死机”和“跑飞”随着
    发表于 08-26 16:16

    单片机死机了怎么办?

    口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。四、复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。综上所述:设计电路时,应该注意:1.电源稳定2.IO保护3.振荡器PCB布线要注意4.
    发表于 09-10 07:30

    无线通讯单片机死机

    大家好,我现在做一个项目,无线遥控控制灯光,遥控码是用单片机编的,现在遇到的问题是,当无线发射模块发码的时候,单片机死机,有时候还把E2ROM的数据打乱,更糟糕的时候会把程序也打乱,必须重新烧录
    发表于 10-21 01:22

    单片机/ARM死机或跑飞的诊断疗法

    单片机/ARM死机或跑飞的诊断疗法 有时,在写ARM时会遇到经常死机的情况,莫名其妙,在这里我总结了一些单片机/ARM死机或者跑飞的一些常
    发表于 05-06 15:10

    单片机死机原因分析

    图中P07为单片机控制mos管的io口,供电5V/2A适配器,单片机松翰570210。单片机运行正常,但是负载电流到1.7A左右时,单片机死机
    发表于 07-08 15:09

    造成单片机死机的原因(软件篇)

    本帖最后由 chiroudetuzi 于 2020-8-31 19:57 编辑 如果你做过或者正在做单片机开发,很可能遇到过单片机死机,原本一切都在正常运行,单片机却突然莫名其妙
    发表于 08-31 07:50

    造成单片机死机的原因有哪些?

    ,就关闭交流风机,大概每次切换风机状态时,都会造成死机,后来在风机两端接了个RC吸收电路,情况改善了不少,但是还是出现死机现象,最后改用了STM8内部晶振作为系统时钟,解决问题才得以解决所以如果在你的系统里,时钟并不是很苛刻的话,应该尽量使用
    发表于 09-01 17:57

    单片机玄学死机问题

    单片机不会死机,也能正确计算平均值。但是我使用正点原子精英版也就是stm32f103zet6时,同样的代码,却会死机(仿真和实物流水灯确定是死机),仿真确定
    发表于 10-14 00:24

    单片机为什么会死机单片机死机该怎么去解决?

    振荡器停止振荡是由哪些原因引起的?单片机为什么会死机单片机死机该怎么去解决?
    发表于 07-16 09:22

    单片机为什么会死机

    在日常的单片机开发中,不可避免会遇上死机的现象,让人摸不着头脑,更严重的是死机并不能轻易复现的情况,下面我就说一些我在开发过程中遇到过的情况。变量溢出或变量未初始化这里的变量溢出指的是
    发表于 11-22 06:08

    如何解决单片机死机的问题

    口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。四、复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。综上所述:设计电路时,应该注意:1.电源稳定2.IO保护3.振荡器PCB布线要注意4.复位电路设计和PCB布线5.
    发表于 11-24 08:03

    造成单片机死机的原因都有哪些?如何避免

    一直以来有个问题就是如何保整单片机死机的问题困扰着我,我在想造成单片机死机的原因都有哪些?如何避免?目前我能想到就下面这几条注意堆栈野指针
    发表于 07-27 11:03

    单片机高温死机是怎么回事?

    最近遇到一个问题,单片机用的是16M有源晶振,在高温50度左右的时候死机了,测试电源3.3V纹波为25mV左右,有源晶振正常震荡,且在死机瞬间,晶振波形与电源波形未有抖动。检测有无死机
    发表于 10-27 07:03