在由单片机构成的微型计算机体系中,因为单片机的作业常常会受到来自外界电磁场的搅扰,形成程序的跑飞,而堕入死循环,程序的正常运转被打断,由单片机操控的体系无法持续作业,会形成整个体系的堕入阻滞状况,产生不行意料的成果,所以出于对单片机运转状况进行实时监测的考虑,便产生了一种专门用于监测单片机程序运转状况的芯片,俗称“看门狗”(watchdog)
其效果是使单片机能够在无人状况下完成接连作业,其作业原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚经过程序操控它守时地往看门狗的这个引脚上送入高电平(或低电平),这一程序句子是分散地放在单片机其他操控句子中心的,一旦单片机因为搅扰形成程序跑飞后而堕入某一程序段 进入死循环状况时,写看门狗引脚的程序便不能被履行,这个时分,看门狗电路就会因为得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机产生复位,即程序从程序存储器的开端方位开端履行,这样便完成了单片机的主动复位。
单片机看门狗电路的效果
看门狗的效果: 看门狗守时器是一个计数器,基本功能是在产生软件问题和程序跑飞后使体系重新发动。看门狗计数器正常作业时主动计数,程序流程守时将其复位清零,假如体系在某处卡死或跑飞,该守时器将溢出,并将进入中止。在守时器中止中履行一些复位操作,使体系康复正常的作业状况,即在程序没有正常运转期间,按期复位看门狗以确保所挑选
的守时溢出归零,使处理器重新发动。软件的牢靠性一直是一个要害问题。任何运用软件的人都或许会阅历计算机死机或程序跑飞的问题,这种状况在嵌入式体系中也相同存在。因为单片机的抗搅扰才能有限,在工业现场的仪器仪表中,常会因为电压不稳、电弧搅扰等形成死机。在水表、电表等无人看守的状况下,也会因体系遭受搅扰而无法重启。为了确保体系在搅扰后能主动康复正常,看门狗守时器(Watchdog TImer)的利用是很有价值的。
如今市面上盛行的一些单片机,多嵌有内部WDT,如TI的MSP430系列,Philips的P87XXX和P89XXX系列,Microchip的PIC列,Atmel的AT89SXX系列和Holtek公司的Htxxx系列。可是这些内部看门狗在作业时,多存在必定的差错。一些工程师在规划的过程中,因为疏忽了这一点,导致体系出现异常。MSP430系列单片机是美国德州仪器公司(TI)近几年开发的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概念混合型单片机。在很多单片机系列中,因为它具有极低的功耗、丰厚的片内外设和便利灵敏的开发手法,已成为一颗耀眼的新星。其内部自带看门狗及复位电路,理论上假如程序跑飞,可用看门狗将其复位。但在实际运用过程中,发现看门狗的效果并非满有把握,以下实验证明了这一点。实验电路如图1所示。
实验程序清单:
#include《msp430x12.h》
void main(void){
p1dir l=0x0f; //设置p1.2-.p1.0为输出
for(;;){
volaTIle unsigned int i;
wdtctl=wdtpw+wdtcncl;
//复位wdt
piout==0x0t;
i=5000;
do(i–)
while(i!=0);
}}
上述实验发动后,假如程序正常运转,LED会闪耀。缺省时,MSP430的看门狗是答应状况,所运转的程序会不断地拜访看门狗。理论上,这个体系是不会产生发动失利的,因为即便发动失利,看门狗也应该在数百毫秒内发动,复位整个体系。根据这种思维,对单片机的复位进行测验。K2断开,用K1接连产生。Reset信号,测验看门狗使体系重启的成功率。K2闭合,则reset端高电平,理论上K1不能有用产生复位脉冲,调查看门狗是否起效果。
实验成果与剖析
实验成果如下:K2断开,接连开关K1,上电重启体系,均匀155次失利1次(LED不闪),即看门狗失效概率0.6%;K2闭合,接连开关K1,均匀18次失利1次(LED不闪),且一旦失利,将接连失利下去,看门狗无功率占到了约5.5%。别的,当选用相同具有内置看门狗的其他系列单片机代替实验中的MSP430,发动程序段作相应修改时,实验成果仍大致相同,这说明具有内置看门狗的单片机面对的问题是相同的。经剖析或许有如下原因:
①因为看门狗的时钟不独立,计数时钟与体系为同一分频链路,因而看门狗不能在体系出现问题时有用运作。
②因为时钟可用软件设置,发动失利时,开机时钟或许处于空档,没有时钟看门狗不能收效。
③有些看门狗需求用软件设置或发动,因而发动失利后,初始化程序没有激活,CPU或许跳转到随机代码,使看门狗被制止。这样的看门狗是需求有牢靠的上电复位作确保的,因而,从理论上讲,原规划存在着不合理性。根据上述剖析,选用片外看门狗专用芯片TPS3823由独立的分频振荡电路供给计数脉冲。实验电路如图2所示。
上述电路中,TPS3823输出守时溢出信号给Reset端。程序段中,CPU要不断地经过I/O口输出喂狗信号,使看门狗计数器清零。在此电路中重复上述实验中K1、K2的相同动作,体系重启成功率到达100%。
未来的内置看门狗有必要有独立牢靠的时钟。体系上电后,看门狗即为答应状况,无需软件设置,它只能被外部硬件跳线或内部熔丝(fuse)所制止。现在,假如要求规划牢靠性较高的嵌入式体系,外置看门狗是有必要考虑的。内置看门狗的另一问题是体系复位后,程序应判别是由Reset端正常上电复位,仍是程序跑飞看门狗所造成的,由此确认现场数据是否应该保存。这也是在看门狗使用中所应考虑的。
看门狗体系规划技巧
外部看门狗是嵌入式体系工程师东西箱里重要且要害的东西,但是为了捕捉到毛病,且防备毛病的产生,看们狗有必要规划妥当。因而规划一个看门狗体系时应考虑以下5个诀窍。
技巧1—监测心跳