当前位置:首页 > 单片机 > 单片机
[导读]前面几项抗干扰措施都是针对I/O通道而言的。若干扰信号还未作用到CPU本身,则CPU还能正确地执行各种抗干扰程序;若干扰信号已经通过某种途径作用到CPU上,则CPU就不能按正常状态执行程序,从而引起混乱,这就是通常所说的程序“跑飞”。程序“跑飞”后使其恢复正常最简单的方法是让CPU复位,让程序从头开始重新运行。这种方法虽然简单,但需要人的参与,而且复位不及时。人工复位一般是在整个系统已经瘫痪,无计可施的情况下才不得已而为之的。因此在进行软件设计时就要考虑到万一程序“跑

一、程序“跑飞”

前面几项抗干扰措施都是针对I/O通道而言的。若干扰信号还未作用到CPU本身,则CPU还能正确地执行各种抗干扰程序;若干扰信号已经通过某种途径作用到CPU上,则CPU就不能按正常状态执行程序,从而引起混乱,这就是通常所说的程序“跑飞”。程序“跑飞”后使其恢复正常最简单的方法是让CPU复位,让程序从头开始重新运行。这种方法虽然简单,但需要人的参与,而且复位不及时。人工复位一般是在整个系统已经瘫痪,无计可施的情况下才不得已而为之的。因此在进行软件设计时就要考虑到万一程序“跑

第9章单片机系统的抗干扰技术165

飞”,应让其能够自动恢复到正常状态下运行。

二、指令冗余

程序“跑飞”后往往将一些操作数当作指令码来执行,从而引起整个程序的混乱。采用“指令冗余”是使“跑飞”的程序恢复正常的一种措施。所谓“指令冗余”,就是在一些关键的地方人为地插入一些单字节的空操作指令NOP。当程序“跑飞”到某条单字节指令上时,就不会发生将操作数当成指令来执行的错误。对于MCS 51单片机来说,所有的指令都不会超过3个字节,因此在某条指令前面插入两条NOP指令,则该条指令就不会被前面冲下来的失控程序拆散,而会得到正确的执行,从而使程序重新纳入轨道。通常是在一些对程序的流向起关键作用的指令前插入两条NOP指令,这些指令有RET、RETI、ACALL、LCALL、SJMP、AJMP、JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNZ、DJNZ等。在某些对系统工作状态至关重要的指令(如SETBEA之类)前也可插入两条NOP指令,以保证被正确执行。值得注意的是,在一个程序中“指令冗余”不能过多,否则会降低程序的执行效率。

三、软件陷阱

采用“指令冗余”,使“跑飞”的程序恢复正常是有条件的,首先“跑飞”程序必须落到程序区,其次必须执行到所设置的冗余指令。如果“跑飞”的程序落到非程序区(如EPROM中未用完的空间或某些数据表格区等),或在执行到冗余指令前已经形成一个死循环,则“指令冗余”措施就不能使“跑飞”的程序恢复正常了。这时可采用另一个抗干扰措施,即“软件陷阱”。“软件陷阱”是一条引导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门处理错误的程序。假设这段处理错误的程序入口地址为ERR,则下面三条指令即组成一个“软件陷阱”:

NOP

NOP

LJMP ERR

“软件陷阱”一般安排在下列四种地方。

1.未使用的中断向量区

MCS 51单片机的中断向量区为0003H~002FH,如果系统程序未使用完全部中断向量区,则可在剩余的中断向量区安排“软件陷阱”,以便能捕捉到错误的中断。如某系统使用了两个外部中断INT0、INT1和一个定时器溢出中断T0,它们的中断服务子程序入口地址分别为FUINT0、FUINT1和FUT0,即可按下面的方式来设置中断向量区:

2.未使用的大片EPROM空间

程序一般都不会占用EPROM芯片的全部空间,对于剩余未编程的EPROM空间,一般都维持原状,即其内容为0FFH。0FFH对于MCS 51单片机的指令系统来说是一条单字节的指令:MOV R7,A。如果程序“跑飞”到这一区域,则将顺利向后执行,不再跳跃(除非又受到新的干扰)。因此在这段区域内每隔一段地址设一个陷阱,就一定能捕捉到“跑飞”的程序。

3.表格

有两种表格:一类是数据表格,供MOVCA,@A+PC指令或MOVCA,@A+DPTR指令使用,其内容完全不是指令。另一类是散转表格,供JMP@A+DPTR指令使用,其内容为一系列的3字节指令LJMP或2字节指令AJMP。由于表格的内容与检索值有一一对应的关系,在表格中间安排陷阱会破坏其连续性和对应关系,因此只能在表格的最后安排陷阱。如果表格区较长,则安排在最后的陷阱不能保证一定能捕捉“跑飞”来的程序,有可能在中途再次“跑飞”,这时只能指望别处的陷阱或冗余指令来捕捉。

4.程序区

程序区是由一系列的指令构成的,不能在这些指令中间任意安排陷阱,否则会破坏正常的程序流程。但是,在这些指令中间常常有一些断点,正常的程序执行到断点处就不再往下执行了,这类指令有LJMP、SJMP、AJMP、RET、RETI,这时PC的值应发生正常跳变。如果在这些地方设置陷阱就有可能捕捉到“跑飞”的程序。例如,对一个累加器A的内容的正、负和零的情况进行三分支的程序,软件陷阱安排如下:

由于软件陷阱都安排在正常程序执行不到的地方,故不会影响程序的执行效率。在EPROM容量允许的条件下,这种软件陷阱多一些为好。

四、WATCHDOG

如果“跑飞”的程序落到一个临时构成的死循环中,冗余指令和软件陷阱都将无能为力,这时可采取WATCHDOG(俗称“看门狗”)措施。

WATCHDOG有如下特性:

(1)本身能独立工作,基本上不依赖于CPU。CPU只在一个固定的时间间隔内与之打一次交道,表明整个系统“目前尚属正常”。

(2)当CPU落入死循环后,能及时发现并使整个系统复位。

在8096系列单片机和增强型8051系列单片机中,已将该系统做入芯片里,使用起来很方便。而在普通型8051系列单片机系统中,必须由用户自己建立。如果要达到WATCHDOG的真正目标,该系统必须包含一定的硬件电路,它完全独立于CPU之外。如果为了简化电路,也可采用纯软件的WATCHDOG系统。

WATCHDOG硬件电路为一独立于CPU之外的单稳部件,可用单稳电路构成,也可用自带脉冲源的计数器构成。CPU正常工作时每隔一段时间就输出一个脉冲,将单稳系统触发到暂稳态,当暂稳态的持续时间设计得比CPU的触发周期长时,单稳态系统就不能回到稳态。当CPU陷入死循环后,再也不去触发单稳系统了,单稳系统便可顺利返回稳态,利用它返回稳态时输出的信号作为复位信号,便可使CPU退出死循环。

图9.12所示为采用硬件电路组成的WATCHDOG。十六进制计数器对振荡电路发出的脉冲计数,当计到第8个脉冲时Q端变成高电平。单片机执行一个从P1.7输出清零脉冲的固定程序,只要每一次清零脉冲的时间间隔小于8个振荡脉冲周期,计数器就总计不到8,QD端就一直保持低电平。如果CPU受到干扰使程序“跑飞”,就无法执行这个发出清零脉冲的固定程序,计数器就会计数到8,使QD端变成高电平,经微分电路C2、R3输出一个正脉冲到单片机8031的RESET端,使CPU复位。此电路中还包括:上电复位(C1、R1)和人工复位(KA,R1,R2)两部分。

图9.12硬件WATCHDOG电路

也可以用软件程序来形成WATCHDOG。例如,可以采用8031的定时器T0来形成WATCHDOG。将T0的溢出中断设为高优先级中断,其它中断均设置为低优先级中断,若采用6 MHz的时钟,则可用以下程序使T0定时约10ms来形成软件WATCHDOG:

软件WATCHDOG启动后系统工作程序必须每隔小于10 ms的时间执行一次MOV TH0,#0E0H指令,重新设置T0的计数初值。如果程序跑飞后执行不到这条指令,则在10ms之后即会产生一次T0溢出中断,在T0的中断向量区安放一条转移到出错处理程序的指令LJMPERR,由出错处理程序来处理各种善后工作。采用软件WATCHDOG有一个弱点,就是如果“跑飞”的程序使某些操作数变成了修改T0功能的指令,则执行指令后软件WATCHDOG就会失效,因此软件WATCHDOG的可靠性不如硬件高。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭