看门狗(WatchDog)守时器和PWM守时功用意图不一样。它的特点是,需求不停地承受信号(一些外置看门狗芯片)或从头设置计数值(如S5PC100的看门狗操控器),坚持计数值不为0。一旦一段时刻接纳不到信号,或计数值到0,看门狗将宣布复位信号复位体系或发生中止。(扩展阅览:脉冲宽度调制守时器)
看门狗的效果是微操控器遭到搅扰进入过错状况后,使体系在一守时刻距离内复位。因而看门狗是确保体系长时间、牢靠和安稳运转的有用办法。现在大部分的嵌入式芯片内都集成了看门狗守时器来进步体系运转的牢靠性。
S5PC100处理器的看门狗是当体系被毛病(如噪声或许体系过错)搅扰时,用于微处理器的复位操作,也能够作为一个通用的16位守时器来恳求中止操作。看门狗守时器发生128个PCLK周期的复位信号。首要特性如下:
● 通用的中止方法的16位守时器。
● 当计数器减到0(发生溢出)时,发生128个PLK周期的复位信号。
看门狗守时器的功用框图如图10-5所示。
图1 S5PC100的看门狗的功用框图
1. 看门狗软件程序设计流程
由于看门狗是对体系的复位或许中止的操作,所以不需求外围的硬件电路。要完成看门狗的功用,只需求对看门狗的寄存器组进行操作,即对看门狗的操控寄存器(WTCON)、看门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。
其一般流程如下。
(1)设置看门狗中止操作包含大局中止和看门狗中止的使能及看门狗中止向量的界说,假如仅仅进行复位操作,这一步能够不必设置。
(2)对看门狗操控寄存器(WTCON)的设置,包含设置预分频份额因子、分频器的分频值、中止使能和复位使能等。
(3)对看门狗数据寄存器(WTDAT)和看门狗计数寄存器(WTCNT)的设置。
(4)发动看门狗守时器。
2. 看门狗寄存器的界说
/*
*WATCHDOG 寄存器的界说
*/
typedef struct {
unsigned int WTCON ;
unsigned int WTDAT ;
unsigned int WTCNT ;
unsigned int WTCLRINT ;
}wdt;
#define WDT (* (volatile wdt *)0xEA200000 )
3. 看门狗寄存器的初始化
void wdt_init( )
{
WDT.WTCNT = 0X277e;
//WDT.WTDAT = 0X277e;
WDT.WTCON = (1<<0)|(3<<3)|(1<<5)|(255<<8);
// 66MHZ 预分频255 得到255824HZ 再进行128分频得到得到f = 2022HZ
// data * 1/f = 5 延时5秒 得到data = 0x277e
}
4. 看门狗主程序的编写
#include “s5pc100.h”
int main()
{
int i;
GPG3.GPG3CON = (~(0xf<<4)&GPG3.GPG3CON) | (0X1<<4);
GPG3.GPG3DAT = 0x2;
// 点亮LED用来测验看门狗的复位功用
wdt_init();
while(1);
return 0;
}
5. 调查试验成果
程序运转5秒后,LED就会平息,由于此刻的CPU发生了复位。