当前位置:文档之家› DSP课件-看门狗

DSP课件-看门狗


5.看门狗模块程序设计 5.看门狗模块程序设计
下面的程序为看门狗中断程序,程序中定时对看门狗计数器清零即 “喂狗”,如果程序进入死循环,不能及时“喂狗”,那么程序将进入看门 狗中断服务子程序中。
//------------------------------------------------------------------------------// ########### 看门狗中断程序 ########### //------------------------------------------------------------------------------#include”DSP281x_Devic.h” //头文件 #include”DSP281x_Examples.h” //头文件 Interrupt void wakeint_isr(void); //子程序声明 Void KickDog(void); //子程序声明 #efine BIT1 0x0002 //宏定义 //全局变量----------------------------------------------------------------------Uint32 WakeCount; //全局变量定义 Uint32 LoopCount; //全局变量定义 void main(viod) { InitSysCount(); DINT; InitPieVectTable();
组员:余洋勇、张佳杰、张萌
1.看门狗模块介绍 1.看门狗模块介绍
看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个 输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端 时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂 狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU, 是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环, 或者说程序跑飞 在实际的DSP应用系统当中,运行时极有可能发生干扰和被干扰的 现象。特别是产品化的DSP系统,可靠性是一个不容忽视的问题,严重 时系统会出现程序“跑飞”现象。为了克服这种情况,在可能的情况 下软硬件都应作相应的处理。目前,看门狗技术就是这种处理的有效 措施之一。 F2812中的看门狗模块与240x器件上的看门狗模块基本相同。当8 位看门狗递增计数器计数达到最大值时,看门狗模块输出一个脉冲信 号(512个振荡器时钟宽度)。为了阻止这种情况发生,用户可以屏 蔽计数器或者利用软件定时向看门狗复位控制寄存器写“0x55+0xAA” 序列(可以复位看门狗计数器)。
看门狗模块介绍及程序设计
基于TMS320F2812系统控制及中断: 基于TMS320F2812系统控制及中断: 1.看门狗模块介绍 1.看门狗模块介绍 2.看门狗计数寄存器(WDCNTR) 2.看门狗计数寄存器(WDCNTR) 3.看门狗复位寄存器(WDKEY) 3.看门狗复位寄存器(WDKEY) 4.看门狗控制寄存器(WDCR) 4.看门狗控制寄存器(WDCR) 5.看门狗模块程序设计 5.看门狗模块程序设计
//关闭中断开关 //清除中断标志位 //子文件 //保护中断向量 //看门狗中断向量指向中断服务子程序 //操作完成
//保护中断向量 //选择看门狗中断,紧张看门狗复位 //操作完成 //允许PIE1组中断 //打开第一组的watchdog中断 //允许CPU相应1组中断 //允许全局中断 //定时清零(喂狗)
2.看门狗计数寄存器(WDCNTR) 2.看门狗计数寄存器(WDCNTR)
看门狗计数寄存器位信息和功能介绍如表1和表2所示:
表1 15 Reserved R—0 表2
位 15~8 7~0 名 Reserved WDCNTR 称 保留 该区域内的信息为看门狗计数器当前的值。8位计数器将根 据看门狗时钟(WDCLK)连续增加。如果计数器溢出,看 门狗将发生一个复位信号,如果向WDKEY寄存器写有效的 数据组合(0x55+0xAA),将使计数器清零,看门狗模块 的时钟基准将在WDCR寄存器中配置
//初始化系统控制寄存器、PLL、看门狗和时钟 //关闭全局中断响应 //子文件
IER=0x0000; IER=0x0000; InitPieVetTable(); EALLOW; SysCtrlRegs.WAKEINT=&wakint_isr; EDIS; WakeCount=0; LoopCount=0; EALLOW; SysCtrlRegs.SCSR=BIT1; EDIS; PieCtelRegs.PIECRTL.bit.ENPIE=1; PieCtelRegs.PIECRTL.bit.INTx8=1; IER|=M_INT1; EINT; KickDog(); EALLOW;


表4 看门狗复位寄存器位功能介绍
位 15~8 名 Reserved 称 保留 首先写0x55,然后再写0xAA到WDKEY会使WDCNTR (看门狗计数器)清零。写其他的任何值都会使看门狗 产生复位信号;读操作将返回WDCR寄存器的值 功能介绍
7~0பைடு நூலகம்
WDKEY
4.看门狗控制寄存器(WDCR) 4.看门狗控制寄存器(WDCR)
SysCtrlRegs.WDCR=0x0028; EDIS; For(;;) { LoopCount++ } }
//使能看门狗,WDCLK=OSCCLK/512/1
//等地中断
//-------------------------------------------------------------------// ####### 看门狗中断服务子程序####### //-------------------------------------------------------------------Interrupt void wakeint_isr(viod) { WakeCount++; PieCtrlRegs.PIEACK.all=PIEACK_GROUP1 /;/写1继续响应中断 } Viod KickDog(void) //看门狗计数器清零 { EALLOW; SysCtrlRegs.WDKEY=0x0055; //看门狗计数器清零 SysCtrlRegs.WDKEY=0x00AA; //看门狗计数器清零 EDIS; }
看门狗计数寄存器位信息 8 7 WDCNTR R—0 看门狗计数寄存器位功能介绍
功能描述
0
3.看门狗复位寄存器(WDKEY) 3.看门狗复位寄存器(WDKEY)
看门狗复位寄存器位信息和功能介绍如表3和表4所示:
表3 看门狗复位寄存器位信息 15 Reserved R—0 8 7 WDKEY R—0 0
• 看门狗控制寄存器位信息和位功能介绍如表5和表6所示:
表5 看门狗控制寄存器位信息 15 Reserved R—0 7 6 5 WDFLAG WDDIS RW1C—0 R/W—0 3 WDCHK R/W—0 2 WDPS R/W—0 0 8
表6 看门狗控制寄存器位功能介绍
位 15~8 7 名 称 功能介绍 Reserved 保 留 看门狗复位状态标志位: 1 表示看门狗复位(WDRET)满足了复位条件; WDFLAG 0 表示是外部设备或上电复位条件。 该位值将一直锁存直到写1到WDFLAG位将该位清零,写0没有影响
表6续表 看门狗控制寄存器位功能介绍
位 6 名称 WDDIS 功能介绍 1屏蔽看门狗模块; 0 使能看门狗模块。 只有当SCSR2寄存器的WDOVERIDE位等于1时,WDDIS的值才能 改变,器件复位时,看门狗模块默认状态为使能
5~3 2 ~0
WDCHK(2:0) 看门狗检测位,需要向WDCHK(2~0)写1、0、1,写其他任何值都会 引起器件内核的复位(看门狗已经使能),读操作将返回0、0、0 WDPS(2:0) 该区域用于配置看门狗计数时钟(WDCLK)比例(相对于 OSCCLK/512的倍率) 000 WDCLK=OSCCLK/512/1; 001 WDCLK=OSCCLK/512/1; 010 WDCLK=OSCCLK/512/2; 011 WDCLK=OSCCLK/512/4; 100 WDCLK=OSCCLK/512/8; 101 WDCLK=OSCCLK/512/16; 110 WDCLK=OSCCLK/512/32; 111 WDCLK=OSCCLK/512/64;
相关主题