位置:51电子网 » 技术资料 » 测试测量

MSP430单片机中的WDT研究

发布时间:2008/6/3 0:00:00 访问次数:538

        

    

    

    引 言

    软件的可靠性一直是一个关键问题。任何使用软件的人都可能会经历计算机死机或程序跑飞的问题,这种情况在嵌入式系统中也同样存在。由于单片机的抗干扰能力有限,在工业现场的仪器仪表中,常会由于电压不稳、电弧干扰等造成死机。在水表、电表等无人看守的情况下,也会因系统遭受干扰而无法重启。为了保证系统在干扰后能自动恢复正常,看门狗定时器(watchdog timer)的利用是很有价值的。

    1 看门狗的作用

    看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。

    2 看门狗问题及相关实验

    现今市面上流行的一些单片机,多嵌有内部wdt,如ti的msp430系列,philips的p87xxx和p89xxx系列,microchip的pic列,atmel的at89sxx系列和holtek公司的htxxx系列。但是这些内部看门狗在工作时,多存在一定的误差。一些工程师在设计的过程中,由于忽略了这一点,导致系统出现异常。msp430系列单片机是美国德州仪器公司(ti)近几年开发的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概念混合型单片机。在众多单片机系列中,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为一颗耀眼的新星。其内部自带看门狗及复位电路,理论上如果程序跑飞,可用看门狗将其复位。但在实际使用过程中,发现看门狗的作用并非万无一失,以下实验证明了这一点。

    实验电路如图1所示。

    

    

    实验程序清单:

    #include

    void main(void){

    p1dir l=oxof; //设置p1.2~p1.o为输出

    for(;;){

    volatile unsigned int i;

    wdtctl=wdtpw+ wdtcntcl;

    //复位wdt计数器

    piout==oxot; //p1.0~p1.2相互异或

    i=5000; //延时

    d0(i--);

    while(i!=o);

    }

    }

    上述实验启动后,如果程序正常运行,led会闪烁。缺省时,msp430的看门狗是允许状态,所运行的程序会不断地访问看门狗。理论上,这个系统是不会发生启动失败的,因为即使启动失败,看门狗也应该在数百毫秒内启动,复位整个系统。基于这种思想,对单片机的复位进行测试。k2断开,用k1连续产生。reset信号,测试看门狗使系统重启的成功率。k2闭合,则reset端高电平,理论上k1不能有效产生复位脉冲,观察看门狗是否起作用。

    3 实验结果与分析

    实验结果如下:k2断开,连续开关k1,上电重启系统,平均155次失败1次(led不闪),即看门狗失效概率0.6%;k2闭合,连续开关k1,平均18次失败1次(led不闪),且一旦失败,将连续失败下去,看门狗无效率占到了约5.5%。

    另外,当采用同样具有内置看门狗的其他系列单片机替代实验中的msp430,启动程序段作相应修改时,实验结果仍大致相同,这说明具有内置看门狗的单片机面临的问题是相同的。经分析可能有如下原因:

    ①由于看门狗的时钟不独立,计数时钟与系统为同一分频链路,因此看门狗不能在系统出现问题时有效运作。

    ②由于时钟可用软件设置,启动失败时,开机时钟可能处于空档,没有时钟看门狗不能生效。

    ③有些看门狗需要用软件设置或启动,因此启动失败后,初始化程序没有激活,cpu可能跳转到随机代码,使看门狗被禁止。这样的看门狗是需要有可靠的上电复位作保证的,因此,从理论上讲,原设计存在着不合理性。基于上述分析,采用片外看门狗专用芯片tps3823由独立的分频振荡电路提供计数脉冲。实验电路如图2所示。

    

    

        

    

    

    引 言

    软件的可靠性一直是一个关键问题。任何使用软件的人都可能会经历计算机死机或程序跑飞的问题,这种情况在嵌入式系统中也同样存在。由于单片机的抗干扰能力有限,在工业现场的仪器仪表中,常会由于电压不稳、电弧干扰等造成死机。在水表、电表等无人看守的情况下,也会因系统遭受干扰而无法重启。为了保证系统在干扰后能自动恢复正常,看门狗定时器(watchdog timer)的利用是很有价值的。

    1 看门狗的作用

    看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。

    2 看门狗问题及相关实验

    现今市面上流行的一些单片机,多嵌有内部wdt,如ti的msp430系列,philips的p87xxx和p89xxx系列,microchip的pic列,atmel的at89sxx系列和holtek公司的htxxx系列。但是这些内部看门狗在工作时,多存在一定的误差。一些工程师在设计的过程中,由于忽略了这一点,导致系统出现异常。msp430系列单片机是美国德州仪器公司(ti)近几年开发的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概念混合型单片机。在众多单片机系列中,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为一颗耀眼的新星。其内部自带看门狗及复位电路,理论上如果程序跑飞,可用看门狗将其复位。但在实际使用过程中,发现看门狗的作用并非万无一失,以下实验证明了这一点。

    实验电路如图1所示。

    

    

    实验程序清单:

    #include

    void main(void){

    p1dir l=oxof; //设置p1.2~p1.o为输出

    for(;;){

    volatile unsigned int i;

    wdtctl=wdtpw+ wdtcntcl;

    //复位wdt计数器

    piout==oxot; //p1.0~p1.2相互异或

    i=5000; //延时

    d0(i--);

    while(i!=o);

    }

    }

    上述实验启动后,如果程序正常运行,led会闪烁。缺省时,msp430的看门狗是允许状态,所运行的程序会不断地访问看门狗。理论上,这个系统是不会发生启动失败的,因为即使启动失败,看门狗也应该在数百毫秒内启动,复位整个系统。基于这种思想,对单片机的复位进行测试。k2断开,用k1连续产生。reset信号,测试看门狗使系统重启的成功率。k2闭合,则reset端高电平,理论上k1不能有效产生复位脉冲,观察看门狗是否起作用。

    3 实验结果与分析

    实验结果如下:k2断开,连续开关k1,上电重启系统,平均155次失败1次(led不闪),即看门狗失效概率0.6%;k2闭合,连续开关k1,平均18次失败1次(led不闪),且一旦失败,将连续失败下去,看门狗无效率占到了约5.5%。

    另外,当采用同样具有内置看门狗的其他系列单片机替代实验中的msp430,启动程序段作相应修改时,实验结果仍大致相同,这说明具有内置看门狗的单片机面临的问题是相同的。经分析可能有如下原因:

    ①由于看门狗的时钟不独立,计数时钟与系统为同一分频链路,因此看门狗不能在系统出现问题时有效运作。

    ②由于时钟可用软件设置,启动失败时,开机时钟可能处于空档,没有时钟看门狗不能生效。

    ③有些看门狗需要用软件设置或启动,因此启动失败后,初始化程序没有激活,cpu可能跳转到随机代码,使看门狗被禁止。这样的看门狗是需要有可靠的上电复位作保证的,因此,从理论上讲,原设计存在着不合理性。基于上述分析,采用片外看门狗专用芯片tps3823由独立的分频振荡电路提供计数脉冲。实验电路如图2所示。

    

    

相关IC型号

热门点击

 

推荐技术资料

音频变压器DIY
    笔者在本刊今年第六期上着重介绍了“四夹三”音频变压器的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!