新闻中心

EEPW首页>嵌入式系统>设计应用> 微控制器的抗干扰软件编程方法

微控制器的抗干扰软件编程方法

作者: 时间:2012-03-12 来源:网络 收藏

二、看门狗电路

一个看门狗电路通常被描述成一块在有规律的时间间隔中进行更新的硬件,该更新必须由微或是使微重新启动的电路来完成。一个外部的看门狗电路是最好的,因为它不依赖微,如果微控制器发生故障需要看门狗更新,则该电路将给出reset信号使微控制器重新启动。一个看门狗通常由一个硬件定时器构成,如果没有来看微控制器的更新或是报告信息,该定时器将会溢出。一个简单的看门狗电路如图4。

13.gif

在加电的POR时延内,微控制器将保持在复位状态。时钟可以来自一个外部源或是来自用于微控制器的晶振的一个脉冲。当该微控制器处于复位状态时,输入/输出引脚就成为输入,而此时计数器也开始运作。如果Q是0,那么C1就会被充电,而微控制器将会跳离复位状态。

微控制器的首要任务是给出一个小脉冲来重启计数器到一个已知的时间溢出值,微控制器上的I/O端口形成交流耦合,目的在于保证只有边沿触发才能重新发计数器。这样就保证了一个恒定的直流电平将不会有效作用于微控制器或看门狗。该微控制器必须在Q跳为1之前发送一个小的脉冲,以保证微控制器不被复位(正常情况下该操作至少需要两个微控制器的软件指令)。还有一个可供选择的就是微控制器在晶片上具有内嵌看门狗电路。例如Motorola 的MC68HC705C8就有它自身的看门狗,由一个可编程计数器组成,该计数器大约在每32768时钟周期就要被刷新一次,或是它将在内部产生一个清零指令。

CM1,0位通常用来选择一个暂停周期(也就是CPU的时钟被2 15,2 17,2 19,2 21 所划分)。COPE位是只写一次的而且一旦看门狗有效,就不会停止,只有重启才能停止看门狗的动作。COPF位是通知用户的标志,它通知用户前一次的重启的由于看门狗的时溢或是其它原因所引起。刷新看门狗的时序是在COP重启寄存器(COPRR)上的两个写操作。即该序列是一个对COPRR进行$55写操作后紧跟$AA的写操作。

不是所有的微控制器都有看门狗电路的,但是在一些设计中,设计者能够用未使用的中断来执行它自己的看门狗功能。举例来说,一个MC68HC05P1没有看门狗,但是有一个16bit可自由运行的计时器。有3种可能的方式,使该计时器能够产生一个中断。这3种方式是:

1)一个从FFFF向0000溢出的定时器。

2)一个输出比较,16bit寄存器和定时器的值的比较。

3)对TCAP端口的上升或下降边沿的一个输入捕捉。

如果此输出比较(Output Compare)中断不能被执行,则其将被当做假的看门狗。在这种情况下,定时器将与输出比较(output compare)寄存器作个比较,以检验系统是否都正常。如果系统运行正确,那么将执行一个中断返回。如果有不正常情况,那么堆栈指针的复位和一个往初始化程序的跳转将会执行。该系统检验可以是前述的标志通过程序。

在一个程序里,看门狗更新(watchdog updates)最优选位置的选择不是一个简单的事情,一般说来,是结束程序时的最后进程。通常用户需要测试软件流程和所有的中断程序和子程序的时序,关键的和非关键的应用。在所有的程序中进行看门狗恻新是最好的,但是由于微控制器有很长的程序和很多的芯片功能,因此这样是很难做到的。如果可能的话,看门狗刷新程序不应该被放在中断或是子程序中。原则上应该直接放入主程序中。要注意的是刷新速率不要太大,否则将使失控状态恢复的几率下降。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭