您的位置 首页 汽车

单片机软件抗干扰的几种常见办法

在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。

在进步硬件体系抗搅扰才干的一起,软件抗搅扰以其规划灵敏、节约硬件资源、牢靠性好越来越受到重视。下面以MCS-51单片机体系为例,对微机体系软件抗搅扰办法进行研讨。

1、软件抗搅扰办法的研讨

在工程实践中,软件抗搅扰研讨的内容主要是:一、消除模仿输入信号的噪声(如数字滤波技能);二、程序运转紊乱时使程序重入正轨的办法。本文针对后者提出了几种有用的软件抗搅扰办法。

1.1 指令冗余

CPU取指令进程是先取操作码,再取操作数。当PC受搅扰呈现过错,程序便脱离正常轨迹“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将犯错。若“飞”到了三字节指令,犯错机率更大。

在要害当地人为刺进一些单字节指令,或将有用单字节指令重写称为指令冗余。一般是在双字节指令和三字节指令后刺进两个字节以上的NOP。这样即便乱飞程序飞到操作数上,因为空操作指令NOP的存在,避免了后边的指令被当作操作数履行,程序自动归入正轨。

此外,对体系流向起重要作用的指令如RET、RETI、LCALL、LJMP、JC等指令之前刺进两条NOP,也可将乱飞程序归入正轨,确保这些重要指令的履行。

1.2 阻拦技能

所谓阻拦,是指将乱飞的程序引向指定方位,再进行犯错处理。一般用软件圈套来阻拦乱飞的程序。因而先要合理规划圈套,其次要将圈套组织在恰当的方位。

①软件圈套的规划

当乱飞程序进入非程序区,冗余指令便无法起作用。经过软件圈套,阻拦乱飞程序,将其引向指定方位,再进行犯错处理。软件圈套是指用来将捕获的乱飞程序引向复位进口地址0000H的指令。一般在EPROM中非程序区填入以下指令作为软件圈套:

NOPNOPLJMP 0000H其机器码为0000020000。

②圈套的组织

一般在程序中未运用的EPROM空间填0000020000。最终一条应填入020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入圈套指令。当运用的中止因搅扰而敞开时,在对应的中止服务程序中设置软件圈套,能及时捕获过错的中止。如某运用体系虽未用到外部中止1,外部中止1的中止服务程序可为如下办法:

NOPNOPRETI回来指令可用“RETI”,也可用“LJMP0000H”。假如毛病诊断程序与体系自康复程序的规划牢靠、完善,用“LJMP0000H”作回来指令可直接进入毛病诊断程序,尽早地处理毛病并康复程序的运转。

考虑到程序存贮器的容量,软件圈套一般1K空间有2-3个就可以进行有用阻拦。

1.3 软件“看门狗”技能

若失控的程序进入“死循环”,一般选用“看门狗”技能使程序脱离“死循环”。经过不断检测程序循环运转时刻,若发现程序循环时刻超越最大循环运转时刻,则以为体系堕入“死循环”,需进行犯错处理。

“看门狗”技能可由硬件完结,也可由软件完结。在工业运用中,严峻的搅扰有时会损坏中止办法操控字,封闭中止。则体系无法守时“喂狗”,硬件看门狗电路失效。而软件看门狗可有用地处理这类问题。

笔者在实践运用中,选用环形中止监督体系。用守时器T0监督守时器T1,用守时器T1监督主程序,主程序监督守时器T0。选用这种环形结构的软件“看门狗”具有杰出的抗搅扰功能,大大进步了体系牢靠性。关于需常常运用T1守时器进行串口通讯的测控体系,则守时器T1不能进行中止,可改由串口中止进行监控(假如用的是MCS-52系列单片机,也可用T2替代T1进行监督)。这种软件“看门狗”监督原理是:在主程序、T0中止服务程序、T1中止服务程序中各设一运转观测变量,假设为MWatch、T0Watch、T1Watch,主程序每循环一次,MWatch加1,相同T0、T1中止服务程序履行一次,T0Watch、T1Watch加1。在T0中止服务程序中经过检测T1Watch的改变状况断定T1运转是否正常,在T1中止服务程序中检测MWatch的改变状况断定主程序是否正常运转,在主程序中经过检测T0Watch的改变状况判别T0是否正常作业。若检测到某观测变量改变不正常,比方应当加1而未加1,则转到犯错处理程序作排除毛病处理。当然,对主程序最大循环周期、守时器T0和T1守时周期应予以全盘合理考虑。限于篇幅不赘述。

2、体系毛病处理、自康复程序的规划

单片机体系因搅扰复位或掉电后复位均属非正常复位,应进行毛病诊断并能自动康复非正常复位前的状况。

2.1 非正常复位的辨认

程序的履行总是从0000H开端,导致程序从0000H开端履行有四种或许:一、体系开机上电复位;二、软件毛病复位;三、看门狗超时未喂狗硬件复位;四、使命正在履行中掉电后来电复位。四种状况中除第一种状况外均属非正常复位,需加以辨认。

(1)硬件复位与软件复位的辨认

此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H,SP=07H,PSW=00H等。而软件复位则对SP、SPW无影响。故关于微机测控体系,当程序正常运转时,将SP设置地址大于07H,或许将PSW的第5位用户标志位在体系正常运转时设为1,那么体系复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。

因为硬件复位时片内RAM状况是随机的,而软件复位片内RAM则可坚持复位前状况,因而可选取片内某一个或两个单元作为上电标志。设40H用来做上电标志,上电标志字为78H,若体系复位后40H单元内容不等于78H,则以为是硬件复位,不然以为是软件复位,转向犯错处理。若用两个单元作上电标志,则这种判别办法的牢靠性更高。

(2)开机复位与看门狗毛病复位的辨认

开机复位与看门狗毛病复位因同属硬件复位,所以要想予以正确辨认,一般要凭借非易失性RAM或许EEROM。当体系正常运转时,设置一可掉电维护的观测单元。当体系正常运转时,在守时喂狗的中止服务程序中使该观测单元坚持正常值(设为AAH),而在主程中将该单元清零,因观测单元掉电可维护,则开机时经过检测该单元是否为正常值可判别是否看门狗复位。

(3)正常开机复位与非正常开机复位的辨认

辨认测控体系中因意外状况如体系掉电等状况引起的开机复位与正常开机复位,关于进程操控体系尤为重要。如某以时刻为操控规范的测控体系,完结一次测控使命需1小时。在已履行测控50分钟的状况下,体系电压反常引起复位,此刻若体系复位后又从头开端进行测控则会形成不必要的时刻耗费。因而可经过一监测单元对当时体系的运转状况、体系时刻予以监控,将操控进程分解为若干步或若干时刻段,每履行完一步或每运转一个时刻段则对监测单元置为关机答应值,不同的使命或使命的不同阶段有不同的值,若体系正在进行测控使命或正在执某时刻段,则将监测单元置为非正常关机值。那么体系复位后可据此单元判体系本来的运转状况,并跳到犯错处理程序中康复体系原运转状况

2.2 非正常复位后体系自康复运转的程序规划

对次第要求严厉的一些进程操控体系,体系非正常复位否,一般都要求从失控的那一个模块或使命康复运转。所以测控体系要作好重要数据单元、参数的备份,如体系运转状况、体系的进程值、当时输入、输出的值,当时时钟值、观测单元值等,这些数据既要守时备份,一起若有修正也应立即予以备份。

当在已判别出体系非正常复位的状况下,先要康复一些必要的体系数据,如显现模块的初始化、片外扩展芯片的初始化等。其次再对测控体系的体系状况、运转参数等予以康复,包含显现界面等的康复。之后再把复位前的使命、参数、运转时刻等康复,再进入体系运转状况。

应当阐明的是,真实地康复体系的运转状况需求极为详尽地对体系的重要数据予以备份,并加以数据牢靠性查看,以确保康复的数据的牢靠性。

其次,对多使命、多进程测控体系,数据的康复需考虑康复的次第问题。

体系根本初始化是指对芯片、显现、输入输出办法等进行初始化,要注意输入输出的初始化不该形成误动作。而复位前使命的初始化是指使命的履行状况、运转时刻等。

关于软件抗搅扰的一些其它常用办法如数字滤波、RAM数据维护与纠错等,限于篇幅,本文未作评论。在工程实践中一般都是几种抗搅扰办法并用,相互弥补完善,才干获得较好的抗搅扰作用。从根本上来说,硬件抗搅扰是自动的,而软件是抗搅扰是被迫的。详尽周到地剖析搅扰源,硬件与软件抗搅扰相结合,完善体系监控程序,规划一安稳牢靠的单片机体系是彻底可行的

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/292867.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部