s3c2440看门狗定时器

S3C2440A 的看门狗定时器是用于当其由于噪声和系统错误引起的故障干扰时恢复控制器的工作。它也可以被用作普通 16 位内部定时器来请求中断服务。看门狗定时器产生 128 个 PCLK 周期的复位信号。

看门狗比较简单 ,在2440文档上才2页介绍。

看门狗定时器只使用 PCLK 作为其时钟源。预分频 PCLK 频率来产生相应看门狗定时器时钟,再将其结果频率分频。

看到了,跟前面的timer一样也是利用PCLK作为时钟源,可以使用以下等式来计算看门狗定时器的频率和每个定时器时钟周期的持续时间:

上面的预分频和分频系数可以在WTCON寄存器设置:

注意到里面有一个位是中断的禁止和使能,在这里我们不使能中断,时间到了之后就直接复位!

看门狗复位操作在正常工作状态下是不应该发生的,因此我们要想方设法地避免其发生。主要的方法就是在看门狗到时之前,重新对看门狗定时器的寄存器进行赋值,使它的定时器重新开始计时也就是喂狗.

看门狗定时器有两个寄存器WTDAT和WTCNT,WTDAT用于确定超时期限,WTCNT为当前看门狗定时器的计数值,在第一次设置看门狗超时时间时,这两个寄存器都要被写入超时时间的初始值。对于喂狗操作则是操作WTCNT寄存器。

这里实现的功能是上电之后30s看门狗复位,30s内如果有按键操作那么看门狗从初始值开始计数!

void init_wtdog(void)
{
	rWTCON	= 0xf939;		///enable reset;divider=128; Prescaler=0xf9=249

	rWTDAT	= 0xb70c;		/// 30s
	rWTCNT	= 0xb70c;
}

在tq2440开发板上按键key4实现喂狗:

//key4 feed watchwog
void key_int4(void)
{
	rWTCNT	= 0xb70c;
}

注意到看门狗复位之后从0x0地址处开始执行,所以这里的程序要烧写到nandflash上,在 openjtag仿真环境下无法首先复位后继续运行!在系统启动时好像无法判断究竟是上电启动还是被看门狗复位的!。

参考链接:

blog.csdn.net/zhaocj/article/details/5331712

时间: 2024-12-29 05:16:54

s3c2440看门狗定时器的相关文章

[ZigBee] 12、ZigBee之看门狗定时器——饿了就咬人的GOOD DOG

引言:硬件中的看门狗,不是门卫的意思,而是一只很凶的狗!如果你不按时喂它,它就会让系统重启!这反而是我们想要的功能~ 1.看门狗概述 看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数.如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数.如果看门狗减到0就认为程序没有正常工作,强制整个系统复位.因此可以用看门狗防止程序在跑飞的时候回不到正常模式. 看门狗可用于受到电气噪音.

S5PV210时钟,看门狗定时器

晶振:时钟源(操作主要有两个,倍频,分频) A8的时钟源: 时钟域,每个时钟域(不同的最高频率和最低频率)管理着不同的电路模块: 不同的时钟域对应不同电路模块表 时钟电路:懂得看时钟电路(时钟源选择开关配置(MUX_apll),倍频的配置(APLL),分频的配置(DIV_apll)) 更具体可参看arm,007笔记 -------------------------------------------------------------------------------------------

给NIOS II CPU增加看门狗定时器并使用

给NIOS II CPU增加看门狗定时器并使用 ? 配置看门狗定时器: 设置计时溢出时间为1秒 计数器位宽为32位 勾选No Start/Stop control bits 勾选Fixed period 不勾选Readable snapshot 勾选System reset on timeout.(Watchdog) 不勾选Timeout Pulse (1 clock wide) 这部分配置可以参见"Embedded Peripheral IP User Guide.pdf"中Inte

LPC1768的看门狗定时器使用

void wwdg_init(void) { LPC_SC->PCLKSEL0 |= (3<<0);//分频数为八分频 LPC_WDT->WDCLKSEL &= ~(3<<0); LPC_WDT->WDCLKSEL |= (1<<0);//设置wdt时钟为apb LPC_WDT->WDCLKSEL |= (1<<31);//锁定时钟源 LPC_WDT->WDTC = 0xffff;//设定重载值 LPC_WDT->

基于S3C2440的嵌入式Linux驱动——看门狗(watchdog)驱动解读

本文将介绍看门狗驱动的实现. 目标平台:TQ2440 CPU:s3c2440 内核版本:2.6.30 1. 看门狗概述 看门狗其实就是一个定时器,当该定时器溢出前必须对看门狗进行"喂狗",如果不这样做,定时器溢出后则将复位CPU. 因此,看门狗通常用于对处于异常状态的CPU进行复位. 具体的概念请自行百度. 2. S3C2440看门狗 s3c2440的看门狗的原理框图如下: 可以看出,看门狗定时器的频率由PCLK提供,其预分频器最大取值为255+1:另外,通过MUX,可以进一步降低频率

mini2440裸机试炼之——看门狗中断和复位操作

看门狗的工作原理: 设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序正常运行时,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用. 看门狗具有两个功能: 1. 当做常规时钟,可以产生中断: 2. 当看门狗定时器使用,当计数器WTCNT为0时,产生复位: 看门狗的功能方框图: 我程序中PCLK为50MHz,预分频值=77,时钟除数因子选128, 时钟周期t_wat

看门狗驱动程序

看门狗是当CPU进入错误状态后,无法恢复的情况下,使计算机重新启动 由于计算机在工作时不可避免的受到各种各样的因素干扰,即使再优秀的计算机程序也可能因为这种干扰使计算机进入一个死循环,更严重的就是导致死机. 有两种办法来处理这种情况: 一是:采用人工复位的方法 二是:依赖于某种硬件来执行这个复位工作.这种硬件通常叫做看门狗(Watch Dog,WD) 看门狗,就像一只狗一样,在那看着们,计算机中通常用定时器来处理这种周期性的动作 看门狗实际上是一个定时器,其硬件内部维护了一个定时器,每当时钟信号

CC2541蓝牙学习——看门狗

看门狗是在软件跑飞的情况下CPU自恢复的一个方式,看门狗分为硬狗和软狗,硬狗就是由专门的看门狗硬件电路实现看门狗功能,看门狗芯片也比较多,比如DS1232,除了看门狗功能外还有电源电压监测功能.软狗就是由软件实现的看门狗功能,现在很多CPU都自带了软狗,很难说硬狗好还是软狗好,如果软狗够用,尽量使用软狗简化设计,看门狗说白了就是一个定时器!,当软件在选定的时间间隔内不能置位看门狗定时器(WDT),WDT就复位系统.看门狗可用于电噪声,电源故障或静电放电等恶劣工作环境或高可靠性要求的环境.如果系统

Part5核心初始化_lesson3---关闭看门狗

1.看门狗---作用 2.看门狗工作方式 3.原理图 时钟源来自于PCLK经过分频器,经过选择器,输出到作为看门狗定时器,WTDAT为一个预载值,当它计数为零的时候,还没有给WTDAT赋值,那么它会发出一个重启信号RESET. 找到S3C6410X文件,找到里面的watch dog章节, 关闭代码如下: start.s代码: