S5PC100看门狗定时器
2013-03-25 15:50
225 查看
转自: S5PC100看门狗定时 作者:杨胜利,华清远见嵌入式培训讲师。
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位。也可以用于将器件从休眠或空闲模式唤醒。
看门狗(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发生了复位。
推荐阅读:
1[b]、基于S5pc100
处理器的ADC驱动[/b]
2、[b]S5pc100裸奔全攻略之流水灯[/b]
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位。也可以用于将器件从休眠或空闲模式唤醒。
看门狗(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发生了复位。
推荐阅读:
1[b]、基于S5pc100
处理器的ADC驱动[/b]
2、[b]S5pc100裸奔全攻略之流水灯[/b]
相关文章推荐
- S5PC100看门狗定时器(源码解读)
- 嵌入式软件开发培训笔记——S5PC100接口开发(GPIO输入/输出、定时器、中断、UART、ADC、IIC)
- S5pc100裸板全攻略之SPI
- s5pc100串口裸板程序uart0
- S5pc100裸板全攻略之SPI
- S5PC100之LCD驱动分析
- S5PC100裸板更新程序_update
- FS_S5PC100之madplay移植
- Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。 Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。 Output 对于每组
- php100教程资料46~95讲分享
- 微软100题-求连续子数组之和的最大值+题目变形
- 使用延云YDB动态列与Ya100动态映射搞定12w列的大宽表【使用步骤】
- AT89S52的看门狗定时器
- stm32F1使用us-100超声波测距
- php100视频之Ajax+PHP检查用户名或邮件(三)【50】
- 求从1加到100的值
- 100 的阶乘末尾有多少个0?
- iOS OC中获取100以内的所有合数,获取某个合数的所有因数.
- 【100题】斐波那契数列(3)-----数学归纳法
- 100. Same Tree