DSP课件-看门狗
- 格式:ppt
- 大小:268.50 KB
- 文档页数:10
看门狗定时器看门狗在外围监控DSP中软件的运行以及硬件的操作,当CPU出现故障时,看门狗将执行系统复位。
如果软件进入了一个不正确的循环或者CPU出现暂时的混乱,看门狗定时器将出现溢出来使系统复位。
在大多数情况下,DSP短暂的混乱以及CPU不正确的操作都可以被看门狗所清除并重新进行设置。
由于看门狗稳定的性能,其增加了CPU的可靠性,以确保系统的完整。
在看门狗中这个外围设备中,所有的寄存器都是8位的,连接到16位CPU的低8位外围数据总线上。
240XA看门狗定时器和C240看门狗定时器唯一的区别就是其缺乏实时的中断能力。
(这句话我也不明白哦)。
看门狗定时器将通过对从CPU出来的CLKOUT进行分频而得到自己所需的时钟。
1.1看门狗定时器的特征看门狗模块包含如下特征:n8位的看门狗计数器通过计数溢出从而使系统复位n6位的独立运行计数器通过对看门狗计数器预定标来feed看门狗计数器(上句为字面意思,我的理解是:该6位的独立运行的计数器通过对WD CLK(看门狗工作时钟)进行分频从而使看门狗计数器得到不同频率的时钟。
独立运行的意思是该计数器不受其他器件的影响,只要启动系统,就开始工作)n看门狗复位键寄存器,当向该寄存器写下合适的组合值(在该DSP中,通过向该寄存器相继写55h和AAh值)时,该寄存器将使看门狗计数器清零,当向该寄存器写下不合适的组合值(除55h和AAh以外的值)时,该寄存器将使系统复位n看门狗核对位,当看门狗定时器出现错误情况时,通过看门狗核对位来复位系统n当系统复位时,将自动启动看门狗定时器n可对独立运行计数器输出的6路分频信号进行选择以下为看门狗定时器的功能框图+含义:向WDCR.5-3位(看门狗核对位)写除101以外的任何数将导致系统复位。
含义:分频后的值与WDCLK有关。
1.1看门狗定时器的操作1.1.1概述看门狗的操作由三个寄存器进行控制n看门狗计数寄存器(WDCNTR)——这个寄存器包含了看门狗计数器的值n看门狗键位寄存器(WDKEY)——当向该寄存器先写55h,然后写AAh时,该寄存器将WDCNTR清零n看门狗控制寄存器(WDCR)——该寄存器包含了用于看门狗配置的如下控制位²看门狗禁止位²看门狗标志位²看门狗核对位(3位)²看门狗分频选择位(3位)1.1.2看门狗定时器时钟看门狗定时器时钟(WDCLK)是一种低频率的时钟。
dsp 看门狗定时器的作用解析
一、DSP 看门狗定时器介绍
看门狗在外围监控DSP 中软件的运行以及硬件的操作,当CPU 出现故障时,看门狗将执行系统复位。
如果软件进入了一个不正确的循环或者CPU 出现暂时的混乱,看门狗定时器将出现溢出来使系统复位。
在大多数情况下,DSP 短暂的混乱以及CPU 不正确的操作都可以被看门狗所清除并重新进行设置。
由于看门狗稳定的性能,其增加了CPU 的可靠性,以确保系统的完整。
在看门狗中这个外围设备中,所有的寄存器都是8 位的,连接到16 位CPU 的低8 位外围数据总线上。
240XA 看门狗定时器和C240 看门狗定时器唯一的区别就是其缺乏实时的中断能力。
看门狗定时器将通过对从CPU 出来的CLKOUT 进行分频而得到自己所需的时钟
二、看门狗定时器工作原理
使用时,WDT 将递增,直到溢出,或称超时。
除非处于休眠或空闲模式,WDT 超时会强制器件复位。
为避免WDT 超时复位,用户必须定期用。
// Step 5、用户特定函数,重新分配向量(可选择),使能中断: // 重新为WAKEINT 分配 PIE 向量,并指向相应的中断服务程序 EALLOW; PieVectTable.WAKEINT = &wakeint_isr; EDIS; // 使能WAKEINT 的中断INT1 IER |= M_INT1; // 使能 PieCtrlRegs.PIEIER1.bit.INTx8 = 1; // 对程序状态寄存器进行操作,避免清除WDOVERRIDE 标识位 EALLOW; SysCtrlRegs.SCSR.all = BIT1; EDIS; // 计数器清零 WakeCount = 0; // 中断计数 LoopCount = 0; // 循环计数 BP106 36// 使能全局中断,并配置为real-time debug 模式 EINT; // 使能全局中断INTM ERTM; // 使能全局 realtime 中断DBGM // Step 6、主循环 for(;; { LoopCount++; //用KickDog 操作看门狗Key 寄存器,避免产生WAKEINT 中断 // 通常情况下,需要在主循环或定时中断中对Key 进行操作 KickDog(; } } WAKEINT:位于PIE 的组1 的第8 中断 BP106 37// Step 7、中断服务程序 interrupt void wakeint_isr(void { WakeCount++; // 响应中断 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; } //--------------------------------------------------------------------------// KickDog: 此函数复位看门狗定时器 voidKickDog(void { EALLOW; SysCtrlRegs.WDKEY = 0x0055; SysCtrlRegs.WDKEY = 0x00AA; EDIS; } BP107 38void InitSysCtrl(void // 系统初始化 { Uint16 i; EALLOW; // 禁止看门狗模块 // SysCtrlRegs.WDCR= 0x0068; // 本例中不使用 //初始化锁相环 SysCtrlRegs.PLLCR = 0xA; // 等待锁相环稳定 for(i= 0; i< 5000; i++{} // HISPCP/LOSPCP 预定标寄存器设置 SysCtrlRegs.HISPCP.all = 0x0001; SysCtrlRegs.LOSPCP.all = 0x0002; // 使能选择的外设时钟 // 对于不用的时钟,一般情况下需要禁止相应的中断SysCtrlRegs.PCLKCR.bit.EVAENCLK=1; SysCtrlRegs.PCLKCR.bit.EVBENCLK=1; SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1; //SysCtrlRegs.PCLKCR.bit.SCIENCLKB=1; EDIS; BP107 } 39。