打印
[AVR单片机]

单片机

[复制链接]
2208|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nannan8|  楼主 | 2008-1-8 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以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开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位; 四、任务正在执行中掉电后来电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。 
    2.1.1 硬件复位与软件复位的识别 
    此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H, SP=07H,PSW=00H等。而软件复位则对SP、SPW无影响。故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。图1是采用PSW.5作上电标志位判别硬、软件复位的程序流程图。 
 
图1 硬、软件复位识别流程图 
此外,由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。设 40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。
    2.1.2 开机复位与看门狗故障复位的识别 
    开机复位与看门狗故障复位因同属硬件复位, 所以要想予以正确识别,一般要借助非易失性RAM或者EEROM。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为 AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位。 
   2.1.3 正常开机复位与非正常开机复位的识别 
    识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。 
    2.2 非正常复位后系统自恢复运行的程序设计 
  对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。 
  当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复, 再进入系统运行状态。 
    应当说明的是,真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。 
    其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题,笔者实际应用的数据恢复过程流程图如图2所示。
 
图2 系统自恢复程序流程图
图中恢复系统基本数据是指取出备份的数据覆盖当前的系统数据。系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。
    3  结束语 
  对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。

相关链接:http://www.clurc.com/showart.asp?art_id=872

相关帖子

沙发
nannan8|  楼主 | 2008-1-12 10:59 | 只看该作者

呵呵

自己顶一下
相关链接:http://www.clurc.com/showart.asp?art_id=872

使用特权

评论回复
板凳
dudongdao| | 2008-1-22 23:14 | 只看该作者

没看见图

使用特权

评论回复
地板
nannan8|  楼主 | 2008-1-26 13:12 | 只看该作者

所有

图片在以下的网站里
相关链接:http://www.clurc.com/showart.asp?art_id=872

使用特权

评论回复
5
dong2006| | 2008-1-31 20:04 | 只看该作者

单片机应届毕业生必看

       应届毕业生进入IT企业难   缺乏经验是关键原因
笔者于日前从教育部获悉,2008年全国高校毕业生将超过550万人,比2007年增加50多万。据介绍,2007年全国高校毕业生是495万人,到9月1日,全国高校的毕业生实现就业的人数是351万人,仍有大约144万的应届高校毕业生未能如期就业。
目前我国单片机从业人员只有140万,信息产业的发展,将使单片机的从业人员更为抢手,到2010年,我国单片机设计人员将超过300万人。随着IT业对人才需求的持续旺盛,单片机人才的薪资也随之“水涨船高”,普通研发人员年薪大概在5万元左右,工作五年以上的年薪都超过50万元。奇怪的是市场缺口很大找不到合适的人才?应届毕业生却找不到合适的工作?原因究竟何在?问题出在哪里呢?
某招聘会现场,一位毕业生向招聘人员介绍自己的各种优势,欲应聘“嵌入式单片机开发工程师”一职,但招聘人员从简历上看到他是2008年毕业生,一句“我们只需要有工作经验的”就把他挡回去了。“你在学习期间参加过什么项目?”、“你以前有没有在其他公司实习过?”、“你以前有接触过这个岗位吗?”在供需见面会上,大多数招聘单位询问应聘者的工作经验。许多用人单位希望应聘者一上来就能工作,不愿为培训新员工花费时间,因此对应届生不予考虑. 
一位应聘者向笔者抱怨:“为什么几乎每个岗位都需要工作经验?即使没注明经验的,我的机会也比其他有经验的人少。”经验成为应聘者不可逾越的一条鸿沟。一位招聘负责人表示,“我们更喜欢有大量实践经验的应聘者,马上可以参与公司内的大型项目。” 
可见,经验,已经成为了应届毕业生就业面临的最核心问题!
一边是人才缺口巨大,另一边是广大的IT学子求职的困惑。据分析,这是由于IT专业毕业生缺少专业技能和工作经验造成的,而这恰恰就是IT业最基本的条件。
那么,IT专业毕业生如何迈过“经验”这道槛呢?选择IT技能培训可能是较好的方式。这样的技术培训一般花费时间短,接受的知识系统,能够迅速进入工作岗位的角色,承担起某一职位的工作任务,真正增加求职砝码。
目前,随着IT业整体回暖和日益加剧的竞争压力,使很多人投入到了IT认证培训的队伍当中,参加一些所谓的“考证速成班”,通过死记硬背的突击方法获取一张根本无实践能力的证书,出现了在步入正式岗位后茫然和无助的现象。而IT业培训机构要熟悉国内外IT技术,及时跟进技术的发展,面向IT技术和人才市场状况进行培训。IT企业最需要的是理论与实践兼具的人才,IT培训以人才市场为导向,与企业接轨解决学生的理论多于实践问题,缓解就业带来的压力。在使学生掌握“项目开发流程”的基础上,要给学生亲自动手作项目的机会,培训后真正使学生具备项目经验和工作经验。以“凌阳单片机毕业设计实战就业班”为例,不仅让学员利用单片机做一个语音智能小车,实现软硬件的完整调试,而且完全体验跨国IT企业文化,真正积累工作经验,在真实项目中让学生把在学校学的理论应运到实际的开发项目中,使应届毕业生在毕业前积累经验,为毕业作好充分的准备。

使用特权

评论回复
6
hotpower| | 2008-1-31 20:22 | 只看该作者

哈哈~~~楼主给大家先在C语言下表演一下俺们菜鸟才拜跪~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

15

帖子

0

粉丝