艾巴生活网

您现在的位置是:主页>科技 >内容

科技

单片机看门狗程序举例(一文读懂单片机看门狗电路)

2024-11-10 17:34:51科技帅气的蚂蚁
看门狗是一个计数器,它的基本功能是在软件问题和程序跑偏后重启系统。看门狗正常工作时会自动计数,程序进程会定时将其归零。如果系统在某

单片机看门狗程序举例(一文读懂单片机看门狗电路)

看门狗是一个计数器,它的基本功能是在软件问题和程序跑偏后重启系统。看门狗正常工作时会自动计数,程序进程会定时将其归零。如果系统在某个地方卡住了或者跑了,定时器就会溢出,进入中断。在定时器中断期间,执行一些复位操作,使系统恢复到正常工作状态,即当程序运行不正常时,看门狗如期复位,保证所选定时溢出为零,处理器重新启动。软件的可靠性一直是一个关键问题。任何使用软件的人都可能遇到电脑死机或程序失控的问题,这种问题在嵌入式系统中也存在。由于单片机抗干扰能力有限,在工业现场仪器仪表中,经常因电压不稳和电弧干扰而死机。在水表、电表无人值守的情况下,系统因干扰无法重启。为了保证系统在受到干扰后能自动恢复正常,看门狗定时器的使用是非常有价值的。

现在一些流行的单片机都内嵌了内部WDT,比如TI的MSP430系列,飞利浦的P87XXX和P89XXX系列,Microchip的PIC系列,Atmel的AT89SXX系列,Holtek公司的Htxxx系列。然而,当这些内部看门狗工作时,会出现一些错误。有些工程师在设计过程中忽略了这一点,导致系统异常。MSP430系列单片机是德州仪器公司(TI)近年来开发的新一代单片机。该系列是新概念混合单片机,16位,精简指令集,超低功耗。在众多的单片机系列中,它以极低的功耗、丰富的片上外设和方便灵活的开发手段成为一颗耀眼的新星。它有自己的看门狗和复位电路。理论上来说,如果程序跑了,可以用看门狗复位。但在实际使用过程中,发现看门狗的功能并不是万无一失的,下面的实验证明了这一点。电路如图1所示。

测试过程列表:# include void main(void){ P1 dir l=0x0f;//将p1.2-.p1.0设置为(;){ volatile unsigned int I;wdtctl=wdtpw wdtcncl//reset wdtpiout==0x0t;i=5000做(我- )while(我!=0);}}以上实验开始后,如果程序运行正常,LED会闪烁。默认情况下,MSP430的看门狗是允许的,运行的程序会不断地访问看门狗。理论上这个系统不会启动失败,因为即使失败了,看门狗也要在几百毫秒内启动,重置整个系统。基于这一思想,对单片机的复位进行了测试。K2断开,由K1连续产生。测试看门狗重启系统成功率的复位信号。如果K2闭合,复位端处于高电平。理论上,K1不能有效地产生复位脉冲。观察看门狗是否工作。实验结果及分析实验结果如下:K2关闭,K1持续开启,系统上电重启,平均155次中有一次失效(LED不闪),即看门狗失效概率为0.6%;K2闭合,连续开关K1平均18次失效一次(LED不闪)。一旦失效,就会继续失效,看门狗低效约占5.5%。另外,在实验中用其他系列内置看门狗的单片机代替MSP430,并相应修改启动程序段时,实验结果仍然大致相同,说明内置看门狗的单片机面临同样的问题。经分析,可能有以下原因:由于看门狗时钟不独立,计数时钟与系统处于同一分频链路,当系统出现问题时,看门狗无法有效工作。由于时钟可以通过软件设置,当启动失败时,启动时钟可能处于空档,没有时钟看门狗无法生效。有些看门狗需要软件设置或启动,所以启动失败后,初始化程序没有激活,CPU可能会跳转到随机代码,这样看门狗就被禁止了。这种看门狗需要可靠的上电复位来保证,所以从理论上讲,原来的设计是不合理的。基于以上分析,采用片外看门狗芯片TPS3823,通过独立的分频振荡电路提供计数脉冲。电路如图2所示。

上述电路中的看门狗电路,TPS3823输出定时溢出信号到Reset端。在程序中,CPU不断通过I/O口输出喂狗信号来清零看门狗计数器。在本电路中重复上述测试中K1、K2的相同动作,系统重启成功率将达到100%。

未来的内置看门狗必须有独立可靠的时钟。系统上电后,看门狗处于允许状态,不需要软件设置,只能通过外部硬件跳线或内部熔丝来禁止。目前,如果要求设计高可靠性的嵌入式系统,必须考虑外部看门狗。内置看门狗的另一个问题是,系统复位后,程序要判断是复位端正常上电复位引起的,还是程序脱离看门狗运行引起的,从而决定是否要保留现场数据。看门狗应用也应考虑这一点。