单片机死机问题


振荡器停止振荡


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



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语句的位置,可保证出现死机的概率根低。在水轮发电机组微机控制装置中的对比应用证明了这一点[3]。


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


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


简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括IC卡电能表、复费率电能表、多功能电能表[4])中采用了定时复位看门狗,每1秒让CPU强行复位,迄今数十万电表运行了近五年,无一例死机报告。

> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

可以搜集一下单片机开发板电路,试着分析一下各部分的功能。单片机开发板中,常见的硬件电路有LED驱动电路、按键输入电路、继电器控制电路、蜂鸣器电路、数码管电路等。可以分析一下LED是以灌电流还是拉电流的方式驱动的、按键电路用上拉还是下拉实现的、继电器用NPN三极管还是PNP三极管实现的、数码管是用什么芯片驱动的。遇到不懂的地方多在网上查一下资料,最好能问一下周边的朋友同学。

生成海报
点赞 0

钟, 广林

我还没有学会写个人说明!

相关推荐

常见的复位电路整理【图】

复位形式 a. 系统启动时的上电复位 b. 系统运行时的开关(按键)复位 复位电路的构成 复位电路一般由简单的RC电路构成 •电阻: 无用功耗 •电容: 复位时间(充放电时间) •反相器:波形整形 也可使用较复杂但功能更完善的电路 基本的 RC 复位电路: 增加放电回路的