资源描述:
《软件新技术论文软件技术论文:基于单片机软件抗干扰新技术的探究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、软件新技术论文软件技术论文:基于单片机软件抗干扰新技术的探究摘要:单片机软件抗干扰设计是一项综合性的设计,在应用中,要根据实际情况,采用相应的抗干扰技术,使单片机系统更加稳定、可靠。本文对单片机软件抗干扰新技术的探究问题进行了研究。关键词:单片机软件抗干扰新技术1、数据采集系统抗干扰对于单片机实时数据采集系统,为了消除信号通道的干扰信号,提高检测数据的精度,软件上经常采用数字滤波技术。其优点在于:不需要增加硬件成本,对于不同的干扰信号,编写相应的程序,有的放矢。常见的技术和措施有:(1)算数平均值滤波。该方法是连续对数据进行采样,然后计算其平均值,这样可以
2、减少系统的随机干扰。(2)限制滤波法。就是根据实际,在程序中设定输入信号的上下限,比如输入信号幅值的上限为Xmax,下限为Xmin,若被测信号Xi正好落在此范围内,即Xmin≤Xi≤Xmax,则表明此信号是有用信号,可取本次采样值为Xi;若XiXmax,则表明此信号是干扰信号,应该滤去。这种方法适合于滤去大电流电感负载的切断,或电动工具的火花等产生的随机干扰脉冲。(3)一阶数字滤波法。用软件方法代替硬件RC滤波器,也就是利用软件完成低通滤波器的算法。算法为:Yn=QXn+(1-Q)Yn-1,式中:Q是数字滤波系数,Xn是第n次采样时的滤波
3、器输入;Yn是第n次采样时的滤波器输出;Yn-1是第(n-1)次采样时的滤波器输出。滤波系数Q=ΔT/Ti<1;ΔT为采样周期;Ti为数字滤波器的时间系数。这种方法适合于滤去周期性噪声,结合实际,通过具体的参数设置,使周期性噪声减至最弱甚至全部消除。2、指令冗余技术指令冗余技术是在程序编写的过程中,多使用单字节的指令,在关键的地方,重复写入单字节指令。以减少因干扰而程序“乱飞”的机率。在单片机系统中,最易受干扰的是程序计数器———PC值。受到干扰后,PC值可能会被“碰飞”,即出现不稳定,随机值的情况。这样,就可能导致CPU的误动作,产生错误结果。单片机系统
4、的指令一般不超过3个字节,多为单字节指令。指令由操作码和操作数组成,CPU取指令过程是先取操作码,后取操作数,执行完一条指令后,再取下一条。当PC受到干扰而出现错误,程序便脱离正常运行轨道而乱飞,出现操作数数值改变以及将操作数当作操作码。为了使乱飞的程序在程序区迅速纳入正轨,可采用以下技术:(1)尽量使用单字节指令。当程序“跑飞”到某一个单字节指令上时,便会自动纳入正轨。当“跑飞”到三字节指令上时,可能会把操作数误认为操作码,出现错误。因此,需要在关键的地方人为地插入单字节指令,比如NOP指令。(2)在一些对程序流向起决定作用的指令,如SJMD、LJMD、
5、JZ、JNZ、JC、LCALL等指令前插入NOP指令。(3)在某些对系统工作起至关重要作用的指令,如RET、SETB、EA、POP、PUSH等前面插入几条NOP指令。(4)在程序中每隔20条左右的指令中插入3条NOP指令,有助于降低程序计数器发生错误的概率。3、软件陷阱技术指令冗余技术的有效利用是有前提条件的:“跑飞”的程序必须落到程序区,且执行到冗余指令。如果乱飞的程序落到非程序区,比如EPROM中未使用的空间等,或者说在执行到冗余指令以前,程序已经陷入死循环,那么此时,冗余技术对引导程序回到正常轨道就不再有效。此时可通过设立“软件陷阱”来处理,“软件陷
6、阱”就是一条引导指令,当系统受到干扰而失控时,用引导指令强行将捕获的失控程序引向一个指定的地址,在那里有一段专门对程序出错进行处理的程序,使程序纳入正常轨道。假设出错处理程序入口标号为ERR,则软件陷阱指令如下:NOPNOPLJMPERR;转到预先设计的入口执行“软件陷阱”一般安排在以下四个地方:(1)未使用的中断向量区在这些地方设置“软件陷阱”,能及时有效地捕捉到错误中断。(2)未使用的大片EPROM空间如果在此区域设置软件陷阱,当程序跑飞到此区域时,便会迅速纳入正轨。(3)表格和程序区在表格中只能在最后安排“软件陷阱”,有一定的效果,但是也不一定能保证
7、捕捉到“跑飞”的程序;在程序区中不能任意安排陷阱,否则影响正常程序的执行,但是,对于一些断裂点,正常执行的程序到此便不会再继续执行了,比如在指令LJMP、SJMP后,加软件陷阱,就能捕捉到“跑飞”的程序。4、“看门狗”技术当程序发生死循环,或者系统紊乱,利用以上的指令冗余技术和“软件陷阱”技术,都不能解决问题的时候,就要利用“看门狗”技术。看门狗”其实是单片机内部的一个定时器,该定时器被设为高级中断,一旦发生溢出,立即向CPU发出复位信号,使系统强行复位。在工作时,由CPU向定时器中写入初值,并启动工作,系统定时刷新定时器,让定时器不断计数,又不断回到初值
8、,俗称“喂狗”。只要系统的刷新周期小于定时器的定时周期,就不会产生