单片机看门狗.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种新的单片机“看门狗”电路软件设计方法 单片机系统应用 2006-12-06 10:21:42 阅读33 评论0 字号:大中小 一种新的单片机“看门狗”电路软件设计方法 摘要:单片机控制系统“看门狗”电路的有效性,除硬件电路的可靠性以外,主要取决于如何正确给“看门狗”电路进行复位(即“喂狗”),文章在介绍了一种采用MAX706和89C52构成的硬件电路的基础上,给出了一种新颖可靠的“看门狗”电路软件设计方法。 关键词:抗干扰? 单片机? 看门狗? MAX706? 89C52 ??? 随着MCS-51系列单片机的发展,其芯片价格在不断下降,但同时也带来了单片机芯片的抗干扰问题,该问题可能导致一些智能型仪器仪表单片机工业控制系统发生“死机”。笔者通过近几年的设计实践及不断试验,总结了一套可靠的“看门狗”硬件电路及软件设计方法。由于一些专业期刊曾经刊登过许多关于“看门狗” 硬件电路构成的文章,同时也详细的关于“看门狗”电路非正常失效故障原因的分析及针对性软件设计技巧[1],本文给出了一个采用MAX706和89C52 构成的“看门狗”硬件电路,并且从新的角度说明了如何确保“看门狗”电路的正常工作,同时给出了它的软件设计方法。 1 “看门狗”硬件电路简述 ??? 现以MAX706监控电路为例(见图1)来说明“看门狗”硬件电路的工作过程,我们知道,MAX706是一种性能优良的低功耗CMOS监控电路芯片,其内部电路由上电复位、可重触发“看门狗”定时器及电压比较器等组成[2]。MAX706只要在1.6秒时间内检测到WCI引脚有高低电平跳变信号,则“看门狗”定时器清零并重新开始计时;若超出1.6秒后,WCI引脚仍无高低电平跳变信号,则“看门狗”定时器溢出,WDO引脚输出低电平,进而触发MR手动复位引脚,使MAC706复位,从而使“看门狗”定时器清零并重新开始计时,WDO引脚输出高电平,MAX706的RST复位输出引脚输出大约200毫秒宽度的低电平脉冲,使单片机控制系统可靠复位,重新投入正常运行。 2 “看门狗”电路软件设计方法 ??? 以往的“看门狗”电路复位指令(即“喂狗”)一般总是插入在主程序中,而且“喂狗”指令一般是脉冲式,可以连续用两条取反指令(如CPL P1.0)。这是因为一般情况下,程序跑飞或者陷入“死循环”时,中断功能可能不受影响,CPU仍能象正常运行时一样响应和执行中断子程序。这时如果中断子程序中插有“喂狗”指令,则“看门狗”定时器始终处于正常无溢出状态,无法对已经混乱的微机系统重新启动以投入正常运转状态。 ??? 在主程序中适当插入“喂狗”指令,大多数场合的单片机系统都能够比较可靠地工作。但是有一种特殊情况,即中断响应功能已经失效,而主程序仍然能够正常运行,这时“看门狗”电路对恢复单片机系统正常工作时无能为力的。例如:当程序正在执行中断子程序时,系统突然受到强烈干扰,程序跑飞,而且PC指针刚好落在主程序的指令字节上,堆栈也不溢出,使主程序能够继续正常运行。这时“看门狗”的“喂狗”动作正常,而中断再也不法响应了。这时因为在MCS-51的中断系统中有两个不可寻址的优先级状态触发器,分别指标两级中断响应状态。当CPU响应中断时,首先置位相应的优先级状态触发器(该触发器能指出CPU正在处理的中断优先级别),这时会屏蔽掉同级别的所有中断申请,直到执行RETI指令时,才由CPU硬件清零该优先级状态触发器,从而使以后的中断请求能被正常地响应[3]。如果响应中断后而不执行RETI指令,那么同级别中断申请就不会被响应了。 ??? 当然,象上述这种情况是比较少见的。大多数情况下,程序跑飞后都会使PC指针越出有效程序区,造成“死机”。这时“看门狗”就起作用了。在大多数系统中,中断子程序执行的时间占总运行时间的百分比都非常小,而在执行中断程序时,PC指针跑飞越过RETI指令,而主程序又能正常运行的机会就更少。但是如果中断子程序处理数据比较复杂或带有一些函数运算的功能时,则出现这种系统失常的情况就有可能发生了。以前,在笔者设计的智能流量计中就曾经出现过这种现象:键盘显示操作都正常,看起来不象“死机”,但是在设定参数时,数据位该内烁的不闪烁,总流量不会累计上去,显然是T0定时中断系统失效,而主程序仍然在运行,因为“喂狗”指令插在主程序中。那么,针对这种情形,有没有彻底解决的方法呢?“喂狗”指令直接插在中断子程序中是不合适的,而单独插在主程序中又显然是不够的。笔者通过仔细推敲后,将“喂狗”指令分解开来,取反指令变成置位和清零两种指令(即SETB P1.0和CLR P1.0),将置位指令插在主程序中,而将清零指令插在T0中断子程序中,这样将两者联系起来,缺一不可,无论主程序运行失效,还是T0中断请求失效,都不能完成完整的“喂狗”指令,造成“看门狗”动作,

文档评论(0)

wangshirufeng + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档