首页 理论教育 如何设置看门狗定时器来监视DSP程序运行状况

如何设置看门狗定时器来监视DSP程序运行状况

时间:2023-06-29 理论教育 版权反馈
【摘要】:240x DSP内设置了一个看门狗定时器,用来监视DSP程序的运行状况。图2-12为看门狗定时器模块框图。DSP复位时,看门狗定时器自动工作。为了防止这种情况出现,用户可以禁止看门狗定时器工作,或者周期性地向看门狗复位关键字寄存器中写入0x55和0x AA。⑤系统复位后,WD定时器就自动启动。这些位用来配置看门狗时钟WDCLK。

如何设置看门狗定时器来监视DSP程序运行状况

240x DSP内设置了一个看门狗定时器(Watchdog Timer,WD,也称为监视定时器),用来监视DSP程序的运行状况。当系统进入不可预知的状态而造成“死机”时,WD将产生一个复位操作,从而使DSP进入一个已知的起始位置重新运行。

图2-12为看门狗定时器模块框图。WD所有寄存器都是8位的。WD的时钟WDCLK是CPU时钟CLKOUT的512分频,即WDCLK=CLKOUT/512。DSP复位时,看门狗定时器自动工作。一旦8位的看门狗计数器(WDCNTR)达到最大计数值,就产生一个复位信号,使DSP复位。为了防止这种情况出现,用户可以禁止看门狗定时器工作,或者周期性地向看门狗复位关键字寄存器(WDKEY,也称为钥匙寄存器)中写入0x55和0x AA。

978-7-111-36250-0-Chapter02-51.jpg

图2-12 看门狗定时器模块框图

WD模块具有如下特征:

①8位WD计数器,上溢时产生一个系统复位信号。

②6位的自行计数器,用于WD预定标,共6种选择。

③一个复位关键字寄存器(WDKEY)。当一个55h值后紧随着一个AAh值写入WD⁃KEY时,则WD计数器清零,当不正确的值写入时,则产生一个复位信号。

④WD定时器控制寄存器WDCR中有3个WD检验位即特征值。当不正确的特征值写入时,则启动系统复位。

⑤系统复位后,WD定时器就自动启动。

看门狗模块的寄存器介绍如下:

(1)8位WD计数寄存器:WDCNTR

该寄存器格式如下:

978-7-111-36250-0-Chapter02-52.jpg

位7~0反映当前WD计数寄存器的值。该8位计数器按WDCLK设定的时钟频率不断计数,如果溢出,则引起DSP复位。如果WDKEY寄存器写入了正确的数(即先写入0x55,再写入0xAA),则WDCNTR清零。

(2)WD复位关键字寄存器:WDKEY

该寄存器格式如下:

978-7-111-36250-0-Chapter02-53.jpg

位7~0如果先写入0x55,再写入0xAA就会使WDCNTR清零。写入任何其他数值则马上使DSP复位。读操作返回的是WDCR寄存器的值。

(3)WD定时器控制寄存器:WDCR

该寄存器格式如下:

978-7-111-36250-0-Chapter02-54.jpg

位7 WDFLAG:看门狗复位状态标志位。如果为1,表示看门狗复位;为0,表示是外部复位或上电复位。该位写1清除,否则状态一直保持。(www.xing528.com)

位6 WDDIS:向该位写1,禁止看门狗模块;写0,使能看门狗模块。复位值为0,看门狗模块使能。只有在SCSR2寄存器中的WDOVERRIDE位设为1后才能修改该位。

位5~3 WDCHK2~0:WD检验位。任何时候写该寄存器,用户都必须向这些位写入101,即特征位。写入任何其他数值都会引起复位(如果看门狗使能)。

位2~0 WDPS2~0:看门狗预分频位。这些位用来配置看门狗时钟WDCLK。

●000 WDCLK/1;

●001 WDCLK/1;

●010 WDCLK/2;

●011 WDCLK/4;

●100 WDCLK/8;

●101 WDCLK/16;

●110 WDCLK/32;

●111 WDCLK/64。

在CPU时钟频率CLKOUT=40 MHz时,WDCLK=40 MHz/512=78125 Hz,那么溢出时间最小为256/78125 s=3.28 ms,最大为256×64/78125 s=209.7 ms(64分频)。

【例2-2】看门狗定时器编程。

使用看门狗定时器的C语言程序段(喂狗):

978-7-111-36250-0-Chapter02-55.jpg

使用看门狗定时器的汇编语言程序段:

978-7-111-36250-0-Chapter02-56.jpg

禁止看门狗定时器的C语言程序段:

978-7-111-36250-0-Chapter02-57.jpg

禁止看门狗定时器汇编语言程序段:

978-7-111-36250-0-Chapter02-58.jpg

注意240x DSP上电时看门狗是工作的,所以应尽快屏蔽看门狗或向WDKEY寄存器周期性写入0x55、0xAA,以免程序跑飞。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈