看门狗定时器参考资料
看门狗定时器

System Frequency/4
0.27306s
註:System Frequency 爲 480KHz。
總共有三種方法會産生系統重置,如下所示:
• RES 正常操作時由
引腳發生重置
• RES 在暫停模式由
引腳發生重置
• 正常操作時由看門狗定時器超時發生重置
暫停模式中的看門狗定時器超時與其他系統重置狀況不同,因爲看門狗定時器超時會執行
,則
過程中 次執行
都 此還 夠 實現 ″ ″ CLR WDT1 指令 不能清除看門狗定時器,因
是能 産生 WDT 溢出,
系統重
從 置, 而跳出閉環狀態。
3
就 避免 現 當 迴圈後 例 可以
這種情況的出 。 程式進入
, 如:
…… LOOP:
CLR WDT1
…… …… SZ
JMP LOOP
……CLR WDT2
第 句 為 ;在 loop 中執行 一 清除 ″0″ WDT 指令 後 第 句 為 ;在 loop 執行 二 清除 ″0″ WDT 指令
第 夠 若 死迴圈 迴圈 再 ″ ″ 一次執行 CLR WDT1 指令能 清除 WDT, 發生
令必須交換執行才能清除看門狗定時器的內容,否則,看門狗定時器很可能會因爲超時而 將系統重置。
1
HT47R20A-1 看門狗定時器(WDT)使用介紹
″ ″ 15
看門狗溢出時間周期爲 時鐘來源 /2 ,如下表所示。
時鐘來源
看門狗溢出周期
12KHz(WDTCLK)
2.73066s
32KHz(RTC)
1.00000s
……
CLR WDT2
;可以清除看門狗定時器的內容
WATCHDOG定时器-jammy

WATCHDOG定时器-jammys3c2440的看门狗定时器是当操作发生如噪声干扰、系统错误等故障时重启控制器。
看门狗定时器是可以作为一般的16位定时器用于响应中断请求,也可以是用于产生复位信号。
看门狗定时器的工作频率是将PCLK经过8位预分频器后,再通过16分频、32分频、64分频、或者128分频后得到的。
分频可在WTCON中设置。
用下面的公式算出watchdog定时器的工作频率:看门狗定时器的工作频率= 1/[ PCLK / (Prescaler value + 1) / Division_factor ]Prescaler value = 0~255Division_factor = {16,32,64,128}WTDAT & WTCNT当看门狗寄存器启动时,看门狗定时器数据寄存器(WTDAT)不能自动重装到定时计数器(WTCNT)。
因此,初始值必须在看门狗定时器启动前写入定时计数寄存器(WTCNT)。
l WATCHDOG TIMER CONTROL (WTCON) REGISTER 该寄存器用于允许/禁止看门狗定时器、中断,四种时钟信号的选择,以及预分频系数的设定。
l WATCHDOG TIMER DATA (WTDAT) REGISTERWTDAT寄存器用于设置看门狗定时持续时间。
在初始化看门狗定时器WTDAT的数值不能自动重载到定时计数器。
但是,当计数到0时,WTDAT会自动重载到WTCNT。
l WATCHDOG TIMER COUNT (WTCNT) REGISTERWTCNT寄存器是当前看门狗定时器正常工作下的数值。
注意,WTDAT寄存器的数值在初始化时不能重在到WTCNT寄存器,因此WTCNT寄存器需要在启动看门狗前设置好初始值。
演示程序:启动看门狗定时器后,程序进入LED闪烁循环,并且显示WTCNT的数值。
当WTCNT到0时候,系统重启。
/******************************************************函数名:void init_watchdog(void)作者:jammy-lee创建日期:2009-02-21说明:初始化看门狗定时器******************************************************/void init_watchdog(void){rWTCON = ((0x60<<8)|(3<<3)); //设置预分频值0x60,分频因子128rWTDAT = 0x6000;rWTCNT = 0x6000;rWTCON &= ~(1<<2); //禁止中断rWTCON |= ((1<<5)|(1<<0)); //启动看门狗,允许复位信号}/******************************************************函数名:void Main(void)作者:jammy-lee创建日期:2009-02-21说明: 主函数******************************************************/void Main(void){int wt_count;rGPBCON = 0x55555;rGPBUP = 0x7ff;while(1)Led(1,1);Uart_Printf("LED 1 power ON\n");delay(100);Led(1,0);Uart_Printf("LED 1 power ON\n");delay(100);wt_count = rWTCNT; //读取WTCNT寄存器当前的值Uart_Printf("the value of WTCNT is %d\n",wt_count); }}。
看门狗定时器

一、外部看门狗
一般硬件设计的时候使用芯片外部看门狗,该看门狗使用一个不停翻转GPIO来控制。
二、内部看门狗
一般ARM芯片都是有内部看门狗模块。
S5PV210内部看门狗模块有两个功能:
1、作为看门狗。
打开看门口狗后,如果没有“喂狗”,看门狗计数值减到0,会产生一个reset信号,S5PV210就会复位,从BL0重新执行代码。
2、普通的定时器。
可以产生周期性的中断。
三、210看门狗模块的框图
1、看门狗“喂狗”就是向计数寄存器赋一个新的计数值。
2、看门狗clock(基准周期)=
四、看门狗的寄存器
1、WTCON
2、WTDA T
3、WTCNT
4、WTCLRINT
五、实验程序。
第四章 MSP430F149看门狗定时器

#include <msp430x14x.h> void main(void) {
WDTCTL=WDT_ADLY_1000;//1000ms 定时 //WDT_ADLY_1000=WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL
P6DIR |=BIT0;//P6.0 输出 P6OUT |=BIT0;//P6.0 输出高电平关闭 LED 灯 IE1 |=WDTIE;//允许 WDT 中断 _EINT();//开放系统中断 while(1) {
例:设置看门狗间隔定时器模式,选择 ACLK(32768Hz)时钟源,定时 1s。
WDTCTL=WDTPW + WDTTMSEL + WDTCNTCL + WDTSSEL;
口令
定时工作模式 清除计数器
选择 ACLK
思考:
选择 ACLK(32786Hz)时钟源,定时 250ms/16ms/1.95ms,如何设置 WDTCTL?
说明:
WDTPW——口令,固定格式。
WDTCNTCL——计数器清零
WDTCTL.2(WDTSSEL)——WDTCTL 第二位时钟源选择位,
0:选择 SMCLK
1:选择 ACLK
WDTISx——定时间隔选择控制位,T 为时钟源时钟周期。
WDTISx=00,定时间隔 T×215 WDTISx=01,定时间隔 T×213
2、IE1 中断使能寄存器 1
7
6
5
4
3
2
1
0
NMIIE
WDTIE
rw-0
rw-0
NMIIE:非屏蔽中断允许控制位。
NMIIE=0,禁止 NMI 中断
XMC4000中文参考手册-第09章 窗口看门狗定时器(WDT)

9.8.1
初始化和启动操作
系统复位后,需要完成WDT模块的初始化。 • 检查最后一次系统复位的原因,以确定电源状态 - 读出SCU_RSTSTAT.RSTSTAT寄存器位段,确定最后一次系统复位的原因 - 依据最后系统复位的原因执行适当的操作 看门狗软件初始化序列 用SCU_CLKSET.WDTCEN寄存器位段启用WDT时钟 用SCU_PRCLR2.WDTRS寄存器位段释放WDT复位 用WDT_WLB寄存器设置窗口下限 用WDT_WUB寄存器设置窗口上限 配置外部看门狗服务指示(可选,请参阅SCU/HCU章节) 用SCU_WDTCLKCR寄存器选择和启用WDT输入时钟 用SCU_NMIREQEN寄存器在系统级上启用系统陷阱预警报警(可选,仅用在WDT预警 模式) 软件启动序列 - 选择模式(超时或预警)和用WDT_CTR寄存器启用WDT模块 服务看门狗 - 在WDT_TIM寄存器中,对编程时间窗口检查当前定时器值 - 在有效时间窗内,写魔字到WDT_SRV寄存器 9.8.2 重新配置和重新启动操作 - - - - - - -
参考手册 WDT, V2.3
9-3
V1.2, 2012-12 请遵守产品信息使用协议
XMC4500 XMC4000 家族
窗口看门狗定时器(WDT)
图 9-2
无预警复位
图 9-2中描绘的示例场景展示了在有效时间窗口内WDT模块成功服务后产生的两个连续的服务 脉冲。对于没有服务执行的情况,在计数器的值已经超过窗口上限值后立即触发在wdt_rst_req 输出上的复位请求生成。 9.3 预警模式
在预警模式时,溢出事件的作用在有和没有启用预警是不同的。当预警启用时,计数器第一次 超过上限时触发输出报警信号wdt_alarm。只能在下一个溢出产生复位请求。报警状态通过寄 存器WDTSTS指示且通过寄存器WDTCLR清除。清除报警状态将使WDT回到正常状态。报警 信号发送请求到SCU,在那里上报到NMI。
S3C44BOX看门狗定时器

看门狗可分为硬件和软件看门狗, S3C44BOX看门狗定 时器属于软件看门狗。
一 S3C44BOX看门狗定时器概述
S3C44BOX看门狗定时器特性: 1) 带中断请求的普通间隔定时器模式; 2) 当定时器计数值达到0时(时限),内部复位信号被激活
128个MCLK周期;
3) 16位的看门狗定时器;
4) 在定时器溢出时发出中断请求或复位。
2 S3C44BOX看门狗定时器在电子词典中的应用
看门狗测试流程图
三 S3C44BOX看门狗定时器应用编程
1) 看门狗定时器初始化程序
void initWDTimer(void) { rINTMSK=~(BIT_GLOBAL|BITWDT); rWTCON=(255<<8)|(3<<3)|(1<<0); rWTDAT=2000; rWTCNT=2000; rWTCON=rWTCON|(1<<5);
二 S3C44BOX看门狗定时器功能及应用描述
2 功能实现与控制
看门狗定时器框图
二 S3C44BOX看门狗定时器功能及应用描述
输入到计数器的时钟周期为:
T_wtd=1/(MCLK/(预分频值+1)/再分频因子)
有效的预分频值0到2^8-1, 看门狗的定时周期为: 通过WTCON寄存器配置 再分频因子可选为16、32、 64、128
//T_wtd=1/256/128,复位使能t=0.5ms
//使能看门狗
2) 喂狗程序
void feeddog(void) { rWTCNT=2000; }
S3C44BOX看门狗定时器
(Watch Dog Timer)
报告人:xxxx 组 员:xxxx xxxx
016:MSP430_WDT看门狗定时器

016:MSP430_WDT看门狗定时器1, 看门狗定时器概述看门狗定时器(WDT)是 MSP430 系列单⽚机中常⽤的⼀种部件。
在⼯业现场,往往会由于供电电源、空间电磁⼲扰或其他原因引起强烈的⼲扰噪声。
这些⼲扰作⽤于数字器件,极易使其产⽣误动作,从⽽失去应有的控制功能,引起 MSP430 发⽣“程序跑飞”事故。
若不进⾏有效的处理,程序就不能回到正常的状态,从⽽失去应有的控制功能。
看门狗定时器正是为了解放这类问题⽽产⽣的,尤其是在具有循环结构的程序任务中更为有效。
在正常操作器件,⼀次 WDT 定时时间到,将产⽣⼀次器件复位。
如果通过编制程序使 WDT 定时时间稍⼤于程序执⾏⼀遍所⽤的时间时,并且程序执⾏过程中都有对看门狗定时器清零的指令,使计数器重新计数,则程序正常执⾏时,就会在 WDT 定时时间到达之前对 WDT 清零,不会产⽣ WDT 溢出,如果由于⼲扰使程序跑飞,则不会在 WDT 定时时间到达之前执⾏ WDT 清零指令,WDT 就会产⽣溢出,从⽽产⽣系统复位 CPU 需⽤重新运⾏⽤户程序,这样程序就可以⼜恢复正常运⾏状态。
MSP430 看门狗除了具有上述系统监测的特定⽤途之外,还可以作为内部定时器来使⽤,当选择的时间到达之后,和其他定时器⼀样产⽣⼀个定时中断。
此外 WDT 还可以被完全停⽌活动以⽀持超低功耗应⽤2 看门狗定时器结构3 看门狗定时器寄存器[1] WDTCTL 看门狗控制寄存器WDTCTL 由两部分组成:⾼ 8 位是对 WDT 操作的控制命令。
要写⼊操作 WDT 的控制命令,出于安全原因必须先正确写⼊⾼字节看门狗⼝令。
⼝令位 5AH,如果⼝令写错将导致系统复位。
读 WDTCTL 时,不需要⼝令,可直接读取地址 120H 中的内容,读出数据低字节位 WDTCTL 的值,⾼字节始终位 69H。
WDTCTL 除了看门狗定时器的控制位之外,还有两个⽤于设置 NMI 引脚功能。
WDTISx:选择看门狗定时器的计时输出其中 T 是 WDTCNT 的输⼊时钟源周期。
6_看门狗定时器

在正常工作期间,一次看门狗定时时间将产生一次系统复位。如果通过编程使
看门狗定时时间稍大于程序中主循环执行一遍所用的时间,并且程序执行过程 中都有对看门狗定时器清零的指令,使计数值重新计数,程序正常运行时,就 会在看门狗定时时间到达之前对看门狗清零,不会产生看门狗溢出。如果由于 干扰使程序跑飞,则不会在看门狗定时时间到达之前执行看门狗清零指令,看 门狗就会产生溢出,从而产生系统复位,使CPU重新运行用户程序,这样程序就 又可以恢复正常运行。
定时时间/ms tsmclk *32768 tsmclk *8192 tsmclk *512 tsmclk *64
1 1
1 1
0 0
1 1
0 1
0 1
1000 250
15.63 1.95
taclk *32768 taclk *8192
taclk *512 taclk *64
看门狗定时器(WDT)
中断控制位
在应用中应根据需要选择合适的定时器模块。MSP430单片机的定时器模块功 能如下: ① 看门狗定时器:基本定时,当程序发生错误时执行一个受控的系统重启动 ② 定时器A:基本定时,支持软件和各种外围模块工作在低频、低功耗条件下 ③ 定时器B:基本定时,功能基本同定时器A,但比定时器A灵活,功能更强大
④ 实时时钟:基本定时,日历功能
#include <msp430f149.h> void main(void) { WDTCTL = WDT_ADLY_1000; // 定时周期设为1000ms IE1 |=WDTIE; // 使能WDT中断 P1DIR |= BIT0; // 将P1.0设为输出 _ _bis_SR_register(LPM0_bits + GIE);// 进入LPM0并使能全局中断 } //看门狗定时器中断服务程序 #pragma vector=WDT_VECTOR _ _interrupt void watchdog_timer(void) { P1OUT ^= BIT0; // 反转P1.0端口状态 }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
看门狗定时器参考资料:
S3C2410A 的看门狗定时器有两个功能:作为常规时钟,并且可以产生中断; 作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128 个时钟周期(PCLK)的复位信号. 主要特性如下:
通用的中断方式的16bit 定时器. 当计数器减到0(发生溢出) ,产生128 个PCLK 周期的复位信号. 下图为看门狗的电路示意图,看门狗时钟使用PCLK 作为他的时钟源,PCLK 通过预分频产生适合的看门狗时钟.
看门狗模块包括一个预比例因子放大器,一个是四分频器,一个16bit 计数器.看门狗的时钟源来自PCLK,为了得到较宽范围的看门狗信号,PCLK 先被预分频,之后再经过分频器分频.预分频比例因子的分频值,都可以由看门狗控制器(WTCON)决定,预分频值的有效范围从0 到256-1.分频因子可以选择16,32,64 或者128. 看门狗定时器记数值的计算公式如下: t_watchdog=1/ [PCLK/( prescaler value +1)/ Division_factor ] 看门狗的定时周期为T=WTCH×t_watchdog 一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中.因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中. 调试环境下的看门狗当S3C2410A 用嵌入式ICE 调试的时候,看门狗定时器的复位功能不能启动,看门狗定时器能从CPU 内核信号判断出当前CPU 是否处于调试状态, 如果看门狗定时器确定当前模式是调试模式,尽管看门狗能产生溢出信号,但是仍然不会产生复位信号.
5,S3C2410A 相关寄存器
WTCON――看门狗定时器控制寄存器看门狗控制寄存器能够禁止或者允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁止中断,并且能允许或禁止看门狗时钟输出.如果用户想要使用看门狗作为普通时钟,应该中断使能,禁止看门狗定时器复位.
WTDAT――看门狗定时器数据寄存器WTDAT 用于设置看门狗定时器的超时时间值,在初始化看门狗过程中,WTDAT 的值不会自动加载到定时计数器中,首次使用定时器超时值为其初始值即0x8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中.
WTCNT――看门狗定时器计数寄存器WTCNT 为看门狗定时器工作的时间计数器的当前计数值,注意在初始化看门狗操作后,看门狗数据寄存器(WTDAT)的值不能自动装载到看门狗计数寄存器(WTCNT)中, 所以看门狗被允许之前应高初始化看门狗计数寄存器的值.
6,实验程序
由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路.要实现看门狗的功能,只需要对看门狗的寄存器组进行操作.即对看门狗的控制寄存器(WTCON) , 看门狗数据寄存器(WTDAT) ,看门狗计数寄存器(WTCNT)的操作. 设计流程如下: 设置看门狗中断操作, 包括全局中断和看门狗中断的使能, 看门狗中断向量的定义. 对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因子,分频器的分
频值,中断使能和复位使能等. 对看门狗数据寄存器(WTDAT)和看门狗技术寄存器(WTCNT)的设置. 启动看门狗定时器.
6.1 主功能函数
int Main(void) {
ChangeClockDivider(1,1);
ChangeMPllValue(0xa1,0x3,0x1);
Port_Init();
Uart_Select(0);
Uart_Init(0,115200);
Uart_Printf("watchdog test is beginning\n");
watchdog_test();
while(1); }
6.2 看门狗复位功能程序实现
void watchdog_test(void) {
//Prescaler value=100; lock division factor=128 ;PCLK=67.5MHz
//t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.0002
//disable watchdog
rWTCON=((100<<8)|(3<<3));
//看门狗时钟周期T=WTCNT*t_watchdog=3S
//看门狗喂狗
rWTDAT=15000;
rWTCNT=15000;
//disable watchdog interrupt
rWTCON &= ~(3<<1);
//enable Watchdog timer;reset signal.
rWTCON|=((1<<5)|(1<<0));
while(1); }
6.3 看门狗定时器功能程序实现
void watchdog_test(void) {
//initialize interrupt registers
ClearPending(BIT_WDT);
//建立WatchDog 中断
pISR_WDT=(unsigned)watchdog_int;
//Prescaler value=100,clock division factor=128
//t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.00025856
//disable watchdog
rWTCON=((100<<8)|(3<<3));
//看门狗时钟周期T=WTCNT*t_watchdog=4S
//看门狗喂狗
rWTDAT=15000;
rWTCNT=15000;
rWTCON|=((1<<5)|(1<<2)); //enable Watchdog timer ang watchdog interrupt //rWTCON|=((1<<5)|(1<<2)|1);
//watchdog 复位,时间间隔为4S.
rWTCON|=(1<<5)|(1<<2); //每4S watchdog 一次中断.
//设置watchdog 为IRQ 中断模式
rINTMOD&=0xFFFFFDFF;
//开中断
EnableIrq(BIT_WDT);
while(f_ucSencondNo<11);
}。