单片机系统抗干扰方法是什么?

【天富娱乐实权主管一叶叩84566 】【有任何问题 找主管吧】天富娱乐-CSDN博客
在进步硬件体系抗搅扰才能的一起,软件抗搅扰以其规划灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机体系为例,对微机体系软件抗搅扰办法进行研究。 1 软件抗搅扰办法的研究 在工程实践中,软件抗搅扰研究的内容主要是: 一、消除模拟输入信号的嗓声(如数字滤波技能);二、程序运转紊乱时使程序重入正轨的办法。本文针对后者提出了几种有用的软件抗搅扰方 法。 1.1 指令冗余 CPU取指令进程是先取操作码,再取操作数。当PC受搅扰出现过错,程序便脱离正常轨迹“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将犯错。 若“飞” 到了三字节指令,犯错机率更大。 在要害地方人为刺进一些单字节指令,或将有用单字节指令重写称为指令冗余。一般是在双字节指令和三字节指令后刺进两个字节以上的NOP。这样即便乱飞程序飞到操作数上,由于空操作指令 NOP的存在,避免了后面的指令被当作操作数履行,程序主动归入正轨。 此外,对体系流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前刺进两条NOP,也可将乱飞程序归入正轨,确保这些重要指令的履行。 1.2 阻拦技能 所谓阻拦,是指将乱飞的程序引向指定位置,再进行犯错处理。一般用软件圈套来阻拦乱飞的程序。因此先要合理规划圈套,其次要将圈套安排在适当的位置。 1.2.1 软件圈套的规划 当乱飞程序进入非程序区,冗余指令便无法起作用。经过软件圈套,阻拦乱飞程序,将其引向指定位置,再进行犯错处理。软件圈套是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。 一般在EPROM中非程序区填入以下指令作为软件圈套: NOP NOP LJMP 0000H 其机器码为0000020000。 1.2.2 圈套的安排 一般在程序中未运用的EPROM空间填0000020000。最后一条应填入020000,当乱飞程序 落到此区,即可主动入轨。在用户程序区各模块之间的空余单元也可填入圈套指令。当运用的中止因搅扰而 开放时,在对应的中止效劳程序中设置软件圈套,能及时捕获过错的中止。如某使用体系虽未用到外部中止1,外部中止1的中止效劳程序可为如下方法: NOP NOP RETI 返回指令可用“RETI”,也可用“LJMP 0000H”。假如故障诊断程序与体系自康复程序的规划可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并康复程序 的运转。 考虑到程序存贮器的容量,软件圈套一般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开端履行有四种可能:一、体系开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位; 四、使命正在履行中掉电后来电复位。四 种状况中除第一种状况外均属非正常复位,需加以辨认。在进步硬件体系抗搅扰才能的一起,软件抗搅扰以其规划灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机体系为例,对微机体系软件抗搅扰办法进行研究。 1 软件抗搅扰办法的研究 在工程实践中,软件抗搅扰研究的内容主要是: 一、消除模拟输入信号的嗓声(如数字滤波技能);二、程序运转紊乱时使程序重入正轨的办法。本文针对后者提出了几种有用的软件抗搅扰方 法。 1.1 指令冗余 CPU取指令进程是先取操作码,再取操作数。当PC受搅扰出现过错,程序便脱离正常轨迹“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将犯错。 若“飞” 到了三字节指令,犯错机率更大。 在要害地方人为刺进一些单字节指令,或将有用单字节指令重写称为指令冗余。一般是在双字节指令和三字节指令后刺进两个字节以上的NOP。这样即便乱飞程序飞到操作数上,由于空操作指令 NOP的存在,避免了后面的指令被当作操作数履行,程序主动归入正轨。 此外,对体系流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前刺进两条NOP,也可将乱飞程序归入正轨,确保这些重要指令的履行。 1.2 阻拦技能 所谓阻拦,是指将乱飞的程序引向指定位置,再进行犯错处理。一般用软件圈套来阻拦乱飞的程序。因此先要合理规划圈套,其次要将圈套安排在适当的位置。 1.2.1 软件圈套的规划 当乱飞程序进入非程序区,冗余指令便无法起作用。经过软件圈套,阻拦乱飞程序,将其引向指定位置,再进行犯错处理。软件圈套是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。 一般在EPROM中非程序区填入以下指令作为软件圈套: NOP NOP LJMP 0000H 其机器码为0000020000。 1.2.2 圈套的安排 一般在程序中未运用的EPROM空间填0000020000。最后一条应填入020000,当乱飞程序 落到此区,即可主动入轨。在用户程序区各模块之间的空余单元也可填入圈套指令。当运用的中止因搅扰而 开放时,在对应的中止效劳程序中设置软件圈套,能及时捕获过错的中止。如某使用体系虽未用到外部中止1,外部中止1的中止效劳程序可为如下方法: NOP NOP RETI 返回指令可用“RETI”,也可用“LJMP 0000H”。假如故障诊断程序与体系自康复程序的规划可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并康复程序 的运转。 考虑到程序存贮器的容量,软件圈套一般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开端履行有四种可能:一、体系开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位; 四、使命正在履行中掉电后来电复位。四 种状况中除第一种状况外均属非正常复位,需加以辨认。

你可能感兴趣的:(单片机系统抗干扰方法是什么?)