看门狗定时器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
看门狗定时器
(一)什么是看门狗
为了给初学者一个系统的概念,先介绍一下看门狗的基本概念。当嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现"跑飞",导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(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)
它能够禁止或允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁止中断并且能允许或禁止看门狗时钟输出。
如果用户想要使用看门狗作为普通时钟,请允许中断并且禁止看门狗时钟。
数据寄存器(WTDAT)
该数据寄存器用于设置看门狗定时器的超时值。在初始化看门狗操作中,WTDATA 的值不会自动加载到定时计数器中。首次定时器超时值为其初始值即0x8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中。一般情况下,WTDAT的值将被装载到WTCNT 寄存器中
计数寄存器(WTCNT)
注意:当看门狗时钟初始化使能时,看门狗数据寄存器里的内容不能自动装载到
时钟记数寄存器,所以看门狗时钟记数寄存器在使能前必须附一个初值。
(五)实验步骤
1. 按照标准新建一个工程名为WatchDog,并新建源文件、输入代码,设置好工程编译生成目标代码;
2.硬件连接:用串口线将PC 机的COM1 与实验箱的UART1 连起来,再用交叉网线将PC机的网口与实验箱的网口连起来,最后插上12V 电源;
3.下载、调试并运行;
4.结合实验内容和原理,观察实验现象,实验结果应该是
S3C2410 WatchDog Test
into tick
into tick
into tick
然后就会重启实验箱的引导程序;
5.完成实验练习