看门狗定时器参考资料
看门狗定时器
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端口状态 }
MSP430学习点滴——看门狗定时器
MSP430学习点滴——看门狗定时器看门狗有三种工作模式:停止模式,计时器模式,看门狗模式。
控制寄存器WDTCTL 由两部分组成,高8 位用作口令,低8 位实现对WDT 的控制操作。
要实现对WDT 的操作控制,必须先写入高字节看门狗口令。
口令为5AH,头文件里一般将WDTPW 宏定义为5AH.WDTCTL 寄存器各位定义如下:15~8 7 6 5 4 3 2 1 0 口令HOLD NMIES NMI TMSEL CNTCL SSEL IS1 IS0IS0 IS1 选择看门狗定时器的定时输出,其中T 是WDTCNT 的输入时钟源周期。
一般宏定义WDTIS0 为0x0001,WDTIS1 为0x0002. 0 T*2(PUC 复位后的值)1 T*22 T*23 T*2SSEL选择WDTCNT 的时钟源。
一般宏定义WDTISSEL 为0x0004. 0 SMCLK (PUC 复位后的值) 1 ACLKCNTCL 当该位为1 时清除WDTCTL。
一般宏定义WDTCNTL 为0x0008.TMSEL 工作模式的选择。
一般宏定义WDTTMSEL 为0x0010. 0 看门狗模式(默认) 1 定时器模式NMI选择RST/NMI 引脚功能,在PUC 后被复位。
一般宏定义WDTNMI 为0x0020.0 RST/NMI 引脚为复位端 1 RST/NMI 引脚为边沿触发的非屏蔽中断输入。
NMIES 选择中断的边沿触发方式。
一般宏定义WDTNMIES 为0x0040. 0 上升沿触发NMI 中断1 下降沿触发NMI 中断HOLD 停止看门狗定时器工作降低功耗。
一般宏定义WDTHOLD 为0x0080. 0 WDT 功能激活1 时钟禁止输入,计数停止。
因此,可以根据WDTCTL 寄存器的TMSEL 和HOLD 控制位设置WDT 工作在看门狗模式、定时器模式和低功耗模式。
C 语言实现低功耗模式的语句:WDTCTL = WDTPW + WDTHOLD;C 语言实现定时器模式的语句:WDTCTL =WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0;C 语言实现看门狗模式的语句:设置看门狗:WDTCTL = WDT_MRST_0_5。
第12章看门狗定时器
位6:WDDIS,看门狗禁止位。仅当SCSR2寄存器的 WD OVERRIDE位为1时,该位才能被写。
0:看门狗被使能。 1:看门狗被禁止。 位5-位3:WDCHK2-WDCHK0,看门狗检验位(3 个)。当向WDCR控制寄存器写时,这三位必须被写为101, 否则产生系统复位。 位2-位0:WDPS2-WDPS0,看门狗预定标选择位。这 些位决定了看门狗的溢出频率,如下表所示。
1
WD模块结构框图 WDCLK=CLKOUT/512=CPUCLK/512
2
WD模块结构框图
3
12.2 WD操作
1. WD的时钟 WD的时钟WDCLK是一个低频时钟, 由CPU的
输出时钟CLKOUT提供。 WDCLK=CLKOUT/512=40MHz/512=78 125Hz
2. 定时器的悬挂 因为WDCLK的时钟是由CLKOUT分频产生的,当
7
8
禁止看门狗定时器汇编语言程序。
LDP #0E0H
;数据页指向7000H~707FH
SPLK #68H,WDCR ; 禁止看门狗, D6=WDDIS=1
禁止看门狗定时器C语言程序。
*WDCR=0x0068; //禁止看门狗
9
复位看门狗汇编语言宏指令 KICK_DOG .macro;复位看门狗 LDP #0E0H SPLK #5555H,WDKEY SPLK #0AAAAH,WDKEY LDP #0H .endm
CPU被挂起时(即CPU进入HALT低功耗模式), WDCLK被停止。
4
12.3 WD控制寄存器
共有3个寄存器控制着WD的操作: (1) WD计数寄存器(WDCNTR)—8个位为8位WD计数 器的值,只读。 向WD复位关键字寄存器写入正确的序列会清除 WDCNTR且可阻止系统复位,但并不会清除自行计数器。 (2) WD复位关键字寄存器(WDKEY),也称为钥匙寄存 器—当写一个55h后紧随写入一个AAh,则清除WDCNTR。 任何的其他值都会引起系统复位。 位7-0:这些只写数据位为8位复位关键字值。
PIC单片机看门狗定时器和上电延时定时器
寄存器 9-4:
WDTCONINV:看门狗定时器控制取反寄存器 写入时会将 WDTCON 中的选定位取反,读取时获得的值未定义
bit 31 bit 31-0
bit 0 将 WDTCON 中的选定位取反 在一个或多个位中写入 1 会将 WDTCON 寄存器中的相应位取反,但不会影响未实现位或只读位。写 入 0 不会影响该寄存器。 示例:WDTCONINV = 0x00008001 时,会将 WDTCON 寄存器中的 bit 15 和 bit 0 取反。
看门狗定时器和上电延时定时器 SFR 汇总
Bit 31/23/15/7 — — ON — Bit 30/22/14/6 — — — Bit 29/21/13/5 — — — Bit 28/20/12/4 — — — WDTPS<4:0> 写入时会将 WDTCON 中的选定位清零,读取时获得的值未定义 写入时会将 WDTCON 中的选定位置 1,读取时获得的值未定义 写入时会将 WDTCON 中的选定位取反,读取时获得的值未定义 — — — — — — — WDTO — — — SLEEP — — — IDLE — — CM BOR — — VREGS POR Bit 27/19/11/3 — — — Bit 26/18/10/2 — — — Bit 25/17/9/1 — — — — Bit 24/16/8/0 — — — WDTCLR
9
看门狗定时器 上电延时定时器
© 2010 Microchip Technology Inc.
初稿
DS61114D_CN 第 9-1 页
PIC32MX 系列参考手册
9.1 简介
本章介绍 PIC32MX 器件的看门狗定时器(Watchdog Timer,WDT)和上电延时定时器(Power-up Timer, PWRT)模块。 WDT 和 PWRT 的框图请参见图 9-1。 WDT 被使能时,工作于内部低功耗 RC (Low-Power RC, LPRC)振荡器时钟源。 WDT 可用于 检测系统软件故障,如果软件未定期清零 WDT 的话,器件将被复位。可使用 WDT 后分频器选 择各种 WDT 超时周期。 WDT 还可用于将器件从 SLEEP (休眠)或 IDLE (空闲)模式唤醒。 在 PWRT 有效时,它会在正常的上电复位 (Power-on Reset, POR)启动周期完成之后将器件保 持在复位状态 64 毫秒。这可以提供一段额外的时间,让主振荡器(Primary Oscillator,POSC)时 钟源和电源得以稳定。类似于 WDT, PWRT 也使用 LPRC 作为其时钟源。详情请参见图 9-1。 下面列出了 WDT 模块的部分主要特性: • 可配置或由软件控制 • 用户可配置的超时周期 • 可将器件从 SLEEP (休眠)或 IDLE (空闲)模式唤醒 图 9-1: 看门狗定时器和上电延时定时器框图
看门狗
看门狗电路所在院系:化工学院化工机械所在班级:10级自动化<1>班学生姓名:学生学号:看门狗定时器看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。
如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。
如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。
使能时,WDT将递增,直到溢出,或称“超时”。
除非处于休眠或空闲模式,WDT 超时会强制器件复位。
为避免WDT 超时复位,用户必须定期用PWRSAV 或CLRWDT 指令将看门狗定时器清零。
如果WDT 在休眠或空闲模式下超时,器件将唤醒并从PWRSAV 指令执行处继续执行代码。
在上述两种情况下,WDTO 位(RCON<4>)都会置1,表示该器件复位或唤醒事件是由于WDT超时引起的。
如果WDT 将CPU从休眠或空闲模式唤醒,“休眠”状态位(RCON<3>)或“空闲”状态位(RCON<2>)也会置1,表示器件之前处于省电模式。
在正常操作期间,一次WDT超时溢出将产生一次器件复位。
当器件处于休眠状态时,一次WDT超时溢出将唤醒器件,使其继续正常操作(即称作WDT 唤醒)。
对WDTE 设置位清零可以永久性地关闭WDT。
后分频器分配完全是由软件控制,即它可在程序执行期间随时更改。
为避免发生不可预测的器件复位,当从Timer0 预分频器的分配改为WDT 后分频器的分配时,必须执行下列指令序列。
即使WDT 被禁止,也要执行这个指令序列。
WDT框图看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。
它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位。
也可以用于将器件从休眠或空闲模式唤醒,看门狗定时器对微控制器提供了独立的保护系统,当系统出现故障时,在可选的超时周期之后,看门狗将以RESET信号作出响应,像x25045就可选超时周期为1.4秒、600毫秒、200毫秒三种。
看门狗器件资料 SP705 706 707 708 813L 813M
140
200
280
ms
注解 2
复位输出电压
注解 2
Vcc-1.5 0.8
ISOURCE=800uA
V
ISOURCE=4uA,Vcc=1.1V
0.4
ISINK=3.2mA
0.3
Vcc=1V,ISINK=50uA
看门狗溢出周期,tWD 1.00
1.60
2.25
S
SP705,SP706,SP813L,SP813M
图 13 SP707/708/813L/813M RESET 输出电压 vs 电压源 & SP813L/813M RESET 响应时间电路图
特性
SP705-708/813L/813M 系列提供 4 种功能: 1 在上电,下电及掉电情况下复位输出。 2 如果看门狗输入引脚在 1.6S 内没有接收到一个信号,看门狗输出将为低。 3 一个 1.25V 的阀值检测器,可以监测供电失败警告,及低电池状态。或监控一个非+5V 的电源。 4 支持低电平手动复位,允许外部按键开关产生 RESET 信号。
———
WDO
看门狗输出—当内部看门狗定时器完成 1.6s的计时,其 8
2
-
-
8
2
———
将被拉低;其不会升高,直到看门狗被清为 0。 WDO在
———
低电平状态下将为LOW。当Vcc低于复位阈值, WDO将为
—————
———
低。然而,与RESET不同,WDO没有最小的脉冲宽度限制。
一旦Vcc超过复位阈值,WDO将立即持续为HIGH,之间没
8
-
-
6
8
———
门狗定时器将溢出,WDO将为低。将WDI浮空,或者将WDI
14-LPC111x_看门狗定时器(WDT)
u p .wh ut.ed u.c nUM10398第14章:LPC111x看门狗定时器(WDT)ReRev v.00.10—11J a nuary2020110U s er manual 1.如何阅读本章所有LPC111x系列处理器的WDT模块完全一致。
2.特性•如果没有周期性重装计数值(即喂狗),则产生片内复位。
•支持调试模式。
•可通过软件允许看门狗,但禁止看门狗需要硬件复位或看门狗复位/中断。
•如果看门狗被允许,不正确/不完整的喂狗时序会产生复位/中断。
•具有看门狗复位的标志。
•可编程的32位定时器(带有内部预分频器)。
•时钟周期可选,从(T WDCLK×256×4)到(T WDCLK×232×4),取(T WDCLK×4)的倍数。
•可在系统控制块中选择内部RC振荡器(IRC)、主时钟或看门狗振荡器,来做为看门狗的时钟(WDCLK)源,见表3–23。
这样,看门狗定时器在不同功耗条件下,有多种可能计时选择。
为增加可靠性,还提供了一个看门狗定时器专用的完整内部时钟源,它不依赖于外部晶振及其相关元件和线路。
3.应用看门狗的目的是为了使微控制器在程序运行进入错误状态时,使系统在一个合理的时间内复位。
当看门狗被允许之后,如果用户程序没有在预定的时间内进行“喂狗”(或重新装载计数值),看门狗将复位系统。
4.描述看门狗定时器包括一个固定的4分频器和1个32位计数器,时钟通过4分频器送给送定时器。
每到一个时钟,定时器计数值减1。
开始递减的值,最小必须是0xFF;如果设定小于0xFF的值,则默认将0xFF装载到计数器。
因此,看门狗最小时间是(TWDCLK×256×4),最大时间是(TWDCLK×232×4),取(TWDCLK×4)的倍数。
看门狗必须按如下方法使用:1.在WDTC寄存器中设定看门狗定时器重装载值。
LPC2103之看门狗定时器
LPC2103之看门狗定时器WatchDog Timer (WDT)page225 看门狗定时器的定时范围为TPCLK x 256x 4 到TPCLK x 232 x 4)。
看门狗定时器的设置步骤如下:?在WDTC 寄存器设置看门狗定时器的重装值?在WDMOD 寄存器设置模式?先后写入0xaa 和0x55到WDFEED 寄存器以启动看门狗定时器?为防止看门狗产生复位/中断,必须在看门狗计数器下溢前进行喂狗当看门狗定时器下溢,程序计数器将如同产生了外部复位信号一样从0x00000000 地址重新启动。
看门狗定时输出标志(WDTOF)能够检测并是否看门狗导致了复位。
WDTOF 标志位必须软件清除。
看门狗相关寄存器寄存器功能访问复位值地址WDMOD 看门狗模式寄存器,这个寄存器包括了看门狗定时器的基本模式和状态R/W00xE000 0000WDTC 看门狗定时器常量寄存器,存放定时器计数值R/W0XFF0xE0000004WDFEEDWatchdog Feed sequence register,写入oxaa 和0x55 重新加载计数值WONA0xE000 0008WDTV 看门狗定时器值寄存器,该寄存器读出定时计数当前值RO0XFF0xE000 000CWatchdog Mode register (WDMOD - 0xE000 0000)看门狗操作模式选择WDENWDRESET 操作模式0X (0 or 1)不启动看门狗定时器10 看门狗中断模式。
运行看门狗中断,但WDRESET 不使能。
当看门狗定时器下溢,WDINT 标志位将置位并且产生看门狗中断请求11 看门狗复位模式。
运行看门狗中断且WDRESET 使能。
看门狗定时器下溢将复位控制器,一旦WDEN 或WDRESET 位设置后将不能够软件清除,只有在外部复位或者看门狗定时器下溢时才会被清除。
当看门狗定时器溢出时,看门狗定时器溢出标志位WDTOF 置位。
单片机实践-IAP15W4K58S4单片机的看门狗定时器
11 看门狗定时器作用
单片机的“看门狗定时器”遵循同样的基本方法。如果每隔一定间隔不刷新定时 器,它将溢出,定时器溢出将复位系统。即使经过仔细规划和设计,单片机系统也可 能由于出乎意外的问题而程序跑飞或者“死机”,这种看门狗就是用来处理此类情况 。看门狗可用于在特定的情况下从这种状态恢复。
2 看门狗定时器寄存器
(1)看门狗控制寄存器WDT_CONTR(Watch Dog Timer Control Register)
寄存器
地址
B7
B6
B5
B4
B3
B2 B1 B0
WDT_CONTR C1H WDT_FLAG — EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0
WDT溢出时间(ms)
IAP15W4K58S4单片 机的看门狗定时器
CONTENTS
看门狗定时器作用 看门狗定时器寄存器 看门狗定时器应用
11 看门狗定时器作用
假设有一只饥饿的狗正在看守着一所房子,而有人要闯入。如果这个强盗的同谋 以2分钟的间隔不停地向看门的狗扔肉块,那么这只狗将忙于吃食物而忽视保卫工作 ,因此将不会吠叫。然后,如果同谋扔完了或由于其它原因忘记喂狗,狗将开始吠叫 ,从而惊动邻居、房屋的主人。
39.3 78.6 157.3 314.6 629.1 1250 2500 5000
2 看门狗定时器寄存器
(1)看门狗控制寄存器WDT_CONTR(Watch Dog Timer Control Register)
寄存器
地址
B7
B6
B5
B4
B3
B2 B1 B0
WDT_CONTR C1H WDT_FLAG — EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0
看门狗定时器参考资料
看门狗定时器参考资料: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 watchdogrWTCON=((100<<8)|(3<<3));//看门狗时钟周期T=WTCNT*t_watchdog=3S//看门狗喂狗rWTDAT=15000;rWTCNT=15000;//disable watchdog interruptrWTCON &= ~(3<<1);//enable Watchdog timer;reset signal.rWTCON|=((1<<5)|(1<<0));while(1); }6.3 看门狗定时器功能程序实现void watchdog_test(void) {//initialize interrupt registersClearPending(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 watchdogrWTCON=((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);}。
看门狗定时器
看门狗定时器看门狗定时器(⼀)什么是看门狗为了给初学者⼀个系统的概念,先介绍⼀下看门狗的基本概念。
当嵌⼊式系统运⾏时受到外部⼲扰或者系统错误,程序有时会出现"跑飞",导致整个系统瘫痪。
为了防⽌这⼀现象的发⽣,在对系统稳定性要求较⾼的场合往往要加⼊看门狗(WATCHDOG)电路。
看门狗的作⽤就是当系统“跑飞”⽽进⼊死循环时,恢复系统的运⾏。
(⼆)看门狗的⼯作原理给出看门狗的基本的⼯作原理:见下两条:1. 其基本原理为:设本系统程序完整运⾏⼀周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序运⾏⼀周期后就修改定时器的计数值,只要程序正常运⾏,定时器就不会溢出,若由于⼲扰等原因使系统不能在Tp 时刻修改定时器的计数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运⾏,从⽽起到监控作⽤。
2. 在⼀个完整的嵌⼊式系统或单⽚机⼩系统中通常都有看门狗定时器,且⼀般集成在处理器芯⽚中,看门狗实际上就是⼀个定时器,只是它在期满后将⾃动引起系统复位。
(三)S3C2410 的看门狗对于我们所使⽤的S3C2410 的看门狗定时器有两个功能:1. 作为常规时钟,并且可以产⽣中断。
2. 作为看门狗定时器使⽤,当时钟计数减为0(超时)时,它将产⽣⼀个128个时钟周期的复位信号。
S3C2410的看门狗可以被⽤做⼀个普通的⼗六位的记数器来请求中断服务。
下图为看门狗时钟的电路⽰意图,看门狗时钟使⽤PCLK 作为它的时钟源,PCLK通过预分频产⽣适合的看门狗时钟。
预分频值和分频因⼦在看门狗时钟控制器寄存器(WTCON)中被指定。
预分频值的有效范围从0 到28-1。
分频因⼦可以选择16,32,64 或者128。
看门狗定时器计数值的计算公式如下:输⼊到计数器的时钟周期为t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]看门狗的定时周期为T=WTCN T×t_watchdog注意:⼀旦看门狗的时钟已经开始使⽤,它的数据寄存器(WTDAT)中的值将不会⾃动读到时间寄存器中间去(WTCNT),由于这个原因,你必须在看门狗记时器启动之前就将⼀个初始值写⼊到看门狗时间记数寄存器(WTCNT)中间去(四)看门狗的相关寄存器看门狗控制寄存器(WTCON)它能够禁⽌或允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁⽌中断并且能允许或禁⽌看门狗时钟输出。
看门狗定时器实验
看门狗定时器实验1.实验目的(1)掌握LM3S8962中的看门狗定时器(WDT)的功能和使用方法(2)掌握正确使用看门狗的方法2.实验内容(1)ARM的初始化配置(2)WDT的初始化和中断/复位设置(3)编程演示使用看门狗对系统进行监控3.WDT的功能图1 WDT模块结构图嵌入式控制系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。
为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(Watchdog)电路。
看门狗电路的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。
在Stellaris 系列ARM里集成有硬件的看门狗定时器模块。
该模块有两个功能:当看门狗定时器的复位功能禁能时,可以把看门狗作为一个普通定时器来使用;当看门狗定时器的复位功能使能时,用作看门狗定时器,一旦产生了“二次超时”事件,将引起处理器复位。
看门狗定时器具有“二次超时”特性。
当32位计数器在使能后递减计数到0 状态时,看门狗定时器模块产生第一个超时信号,并产生中断触发信号。
在发生了第一个超时事件后,32 位计数器自动重装看门狗定时器装载寄存器(WDTLOAD)的值并重新递减计数。
如果没有清除第一个超时中断状态,则当计数器再次递减到0 时,且复位功能已使能,则看门狗定时器会向处理器发出复位信号。
如果中断状态在32位计数器到达其第二次超时之前被清除,则自动重装32位计数器,并重新开始计数,从而可以避免处理器被复位。
为了防止在程序跑飞时意外修改看门狗模块的配置,特意引入了一个锁定寄存器。
在配置看门狗定时器之后,只要写入锁定寄存器一个不是十六进制0x1ACCE551的任何数值,看门狗模块的所有配置都会被锁定,拒绝软件修改。
因此以后要修改看门狗模块的配置,包括清除中断状态(即喂狗操作),都必须要首先解锁。
解锁方法是向锁定寄存器写入十六进制数值0x1ACCE551 。
如果在看门狗定时器计数器正在计数时把新的值写入WDTLOAD,则计数器将装入新的值并继续计数。
- 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);
}。