单片机的软件抗干扰_第1页
单片机的软件抗干扰_第2页
单片机的软件抗干扰_第3页
单片机的软件抗干扰_第4页
单片机的软件抗干扰_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机的软件抗干扰

通过软件园的可靠性设计,我们可以尽可能降低干扰系统工作的影响,确保计算机以及时发现错误,并使系统处于正常工作状态,并及时报告。由于软件抗干扰措施具有设计灵活、节省硬件资源、可靠性高等特点,越来越多地受到了广泛重视。本文重点介绍几种常用的软件抗干扰方法。状态检测的处理开机后首先应对单片机系统的硬件及软件状态进行检测,一旦发现不正常,就进行相应的处理。开机自检程序通常应包括对RAM、ROM和I/O口状态等的检测。1.om或om的计算对ROM单元的检测主要是检查ROM单元内容的校验和。所谓ROM的校验和是将ROM的内容逐一相加后得到一个数值,该值便称校验和。ROM单元存储的是程序、常数和表格。一旦程序编写完成,ROM中的内容就确定了,其校验和也就是唯一的。若ROM校验和出错,应给出声光或其他形式的ROM出错提示,等待处理。2.“ffh”,或“ffh”检查RAM读写是否正常,当向RAM单元写“00H”,读出也应为“00H”,再向其写“FFH”,读出也应为“FFH”。如果RAM单元读写出错,也应给出声光或其他形式的RAM出错提示信息,等待处理。同时,在实际使用时应该注意,RAM中重要内容要分区存放,并经常进行比较检查。3.热反应过程i/o口正常确定系统的I/O口在待机时应处的状态之后,检测单片机的I/O口在待机状态下的状态是否正常(是否有短路或开路现象等)。若不正常,应给出出错提示信息,等待处理。4.软件的检测除了对上述单片机内部资源进行检测外,对系统中的其他接口电路,比如扩展的E2PROM、A/D转换电路、外接的传感器电路等,均应通过软件进行检测,确定是否有故障。只有上述各项检查均能正常通过,才可使程序继续执行,否则应给出相应提示信息。指令简余技术在程序的关键部位,人为地插入一些单字节指令,或将有效单字节指令重复执行,称为指令冗余。由于CPU取指令过程是先取操作码,再取操作数,当PC受干扰出现错误,程序便脱离正常轨道“乱飞”(跑飞),当其飞落到某双字节指令,若在取指令时刻恰好落在操作数上,则会误将操作数当作操作码,必将使程序出错。若“飞”落到了三字节指令,则出错机率会更大。采用指令冗余技术通常是在双字节指令和三字节指令后插入两个字节以上的空操作指令NOP。这样,即使乱飞的程序飞落到操作数上,由于空操作指令NOP的存在,就避免了后面的指令被当作操作数来执行,可使程序自动纳入正轨。此外,对系统程序流向起重要作用的指令如RET、RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞的程序纳入正轨,确保这些重要指令的准确执行。方式二:节点驱动,复合检查1)A/D转换信号应采用数字滤波平均法、比较平均法等,防止突发性干扰。2)对输入信号应多次采样干扰信号对单片机的输入端会造成输入信号瞬间采样的误差或误读。要排除干扰的影响,通常应采取重复采样、加权平均的方法。比如对于外部电平采样(如按键),采取软件每隔10ms读一次键盘或连续读若干次,每次读出的数据都相同或者采取表决的方法确认输入的键值。又如在用单稳电路检测温度的系统中采取对单稳电路的脉冲宽度计数,然后查表求温度值的方法。为排除干扰的影响,可以采取三次采样求平均值,也可以采取两次采样、差值小于设定值为有效,然后求平均值的方法(又称软件滤波)。也可对输入的各种开关信号加入“延时除颤”的措施去除抖动。3)对输出端口应进行多次重复刷新由于单片机的I/O口很容易受到外部信号的干扰,也可能会导致输出口的状态改变(出错),因此,在程序中周期性地添加对输出端口的刷新指令,可以明显降低干扰信号对输出端口状态的影响。通常,在程序中指定RAM单元,专用于存储输出端口当时应处的状态,在程序运行过程中再根据这些RAM单元中的内容来多次重复刷新I/O口。4)对外通信应加入奇偶校验或查询表决比较等措施,防止通信出错。错误处理所谓拦截,是指将“跑飞”的程序引向指定的位置,再进行出错处理。通常,用软件陷阱来拦截跑飞的程序时,先要合理设计陷阱,其次要将陷阱安排在适当的位置。1.软件陷阱的定义在程序存储器中总会有一些区域未被使用,如果因干扰信号导致单片机的指令计数器PC值被错置,当程序跳到这些未被使用的程序存储空间时,系统就会出错,程序无法继续运行,冗余指令也无法起作用。软件陷阱是指在程序存储器的未使用的区域中,加上若干条空操作和无条件跳转指令,无条件跳转指令指向程序“跑飞”处理子程序的入口地址(或将捕获到的“跑飞”程序引向复位入口地址0000H)的指令。如果程序出错,跳落到这些未用区域,就会执行无条件跳转指令,转跳到相应的程序出错“跑飞”处理程序。除了程序未用的区域外,还应在某些程序段之间(如子程序之间及一段处理程序完成后)和一页的末尾处插入软件陷阱,效果会更好。通常在EPROM中非程序区插入以下指令构成软件陷阱NOPNOPLJMP0000H2.中断服务程序的设置通常在程序中未使用的EPROM空间填0000020000,最后一条应填入020000。当“跑飞”的程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的内部或外部中断因为干扰信号而开放时,若在对应的中断服务程序中设置软件陷阱,就有可能及时捕获到错误的中断。如某应用系统虽未用到外部中断0,仍应将外部中断0的中断服务程序设置成如下形式NOPNOPRETI返回指令可用“RETI”,也可用“LJMP0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、完善,用“LJMP0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。考虑到程序存储器的容量,设置软件陷阱时,一般在1K空间内有2~3个就可以进行有效地拦截。“跑飞”程序设计程序的“跑飞”处理就是在由软件陷阱检测拦截到“跑飞”的程序后,自动转入到“跑飞”处理程序。由“跑飞”处理程序判断“跑飞”影响的程度,再根据影响程度的不同,决定是进行报警复位还是自动恢复现场。如自动恢复现场,则需根据程序运行状态标记进行。具体如何进行程序“跑飞”处理,要根据控制系统的设计要求进行。1.相关数据正常检测要进行程序“跑飞”处理,就要分清程序“跑飞”所造成的影响,以及程序“跑飞”前运行的进程,这就需要设置相应的标志。RAM数据正常标志是检测RAM区的数据是否已经因程序“跑飞”或受其他干扰而改变。如果RAM区内的数据确因程序“跑飞”或受其他干扰而改变,则系统无法自行恢复到原来的出错地点,只能由人工或由软件复位从头开始执行。要进行RAM区数据正常检测,首先应在初始化程序中,对RAM的若干单元设置RAM数据正常标志。通常是在RAM区中选取数个单元,在初始化程序中将其置成某个固定的数,如“55H”或“0AAH”,只要程序正常运行,这些单元的内容就不会被修改,若因程序“跑飞”或受其他干扰,导致这些RAM单元中的任何单元的数据发生变化,说明其他RAM单元的内容也可能发生变化,无法反映程序运行的结果和状态,不能根据RAM区中的标志去恢复程序运行现场。2.行后状态的自适应识别程序运行状态标记是在RAM区中设立一些标志位,这些标志位分别代表程序运行的不同阶段及运行后的状态。在初始化程序中,首先对这些单元置初值,在程序运行的不同阶段,这些单元的内容将被改变成特定值,标示程序运行的阶段和运行后的状态。这些标志除了在程序正常运行中起到条件转移的作用外,还能在程序“跑飞”,但RAM区数据正常时起到恢复程序运行现场的作用。3.“门狗”技术软件陷阱是在程序运行到ROM的非法区域时检测程序出错的一种方法。而“看门狗”则是根据程序在运行指定时间间隔内未进行相应的操作,来判断程序运行出错的。通常情况下,当程序因失控而进入“死循环”时,采用“看门狗”技术可使程序脱离“死循环”。其原理是:通过不断检测程序循环运行的时间,若发现程序循环时间超过最大循环运行时间,即未按时将“看门狗”定时器复位(俗称“喂狗”)时,则认为系统已陷入“死循环”状态,需要进行出错处理。“看门狗”技术既可由硬件实现,也可由软件实现。在系统成本允许的情况下,应优先采用硬件“看门狗”(选择专门的“看门狗”电路芯片或片内带“看门狗”定时器的单片机)和软件“看门狗”并用的方法。因为,在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断,但系统有可能仍可定时“喂狗”,这将会使硬件“看门狗”电路失效,而软件“看门狗”恰可有效地避免这类问题。非正压的识别和处理测控系统因干扰复位或掉电后又重新上电复位均属非正常复位,应进行故障诊断并自动恢复非正常复位前的状态。1.超芯片设备复位程序的执行总是从0000H开始,导致程序从0000H开始执行有四种可能:系统开机上电(含按“复位”键)复位,软件故障复位,“看门狗”超芯片硬件复位,程序运行中掉电后再来电复位。除第一种情况外,其余三种均属非正常复位,需加以识别。2.sp、spw值硬件复位指开机上电复位(含按“复位”键)或“看门狗”芯片复位,硬件复位对寄存器有影响,如复位后PC=0000H,SP=07H,PSW=00H等。而软件复位则对SP、SPW无影响。故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。此外,由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此,可选取芯片内的某一个单元作为系统上电标志(若使用两个单元作上电标志,则这种判别方法的可靠性更高)。3.非易失性现代社会的创造开机复位(含上电复位)与“看门狗”故障复位同属硬件复位,所以要想予以正确识别,一般要借助非易失性RAM或者E2PROM。当系统正常运行时,设置一可掉电保护的检测单元,当系统正常运行时,在定时“喂狗”的中断服务程序中使该检测单元保持正常值(设为AAH),而在主程中将该单元清零,因检测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否为“看门狗”复位。4.监测单元的确定识别测控系统中因意外情况(如系统掉电等情况)引起的开机复位与正常开机复位,对于过程控制系统尤为重要。通常,可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步,或若干个时间段。执行完一步,或运行完一个时间段时,对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值。若系统正在执行测控任务或正处在某个时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元的值判断系统原来的运行状态,并跳到出错处理程序中恢复系统的原运行状态。5.系统数据的恢复对顺序要求严格的一些过程控制系统,系统非正常复位后,一般都要求从失控的那一个模块或任务恢复运行,所以测控系统要作好重要数据单元、参数的备份,如系统运行状态,系统的进程值,当前输入、输出的值,当前时钟值,观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面的恢复等。之后再把复位前的任务、参数、运行时间等恢复,最后再进入系统运行状态。需要说明的是,系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。真实地恢复系统的运行状态需要极为细致、准确地对系统的重

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论