S5PC100看门狗定时器
看门狗(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发生了复位。
S5PC100看门狗定时 相关文章:
- S5PC100看门狗定时器源码解读(11-19)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)