原创 单片机软件三重监视抗干扰技术

2009-8-12 19:17 2397 5 5 分类: MCU/ 嵌入式
  MCS—51使便
`d2{,a(P7p A!w?sm1  电子园51单片机学习网'hHxd a!D;_
  应用于工业过程控制和智能化仪器仪表的单片机,由于现场条件往往十分恶劣,不可避免地会受到各种各样的电磁干扰。当串入系统的干扰作用于单片机内部的CPU部件时,后果更加严重,将导致系统失控。最典型的失控故障是破坏程序计数器PC的状态,导致程序在地址空间内“乱飞”,或者陷入“死循环”。因此,尽可能早地发现程序失控,并采取相应的补救措施,是单片机应用系统抗干扰设计的重要内容。电子园51单片机学习网B4Ov Z'j g n
  使程序从“乱飞”状态纳入正轨的方法称为程序拦截技术,包括指令冗余技术、软件陷阱技术等。使程序摆脱“死循环”,通常多采用硬件电路实现的监视技术,又称“看门狗”技术(Watchdog)。常见的硬件“看门狗”电路有单稳态型“看门狗”电路、计数器型“看门狗”电路、微处理器监控专用芯片等。上述的抗干扰方法可参阅有关资料文献。本文将讨论由软件实现的“看门狗”技术。
|Wi-Uo1  由硬件电路实现的“看门狗”技术,可以有效地克服主程序或中断服务程序由于陷入“死循环”而带来的不良后果。但在工业应用当中,严重的干扰有时会破坏中断方式控制字,导致中断关闭,这时一般的硬件“看门狗”将不能使中断恢复正常。依靠软件进行多重监视,可以弥补上述不足。
n.F(E-qX1  软件“看门狗”技术的基本思路是:在主程序中对中断服务程序的运行进行监视;在中断服务程序中对主程序的运行进行监视;采用两个中断实施相互监视,称之谓软件三重监视抗干扰技术。从概率观点,这种相互依存,相互制约的抗干扰措施,将使系统的可靠性大大提高。电子园51单片机学习网&Z4Lg r0lY}'w|
  本文以MCS—51单片机为例,说明软件三重监视的基本原理。系统软件包括主程序、T0定时中断子程序和T1定时中断子程序3部分,将T0设计成高级中断,T1设计成低级中断,从而形成中断嵌套。
&X9M%fW9F/v(~1
+]L#q6`rf c11   电子园51单片机学习网:_ \A:b#d
  主程序流程如图1—1所示。主程序完成系统测控功能的同时,还要监视T0中断服务程序因干扰而引起的中断关闭故障。A0为T0中断服务程序运行状态的观测单元,T0每发生一次中断,A0计数单元少一次中断(T0定时溢出时间小于测控功能模块运行时间),引起A0的变化。在测控功能模块的出口处,将A0值与E0值进行比较,以判断A0是否发生变化。若A0发生变化,说明T0中断运行正常;若A0不变化,说明T0中断关闭,则转到程序入口0000H处,进行出错处理后,程序恢复正常运行。

电子园51单片机学习网%j\F5}|'N?

电子园51单片机学习网"J`4y%^W@3qE*na

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

5@'OL'@ v2F0O1电子园51单片机学习网aTkG"V]~ f }0i

        loop1:MOV   50H, #00H;  清M单元电子园51单片机学习网:o7[9S-vu M2d

电子园51单片机学习网 i%mSOA+}:?#F

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

H0UE,SXPL1

Q"v&US'x;|v*Tq Bj1               …;           测控功能模块

t.~7_c;v;w7G1

y~Ar2hRE!@pa$J1           CLR    C电子园51单片机学习网p Z0~E(e&X/^1P

电子园51单片机学习网8F+dKZ],D)r&d

           MOV    A,     30H

+B/A?%J H1P/U1

Wj t;Z^%IN1           SUBB   A,     40H; 判断A0变化

.L6lFpa(j1电子园51单片机学习网dQE5fD#hg7r|

           JZ     loop电子园51单片机学习网 ?5l*sf Kg d0i

电子园51单片机学习网%`1@ Zg2JwUS

           MOV    30H,   #00H

JeM8K{O[8T1

p$K$b5]7cBJ1         LJMP   loop1

(hPE q7V#eIs;N1

5ij?}su E)B(f+U1  loop:LJMP 0000H电子园51单片机学习网2R,WX-u @
电子园51单片机学习网U7VcmL'g_M-k
2 T1  
dD'y)Bb+{@1
  T1中断程序流程如图2—1所示。T1中断服务程序在完成特定测控功能的同时,还要监视主程序的运行状态。在中断服务程序中设置一个主程序运行计时器M1,T1每中断一次,M便自行加1。M中的数值与T1定时溢出时间之积表示时间值。若由M表示的时间值大于主程序的运行时间,说明主程序因干扰而陷入了“死循环”,T1中断服务程序便修改断点地址,返回0000H,进行出错处理。若M不大于主程序运行时间,说明主程序运行正常,中断服务程序也正常返回。M单元在系统主程序运行中循环清“0”。

aQzFBm&X&xf1

电子园51单片机学习网o]U"j(O.|0C:k
 

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

(216-N)×2×106=2×103电子园51单片机学习网vqDb6p1H)x \,n^5K


  N=64536D=FC18H电子园51单片机学习网0z5h2Q%Y(y8C}


H'U LC`:?pR1电子园51单片机学习网eL!]N`E\)`/`
  若图1—1中主程序的最大循环时间为200ms,则图2—1中的T取值应不小于64H,可取68H。A1为T1中断程序运行状态监测单元,取内RAM 31H单元,M仍取50H单元,60H、61H为暂存单元,则T1中断监视程序如下: 电子园51单片机学习网n'{L7sk _ T^ z/_


.HN ~ c/pI1        PUSH   PSW            ;保护现场

8{,{7k"SL1

$i OL3_eX1    PUSH    ACC

+g@zu f2i2W A1电子园51单片机学习网3Y/~z^I

    MOV     TH1,  #0FCH    ;T1置初值电子园51单片机学习网 ?)\)y~Z8f;~ O


)dn)T1~9ay ^G&n;v1    MOV     TL1,  #18H电子园51单片机学习网,L6M:l'JP`9D

电子园51单片机学习网-m&dW/A |w4U/c,Pn/D*L

    INC     31H              ;A1单元加1

3bI']4lz_;h Ko1

D7XXK ?c`"C1    INC     50H                  ;M单元加1电子园51单片机学习网M)Dt7Hqt8C

电子园51单片机学习网;Y+x(|T,u"}.}@9o

    CLR      C电子园51单片机学习网[O%_QFy~1Y2?;@


[ ]9o8Vdoc1    MOV      A,#68H

p#q"H7\4P2b VZT&g3q1

0S5_"{*\1F8l{1    SUBB     A,50H              ;T≥M?

,c5VvUe6?1电子园51单片机学习网-E\vh DZ&q

    JC       loop 

Bc:ZZ&z1gb6sa1

oz9STiW*} kWt1      …                   ;中断测控程序

7sIq _3L&b1电子园51单片机学习网6I*V4VH*D'YQUu

    POP     ACC                  ;恢复现场电子园51单片机学习网qs T;Q0T]J2|:d

电子园51单片机学习网N"{y R YM{YAZ

    POP     PSW

#Z ~~-A qX ?n1

$OUk-XWm.U2?1  RETI                        ;返回

;ESsPz'ET4G e1电子园51单片机学习网uG;lh'Y%k8T

loop:POP  ACC            ;恢复现场

/UU1Vl FYl._3M1

QK\~/be1    POP     PSW

,C,| f_5Ml&Rn5B'^1

Z"Go%RWVu$P1    POP     60H                  ;原断点弹出

$\^%T k~o#u M1

8[ o1{Z_H1CH|#P1    POP     61H电子园51单片机学习网$RNfJ6fZ;f7E}


f+^?-?"og Pna5[1    MOV     60H,#00H           ;断点修改为0000H电子园51单片机学习网U:E#rf.u"fw(e


Nn,RK6s6J;p C d1    MOV     61H,#00H

+~[.D9U~1_}1电子园51单片机学习网9eFg9p/c^#{o

    PUSH    60H

!NvEd@j1电子园51单片机学习网l V [(pRL VM

    PUSH    61H

YT|X9\CQ!M%C1电子园51单片机学习网?zbm5yo

  RETI    ;返回电子园51单片机学习网q4yfxhE7{

;rI!p'J-m6x/L13 T0  电子园51单片机学习网+m:iW\.LM \5_
  T0中断程序流程如图3—1所示。T0中断的功能是监视T1中断服务程序的运行状态。由于T0中断服务程序较短,因干扰而引起的“死循环”的几率很小,重点考虑中断关闭故障。图3—1中A1、B1为T1中断运行状态观测单元。A1的初值为00H,T1每中断一次,A1便加1,如图2—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中断服务程序一般很短,发生“死循环”的几率很小。电子园51单片机学习网,[KSY3| Jdq


C'D"h|E/|:\:J1

[+RTs:?~1  电子园51单片机学习网 b/Gf;ls{
  设单片机晶振频率为6MHz,T0以工作方式1产生4 ms的定时中断,则T0的计数初值为:

H)S$Ay$R*_6V9s+ed |1

(216-N)×2×106=4×103 电子园51单片机学习网#X3E Z7D*t&O


  N=63536D=F830H

#{G2T x'JJ1电子园51单片机学习网8z/~n.kk#~

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

,K+g H`M[H4f!Eeo6I1

I3F&w2V,lY1    PUSH   PSW     ;保护现场电子园51单片机学习网t8{cJG+l]


-y K&q{*y2U B1    PUSH      ACC

M\jyX4t1

z#S%S V"I rd9Q&[1    MOV       TH0,#0F8H  ;设T0初值

1B,iq_|r%?a1电子园51单片机学习网n0e.\6@0?*i

    MOV       TL0,#30H电子园51单片机学习网(a2rY^\+T`[R

电子园51单片机学习网_ {qP_ZD[

    INC       30H          ;A0加1

,i1~ Pq8e'G;yE#OH1

g&O!?(R%g V7r U1    MOV       A,31H       ;A1单元判0电子园51单片机学习网J-sG:i5B8n

电子园51单片机学习网 Fw)E5iSz+[

    JZ        loop1

gh/\)b*j.z3t|%@$i D`1电子园51单片机学习网 uSj*c)Yo:j!Y%j

    CLR        A       ;清A1、B1单元电子园51单片机学习网)ES \ k4i m/h"[

电子园51单片机学习网1AJ&y'[{s-s6v5_$w

    MOV       31H,A电子园51单片机学习网 Tq7agz"wb ul


I[ D+E2\4V(q6H#S;R-P1    MOV       32H,A电子园51单片机学习网AH\-ybQ l\


)F+W+H;FAD%j M&X1    loop0:POP   ACC         ;恢复现场电子园51单片机学习网cs(z5?o

电子园51单片机学习网B z*]H\2|

           POP   PSW

u%r M3M.L~'aOD1电子园51单片机学习网 kw2}1ft3Z:H

         RETI             ;返回电子园51单片机学习网1aQ8q n#r'p@ I;Z$j N:b

电子园51单片机学习网6p$]+z-P X7m#Qsk

    loop1:INC   32H         ;B1加1

d]*SI&J1电子园51单片机学习网quC+U;T&_ u

           CLR    C

!x0r4lg nM C1电子园51单片机学习网 y8_\(yF+x@

           MOV     A         ,32H;B1≥Q?

[O v8oU I JB1电子园51单片机学习网)D0GH"G*d5n O8` `

           SUBB    A,#05H     

7}+n%\jIv$[1

2WQSMtKpd/_ n+F1           JC      loop0

uJ? S+l0?W5F1

"X;G9];h$Fz)Uo~8J1           POP    ACC    ;恢复现场电子园51单片机学习网vN-kC8}%Q

电子园51单片机学习网a ];N(p1](]H{

           POP     PSW

(] c }2YK T#w U1

mV;UT;u1}1           POP     60H        ;原断点弹出

k ^ l8L\ m1l C]M$^1

qF;g}#z1j[1           POP     61H电子园51单片机学习网9~ r3vn w |6l;g g l'n


3v+v:A_ n6f3[1           MOV     60H,#00H ;修改断点0000H电子园51单片机学习网.WW5W,_b`p


.[6@5Wf3_fP:Q JD2f1           MOV     61H,#00H电子园51单片机学习网 \l]'`C^:Uvmw


:v&L5w0S E cX$k1           PUSH    60H

*G%hR3h1WKHp!d1

3aLOTp[|l1           PUSH    61H电子园51单片机学习网+j8Q5]TkS

电子园51单片机学习网 v,l4@ d3a+L E

         RETI
2p!E|F-d$W1  当系统受到干扰后,主程序可能发生“死循环”,中断服务程序也可能陷入“死循环”,或因中断方式字的破坏而关闭中断。主程序的“死循环”可由T1中断服务程序监视;T1中断服务程序的“死循环”和中断关闭故障由T0中断服务程序监视;T0的中断故障可由主程序监视。由于采取了三重软件监测方法,大大提高了系统运行的可靠性。电子园51单片机学习网3Jt)W$F1|s],w k


 [电子园51单片机学习网}z@h7n#cBT{
[1] 何立民.单片机应用技术选编[M].北京航空航天大学出版社,1998,8.
D+dU8^m+r1[2] 王幸之.8051/8098单片机原理及接口设计[M].兵器工业出版社,1998,1.
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条