您的位置:控制工程论坛网论坛 » 教程与手册 » 单片机“死机”现象的克服

Wilton_gao

Wilton_gao   |   当前状态:离线

总积分:123  2025年可用积分:0

注册时间: 2008-01-16

最后登录时间: 2009-09-29

空间 发短消息加为好友

单片机“死机”现象的克服

Wilton_gao  发表于 2008/9/13 9:51:26      1596 查看 0 回复  [上一主题]  [下一主题]

手机阅读

当干扰通过总线或其他口线作用到CPU时,就会造成程序计数器PC值的改变,引起程序混乱,使系统失控。因此,在设计单片机系统时,如何发现CPU受到干扰,并尽可能无扰地使系统恢复到正常工作状态是软件设计应考虑的主要问题。 

  无论何种控制系统,一般讲,死机现象都是不允许的。克服死机现象最有效的办法就是采用单片机工加了硬件看门狗电路后仍然有死机现象,分析原因,可能有以下方面:

  因为某种原因,程序混乱后,看门狗电路虽然发出了复位脉冲,但在程序刚刚正常还来不及发出一个脉冲信号,此时程序再次被干扰,而这时看门狗电路已处于稳态,不能再发出复位脉冲。

  程序进入死循环,在该死循环中,恰好又有看门狗监视I/O口上操作的指令。而该I/O口仍有脉冲信号输出,看门狗检测不到这种异常情况。

  在有严重干扰时,中断方式控制字有时会受到破坏,导致中断关闭。

  可见,只用硬件看门狗电路是无法确保单片机正常工作的。因此,可采用以下方法作为补充。

  软件“看门狗”的应用

  选用定时器T0作为看门狗,将T0的中断定义为最高级中断。看门狗启动后,系统必须及时刷新T0的时间常数。

  指令冗余技术

  ①NOP的使用

  在8031单片机指令系统中所有指令都不超过3个字节。因此,在程序中连续插入3条NOP指令,有助于降低程序计数器发生错误的概率。

  ②重要指令冗余

  对于程序流向起决定作用的指令(如RET,RETI,ACALL,LJMP,JZ等)和某些对系统工作状态有重要作用的指令(如SETBEA等)的后面,可重复写下这些指令,以确保这些指令的正确执行。

  软件陷阱法

  单片机系统程序跑飞意味着CPU执行不正确流程程序。而当乱飞程序进入非程序区,采用冗余技术无法使程序纳入正确轨道,此时可采用软件陷阱法,拦截乱飞程序。软件陷阱就是用引导指令(如LJMP)将扑获到的乱飞程序引向复位入口地址0000H,在此对程序进行出错处理,使其纳入正轨。

  ①软件陷阱格式

  NOP

  NOP

  LJMP0000H

  ②软件陷阱安排未使用的中断区;

  未使用的大片ROM空间;

  程序区;

  中断服务程序区。

1楼 0 0 回复