paradoxfx

【原创】TI C2833x介绍---系统的初始化(4)

0
阅读(1983)

在系统上电或者复位之后,看门狗计数器的寄存器立即开始计数,所以在150MHz的CPU频率运行时,最迟要在4.37ms之内清除看门狗计数器(或者叫通常所谓的“喂狗”)。这4.37ms的计算是方法是:

150MHz的时钟频率相当于6.67ns,看门狗计数器是16位的,从0开始计数到计满溢出是65536个数,即6.67ns*65536=4.396ms。这个时间相对于我们操作者来说,还不到眨一下眼的间隔;但是对指令来说,相当于131072个指令周期了;所以在编程时有充足的时间来配置看门狗计数器。

清除看门狗计数器,即喂狗的方法,就是清除SysCtrlRegs寄存器的WDKEY这一段位。为了防止误操作,只有往WDKEY按照顺序写入以下两个数值才会起作用,它们是:

1. 写入55H,则看门狗计数器的复位写操作被使能;

2. 写入AAH,在55H已经写入WDKEY位段的情况下,看门狗计数器被清零。

3. 写入其它的任何数值,都将不会其任何作用。

为了可靠的操作看门狗计数器,保证在软件故障时系统能够可靠的复位,TI建议我们不能仅在中断服务子程序中对看门狗计数器进行操作,原因是:

如果主程序中的代码崩溃(比如main中等待中断产生的for循环中的后台服务程序崩溃了),而ISR程序还在运行,则看门狗无法有效捕获崩溃的故障并有效复位。一个比较有效的方法是,在main程序中写入55H,而在ISR中写入AAH,则不管是main中的后台服务程序崩溃还是ISR中的程序崩溃,看门狗都可以有效的捕获故障并使得系统复位。

Baidu
map