电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 单片机 > 详细信息
单片机:单片机软件三重监视抗干扰技术
来源: 王雷 王闪 王幸之   时间: 2007-9-26 14:55:03    

  摘  本文以MCS—51单片机为例,说明了主程序、中断服务程序相互监视的抗干扰方法。该方法使用方便,编程灵活,大大提高了单片机应用系统的抗干扰性能。
  关 单片机;干扰 


  应用于工业过程控制和智能化仪器仪表的单片机,由于现场条件往往十分恶劣,不可避免地会受到各种各样的电磁干扰。当串入系统的干扰作用于单片机内部的CPU部件时,后果更加严重,将导致系统失控。最典型的失控故障是破坏程序计数器PC的状态,导致程序在地址空间内“乱飞”,或者陷入“死循环”。因此,尽可能早地发现程序失控,并采取相应的补救措施,是单片机应用系统抗干扰设计的重要内容。


  使程序从“乱飞”状态纳入正轨的方法称为程序拦截技术,包括指令冗余技术、软件陷阱技术等。使程序摆脱“死循环”,通常多采用硬件电路实现的监视技术,又称“看门狗”技术(Watchdog)。常见的硬件“看门狗”电路有单稳态型“看门狗”电路、计数器型“看门狗”电路、微处理器监控专用芯片等。上述的抗干扰方法可参阅有关资料文献。本文将讨论由软件实现的“看门狗”技术。


  由硬件电路实现的“看门狗”技术,可以有效地克服主程序或中断服务程序由于陷入“死循环”而带来的不良后果。但在工业应用当中,严重的干扰有时会破坏中断方式控制字,导致中断关闭,这时一般的硬件“看门狗”将不能使中断恢复正常。依靠软件进行多重监视,可以弥补上述不足。


  软件“看门狗”技术的基本思路是:在主程序中对中断服务程序的运行进行监视;在中断服务程序中对主程序的运行进行监视;采用两个中断实施相互监视,称之谓软件三重监视抗干扰技术。从概率观点,这种相互依存,相互制约的抗干扰措施,将使系统的可靠性大大提高。


  本文以MCS—51单片机为例,说明软件三重监视的基本原理。系统软件包括主程序、T0定时中断子程序和T1定时中断子程序3部分,将T0设计成高级中断,T1设计成低级中断,从而形成中断嵌套。

1   
  主程序完成系统测控功能的同时,还要监视T0中断服务程序因干扰而引起的中断关闭故障。A0为T0中断服务程序运行状态的观测单元,T0每发生一次中断,A0计数单元少一次中断(T0定时溢出时间小于测控功能模块运行时间),引起A0的变化。在测控功能模块的出口处,将A0值与E0值进行比较,以判断A0是否发生变化。若A0发生变化,说明T0中断运行正常;若A0不变化,说明T0中断关闭,则转到程序入口0000H处,进行出错处理后,程序恢复正常运行。

 

  设A0、E0、M计数单元分别为内RAM中的30H、40H和50H单元,监视程序如下:

        loop1:MOV   50H, #00H;  清M单元

                      MOV   40H,   30H ;暂存A0单元 

               …;           测控功能模块

           CLR    C

           MOV    A,     30H

           SUBB   A,     40H; 判断A0变化

           JZ     loop

           MOV    30H,   #00H

         LJMP   loop1

  loop:LJMP 0000H

2 T1  
  T1中断服务程序在完成特定测控功能的同时,还要监视主程序的运行状态。在中断服务程序中设置一个主程序运行计时器M1,T1每中断一次,M便自行加1。M中的数值与T1定时溢出时间之积表示时间值。若由M表示的时间值大于主程序的运行时间,说明主程序因干扰而陷入了“死循环”,T1中断服务程序便修改断点地址,返回0000H,进行出错处理。若M不大于主程序运行时间,说明主程序运行正常,中断服务程序也正常返回。M单元在系统主程序运行中循环清“0”。

 

  设单片机晶振频率为6MHz,T1以工作方式1产生2ms的定时中断,则T1的计数初值为:

(216-N)×2×106=2×103

  N=64536D=FC18H


  主程序的最大循环时间为200ms,T取值应不小于64H,可取68H。A1为T1中断程序运行状态监测单元,取内RAM 31H单元,M仍取50H单元,60H、61H为暂存单元,则T1中断监视程序如下: 

        PUSH   PSW            ;保护现场

    PUSH    ACC

    MOV     TH1,  #0FCH    ;T1置初值

    MOV     TL1,  #18H

    INC     31H              ;A1单元加1

    INC     50H                  ;M单元加1

    CLR      C

    MOV      A,#68H

    SUBB     A,50H              ;T≥M?

    JC       loop 

      …                   ;中断测控程序

    POP     ACC                  ;恢复现场

    POP     PSW

  RETI                        ;返回

loop:POP  ACC            ;恢复现场

    POP     PSW

    POP     60H                  ;原断点弹出

    POP     61H

    MOV     60H,#00H           ;断点修改为0000H

    MOV     61H,#00H

    PUSH    60H

    PUSH    61H

  RETI    ;返回

3 T0  
  T0中断的功能是监视T1中断服务程序的运行状态。由于T0中断服务程序较短,因干扰而引起的“死循环”的几率很小,重点考虑中断关闭故障。A1、B1为T1中断运行状态观测单元。A1的初值为00H,T1每中断一次,A1便加1,T0中断服务程序中若检测到A1>0,说明T1中断正常;若A1=0,则B1单元加1(B1的初值为00H),若B1的累加值大于Q,说明T1中断失效,失效时间为T0定时溢出时间与Q值之积。例如:T0的定时溢出时间为4ms,T1的定时溢出时间为2 ms,当Q=5时,说明允许T1的失效时间为20 ms,在这样长的时间内,T1并没有发生中断,说明T1中断发生了故障。由于T0中断级别高于T1中断级别,所以T1的任何故障(如死循环、中断关闭)都会由T0检测出来。T0中断服务程序一般很短,发生“死循环”的几率很小。

 

  
  设单片机晶振频率为6MHz,T0以工作方式1产生4 ms的定时中断,则T0的计数初值为:

(216-N)×2×106=4×103 

  N=63536D=F830H

  设计数单元A0、A1、B1分别为内RAM 30H、31H、32H,Q=5,60H、61H为暂存单元,则T0中断监视程序如下: 

    PUSH   PSW     ;保护现场

    PUSH      ACC

    MOV       TH0,#0F8H  ;设T0初值

    MOV       TL0,#30H

    INC       30H          ;A0加1

    MOV       A,31H       ;A1单元判0

    JZ        loop1

    CLR        A       ;清A1、B1单元

    MOV       31H,A

    MOV       32H,A

    loop0:POP   ACC         ;恢复现场

           POP   PSW

         RETI             ;返回

    loop1:INC   32H         ;B1加1

           CLR    C

           MOV     A         ,32H;B1≥Q?

           SUBB    A,#05H     

           JC      loop0

           POP    ACC    ;恢复现场

           POP     PSW

           POP     60H        ;原断点弹出

           POP     61H

           MOV     60H,#00H ;修改断点0000H

           MOV     61H,#00H

           PUSH    60H

           PUSH    61H

         RETI
  当系统受到干扰后,主程序可能发生“死循环”,中断服务程序也可能陷入“死循环”,或因中断方式字的破坏而关闭中断。主程序的“死循环”可由T1中断服务程序监视;T1中断服务程序的“死循环”和中断关闭故障由T0中断服务程序监视;T0的中断故障可由主程序监视。由于采取了三重软件监测方法,大大提高了系统运行的可靠性。

相关信息
发表评论
打印本页 关闭本页
Watchdog在Philips 8XC552系列单片机系统中的应用
  1 引言     Philips公司的8XC552单片机以其体积小、功能强、价格低等优势而广泛地使用在工业控制、DCS控制和智能仪器等领域。笔者在智能配电监测仪的研制过程中,虽然采取了相应的抗干扰措施,但由于工业现场环境中电磁场、电网尖峰、谐波、浪涌及雷电辐射等影响,仍有可能出现程序死循环、跑飞等失控现象。为此,笔者采用Watchdog技术保证了系统的正常运行,通常Watchdog技术在单片...
>>详细内容
Watchdog在Philips 8XC552 系统中的应用
  1 引言   Philips公司的8XC552单片机以其体积小、功能强、价格低等优势而广泛地使用在工业控制、DCS控制和智能仪器等领域。笔者在智能配电监测仪的研制过程中,虽然采取了相应的抗干扰措施,但由于工业现场环境中电磁场、电网尖峰、谐波、浪涌及雷电辐射等影响,仍有可能出现程序死循环、跑飞等失控现象。为此,笔者采用Watchdog技术保证了系统的正常运行,通常Watchdog技术在单片机应...
>>详细内容
Watchdog在8XC552系列单片机系统中应用
  1 引言   Philips公司的8XC552单片机以其体积小、功能强、价格低等优势而广泛地使用在工业控制、DCS控制和智能仪器等领域。笔者在智能配电监测仪的研制过程中,虽然采取了相应的抗干扰措施,但由于工业现场环境中电磁场、电网尖峰、谐波、浪涌及雷电辐射等影响,仍有可能出现程序死循环、跑飞等失控现象。为此,笔者采用Watchdog技术保证了系统的正常运行,通常Watchdog技术在单片机应...
>>详细内容
什么是看门狗(watchdog)
    什么是看门狗(watchdog)   看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。   工作原理:在系...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com