历史上的今天
返回首页

历史上的今天

今天是:2025年04月30日(星期三)

正在发生

2021年04月30日 | 单片机软件抗干扰的这几种办法

2021-04-30 来源:eefocus

1、软件抗干扰方法的研究


在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的噪声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。


(1) 指令冗余


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


在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。


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


(2) 拦截技术


所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。


软件陷阱的设计


当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱:


NOPNOPLJMP 0000H其机器码为0000020000。


陷阱的安排


通常在程序中未使用的EPROM空间填0000020000。最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断 1,外部中断1的中断服务程序可为如下形式:


NOPNOPRETI返回指令可用“RETI”,也可用“LJMP0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、完善,用“LJMP0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。


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


(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定时周期应予以全盘合理考虑。限于篇幅不赘述。


开机复位与看门狗故障复位的识别


开机复位与看门狗故障复位因同属硬件复位,所以要想予以正确识别,一般要借助非易失性RAM或者EEROM。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位。


正常开机复位与非正常开机复位的识别


识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。


(2)非正常复位后系统自恢复运行的程序设计


对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。



当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复,再进入系统运行状态。


应当说明的是,真实地恢复系统的运行状态需要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。


其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题。


系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。


对于软件抗干扰的还有一些其它常用方法,如数字滤波、RAM数据保护与纠错等。在工程实践中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。


推荐阅读

史海拾趣

ALLIED [Allied Electronics]公司的发展小趣事

Allied Electronics,总部位于美国德克萨斯州的一家分销公司,专注于为各种行业提供电子元件和电子产品。以下是关于Allied Electronics发展的五个相关故事:

  1. 成立和初期发展: Allied Electronics成立于1928年,最初以销售家庭无线电零件和配件为主要业务。随着无线电和电子行业的发展,公司逐渐扩大了产品范围,开始提供更广泛的电子元件和设备,以满足不断增长的市场需求。

  2. 与RS Components的合并: 2000年,Allied Electronics与英国的RS Components公司合并,成为全球领先的电子元件分销商之一。这一合并加强了两家公司在全球市场的地位,并且拓展了它们的产品线和客户群。

  3. 公司战略调整: 随着数字化技术的快速发展,Allied Electronics逐渐调整了业务战略,加大了对电子元件和器件的供应,并拓展了工业自动化、物联网和电子制造等领域的业务。通过与各种行业的合作伙伴建立紧密的关系,公司不断提升了产品质量和服务水平。

  4. 技术创新和数字化转型: Allied Electronics致力于技术创新和数字化转型,通过建立先进的电子商务平台和在线资源中心,为客户提供更便捷的采购体验。同时,公司还加强了与供应商的合作关系,引入了更多的创新产品,满足不同客户的需求。

  5. 持续发展和全球扩张: 作为全球领先的电子元件分销商之一,Allied Electronics不断加大在全球范围内的市场扩张力度,开设了多个销售办事处和物流中心,以更好地服务于全球客户。同时,公司还积极参与行业展会和活动,加强了与全球电子行业的合作与交流,推动了公司的持续发展和壮大。

Elpakco Inc公司的发展小趣事

Elpakco Inc公司始终将产品质量视为企业的生命线。公司建立了严格的质量控制体系,从原材料采购到生产流程,再到产品出厂检测,每一个环节都严格把关。正是这种对品质的坚持,让Elpakco Inc的产品在市场上赢得了良好的口碑,越来越多的客户开始选择信赖Elpakco Inc的品牌。

Diplohmatic A/S公司的发展小趣事

Diplohmatic A/S公司非常重视企业文化的建设。公司倡导“创新、协作、诚信、共赢”的核心价值观,通过举办各类员工活动、开展团队建设和员工培训等方式,不断增强员工的归属感和凝聚力。这种积极向上的企业文化氛围激发了员工的创新精神和工作热情,为公司的持续发展提供了强大的动力。

富满电子(FM)公司的发展小趣事

Diplohmatic A/S公司最初是一家小型电子元件分销商,但其创始人对技术创新的执着追求引领了公司的转型。在一次偶然的机会中,公司研发团队发现了一种新型半导体材料,这种材料在能效和稳定性上远超市场同类产品。经过数月的研发和测试,公司成功将这种材料应用于新型电源管理芯片中,并迅速获得了市场的认可。这一创新不仅为公司带来了丰厚的利润,也奠定了其在电子行业的技术领先地位。

AC Interface Inc公司的发展小趣事

ABC Electronics Inc. 起初是一家小型电子元件供应商,专注于为本地市场提供基本的电子零部件。然而,随着技术的快速发展,公司创始人意识到,只有不断创新才能在竞争激烈的市场中立足。于是,ABC Electronics 开始投入大量资源研发具有竞争力的新产品。经过数年的努力,公司成功推出了一款具有高效能、低能耗特点的电源管理芯片,迅速获得了市场的认可。这一创新产品不仅为公司带来了可观的利润,也奠定了其在电子行业的技术领先地位。

Datakey Electronics公司的发展小趣事

在环境问题日益严重的今天,绿色环保已经成为电子产品行业的重要发展趋势。Datakey Electronics积极响应国家号召,致力于绿色产品的研发和生产。公司投入巨资研发环保材料和生产工艺,成功推出了一系列符合环保标准的产品。这些产品不仅满足了客户的需求,还为公司赢得了良好的社会声誉。

问答坊 | AI 解惑

QQ农场带给我们商业启示--安防篇

QQ农场玩了好久,突然有了点明悟,做生意就像种菜一样。个人总结了一下。 1.产品和彩页就是种子,品牌很多,看你适合卖哪个,出厂价买来,等待卖出去。 2.工程商就是土地,你做的时间越长,积攒的客户越多,土地就越多,不过在多都有个头。 3.要 ...…

查看全部问答>

FPGA串口通信

我用FPGA实现串口通信,使用串口调试助手调试时,只能发送和接收单个字符,我想发送和接收字符串,用verilog怎么实现啊?…

查看全部问答>

keil

bit Ircv(uchar sla, uchar *s) {    Start_I2c();/*启动总线*/    SendByte(sla);            /*发送器件地址*/      if(ack==0)return(0);     ...…

查看全部问答>

求教关于430中FLASH擦写问题

首先说明一下,我用的芯片是M430F149 我照着http://www.microcontrol.cn/bbs/a/a.asp?B=112&ID=9201&E=1&EID=69&RootID=16594&q=1&r=16594 的方法试着做了一下,当使用的空间小于168字节时一点没有问题 但是在我尝试使用2000字节问题就出现了 ...…

查看全部问答>

用12864液晶的图形方式显示字符时为什么会出现乱码?

    基本指令能够正常显示字符或汉字,改用扩充指令的图形方式时,屏幕就会出现乱码,尽管字符也还是显示出来了,另外128X64大小的图片能正常显示,请问各位高人,这是什么原因呢?为什么图形方式不能正常显示字符呢?     fo ...…

查看全部问答>

AT89S51单片机控制GSM模块(M22)发送短信程序~~~~~~~~~~~~~~~~~~~~~

自己改的AT89S51单片机控制GSM模块(M22)发送短信程序,在Keil上已编译没错,但还没试过烧入片内运行。。   大家看看,这个程序可行否? 还有什么错误的地方?    希望搞过GSM的朋友多提点意见,让程序完善起来! &nbs ...…

查看全部问答>

wince下MMS是怎么一个处理过程

哪位大牛可以为小菜鸟解答一下,谢谢…

查看全部问答>

什么都不说请给个解释

下载 (30.55 KB) 2009-9-16 16:53 下载 (32.04 KB) 2009-9-16 16:53 …

查看全部问答>

MSP430g2553时钟设置

请教各位大哥,MSP430G2553的内部时钟是怎么回事,内部的DCOCLK,有没有详细点的说明啊。还有这块板子怎样才能把P2.6\\P2.7口接的晶振起振。我接的是8M。…

查看全部问答>