当前位置:首页 > 单片机 > 单片机
[导读]前面几项抗干扰措施都是针对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的可靠性不如硬件高。

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

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备
关闭