看门狗定时器课件教学文案
- 格式:ppt
- 大小:411.00 KB
- 文档页数:9
第21章看门狗定时器使用及简单的接口扩展21.1看门狗定时器使用单片机应用系统受到干扰而导致死机出错后,都要进行复位,因此一定要有一个可靠的复位电路,以使单片机重启工作。
现在已经有专用的复位电路芯片供我们选用,专用的复位芯片具有快速上电复位、欠压复位等功能。
图21-1为看门狗电路的工作原理。
如果单片机工作工常,则会经常地将看门狗定时器(WDT)清除,那么看门狗定时器就不会溢出复位信号,应用系统正常工作;反之,若单片机工作不正常,程序跑飞或进入死循环,那么它不会去清除看门狗定时器,一段时间后,WDT溢出,输出复位信号给单片机,单片机重新启动工作。
图21-1 看门狗电路的工作原理A T89C51没有内置的看门狗定时器,在干扰严重的场合工作时,需要外部的看门狗定时器配合工作。
而新型的AT89S51已经在内部集成了看门狗定时器,无需再外添元件,使用方便可靠。
下面我们通过实例介绍其使用。
A T89S51的看门狗定时器实际上是一个14位的计数器,其地址位于A6H,第一次激活(启动)时,需依次向其写入01EH、0E1H。
以后每次写入01EH、0E1H是将看门狗定时器清除。
如不及时清除(例如单片机受干扰影响死机后),在16383个机器周期后将溢出,从而复位单片机令它重新启动。
21.2 P0~P3口的32个LED(发光管)依次流水点亮,形成“流水灯”实验我们这个实验是在看门狗启动的情况下做的,为了缩短程序长度,我们使用移位指令进行循环。
21.2.1 实现方法根据LED输出试验板上的P0~P3口排列,确定流水灯点亮顺序:P1.0→P1.7→P3.0→P3.7→P2.0→P2.7→P0.7→P0.0,反复循环。
每个口只有8位,4个口共有32个流水灯移位。
在寄存器R0中存入一个口流水灯长度(8位),再取点亮一个流水灯的立即数(如FEH)送累加器A中。
累加器A采用左循环或右循环移位,每移一次,送对应口显示,同时R0中长度减1,……等到R0中内容为零后,说明这个口的流水动作已结束。
一、外部看门狗
一般硬件设计的时候使用芯片外部看门狗,该看门狗使用一个不停翻转GPIO来控制。
二、内部看门狗
一般ARM芯片都是有内部看门狗模块。
S5PV210内部看门狗模块有两个功能:
1、作为看门狗。
打开看门口狗后,如果没有“喂狗”,看门狗计数值减到0,会产生一个reset信号,S5PV210就会复位,从BL0重新执行代码。
2、普通的定时器。
可以产生周期性的中断。
三、210看门狗模块的框图
1、看门狗“喂狗”就是向计数寄存器赋一个新的计数值。
2、看门狗clock(基准周期)=
四、看门狗的寄存器
1、WTCON
2、WTDA T
3、WTCNT
4、WTCLRINT
五、实验程序。
第十八章看门狗定时器概述S3C2410的看门狗定时器用于当系统被噪声或系统错误等故障打断时返回控制器操作状态。
它可以用作一个普通的16位内部定时器来请求中断。
WDT产生一个128个PCLK周期的复位信号。
特性—具有中断请求的正常内部定时器模式—当定时器计数值到达0时产生一个128个PCLK周期的内部复位信号看门狗定时器操作图18-1描述了WDT的功能方框图。
WDT只使用PCLK作为其时钟源。
PCLK 频率经过预定标器,然后再进行分频产生相应的WDT时钟。
预定标器的值和分频因数在WDT控制寄存器WTCON中指定,有效的预定标器的值在0-(2的8次方-1)之间,分频因数可选为16、32、64、128。
使用下式计算WDT频率和每个定时器时钟周期的容差t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor )WTDAT和WTCNT一旦WDT使能,WTDAT寄存器的值不能自动加载进WTCNT,因此必须在WDT启动前向WTCNT写入初始值。
调试环境的考虑当S3C2410在使用嵌入式ICE调试模式时,WDT将自动关闭。
WDT可以通过CPU核心信号--DBGACK判断当前是否处于调试模式,一旦DBGACK信号被断言,WDT的复位输出将会无效,因为看门狗被中止工作。
WDT控制寄存器WTCONWTCON寄存器允许使能/禁止WDT、选择4个不同的时钟信号源、使能/禁止中断、使能/禁止WDT输出。
WDT用于从故障后复位CPU,如果不需要复位,则应该禁止WDT。
如果希望将WDT用作普通定时器,使能中断并关闭看门狗。
WDT数据寄存器WTDATWTDAT寄存器中的值指定溢出的时间。
它不会在初始化WDT时自动加载到WTCNT中,但是用0x8000(初始值)将导致第一次溢出。
这种情况下,WTDAT的值将自动加载到WTCNT中。
WDT计数寄存器WTCNT显示WDT的当前值。
看门狗定时器看门狗定时器(⼀)什么是看门狗为了给初学者⼀个系统的概念,先介绍⼀下看门狗的基本概念。
当嵌⼊式系统运⾏时受到外部⼲扰或者系统错误,程序有时会出现"跑飞",导致整个系统瘫痪。
为了防⽌这⼀现象的发⽣,在对系统稳定性要求较⾼的场合往往要加⼊看门狗(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)它能够禁⽌或允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁⽌中断并且能允许或禁⽌看门狗时钟输出。
利用单片机内部定时器实现软件看门狗利用单片机内部定时器实现软件看门狗勤镐工控(05/09/04)软件看门狗(WATCH DOG)也叫做程序运行监视系统。
当程序运行受到干扰,程序飞到一个临时构成的死循环中时,系统将完全瘫痪,软件陷阱也无能为力了,这时就需要人工复位或硬件复位;如果没有人工操作和硬件复位系统,我们采用软件看门狗技术同样也能使系统复位,恢复正常。
这种程序监视系统就好比主人家养了一条狗,主人总要定时喂狗,如果主人忘了喂狗(程序受到干扰,跑飞掉了),狗就会大叫起来,提醒主人(程序重新运行)。
软件看门狗的特性如下:1、本身独立工作,基本上不依赖CPU;2、CPU在一个固定的时间间隔内和系统打一次交道(喂一次狗),以表明系统目前工作正常。
3、当CPU陷入死循环后,能及时发觉并使系统复位。
当系统陷入死循环后,怎样才能从死循环中跳出来呢?只有比这个死循环更高级的中断程序才能夺走CPU的控制权。
为此,可以用一个定时器来做软件看门狗,因为定时器在运行时不占用CPU资源,它是独立工作的,所以,将它的溢出中断设定为最高优先级中断,系统的其它中断均设为比它低级的中断优先级。
然后根据看门狗的定时时间来设定定时器初值。
软件看门狗启动后,系统工作程序必须经常“喂它”,且每两次之间的间隔不得大于定时器的定时时间。
程序中只要设立一个设置定时器初值的子程序,喂它时只要调用这个子程序即可。
当程序陷入死循环后,定时器溢出,产生高优先级中断,从而跳出死循环。
我们还可以在定时器中断服务程序中放置一条LJMP ERR 指令,即可使程序转向出错处理程序;由出错程序来完成以后的工作,并用软件的方法使系统复位。
以下是一个用定时/计数器T0作软件看门狗的完整程序:ORG 0000HAJMP MAINORG 000BHLJMP ERR MAIN :MOV SP , #60HMOV PSW , #00HMOV SCON , #00HMOV TMOD , #01H ;设置T0为16位定时器SETB ET0 ;允许T0中断SETB PT0 ;设置T0中断为高级中断MOV TL0, #00H ;设定T0的定时初值,定时时间约为16ms(6M 晶振)MOV TH0, #0B0HSETB EA ;开中断SETB TR0 ;启动T0 LOOP:...... ;主程序开始LCALL WATCH DOG ;调用喂狗子程序......LJMP LOOP WATCHDOG:MOV TL0, #00H ;喂狗子程序MOV TH0, #0B0HSETB TR0RET ERR:POP ACC ;定时器中断POP ACC ;看门狗软件复位程序CLR APUSH ACCPUSH ACC RETI在程序中,由于执行了中断服务程序后,PC 的指针已经指向0000H ,从而实现了软件复位的目的。