S3C2440看门狗解析
S3C2440A的看门狗定时器是用于当其由于噪声和系统错误引起的故障干扰时恢复控制器的工作。它可以被用作普通16位内部定时器来请求中断服务。看门狗定时器产生128个PCLK周期的复位信号
也就是说,在某些环境下,看门狗可以当做定时器使用,当他中断的时候并不发生复位,只发生中断,我看看图
看门狗的中断和复位信号是可以依靠wtcon来切断的(看门狗的时钟是无法切断的)
使用看门狗主要靠这几个寄存器
用来选择时钟源,分频系数,启动看门狗以及看门狗中断和复位的连接
流程基本上就是,第一次对wtcnt赋值之后启动看门狗,看门狗自动减,到达0的时候触发中断,如果连接了复位则触发复位
未连接则触发中断,另外,
看门狗定时器数据寄存器(WTDAT)的值不能被自动重载到定时计数器(WTCNT)中。由于这个理由,必须在看门狗定时器启动前写入一个初始值到看门狗定时器计数寄存器(WTCNT)中
请看具体代码,两种看门狗的使用都有
#include "watchdog.h" u8 wwdgUp = 0; void __irq Wdt_Int(void)
{
rSRCPND |=BIT_WDT_AC97;
rINTPND |=BIT_WDT_AC97;
rSUBSRCPND |= BIT_SUB_WDT; //清除中断标志 // WatchdogInit(0);
wwdgUp = 1;
} //看门狗不连接系统复位
//prescaler 分频系数 8位
//mux 始终选择 0 16 1 32 2 64 3 128
//countValue 计数值
void WWDGInitForTimer(u8 prescaler,u8 mux,u16 countValue)
{ rWTCON &= ~(1<<5);//看门狗禁止 rWTCON &= 0xff00;//清除预分频系数
rWTCON |= prescaler<<8;//设置预分频系数 rWTCON &= ~(0x03<<3);
rWTCON |= mux<<3;//设置时钟选择器 rWTCON |= 1<<2;//使能中断]
rWTCON &= ~(1<<0);//禁止复位
rWTDAT = countValue;
rWTCNT = countValue;//初次使用,必须设置CNT的值 rSRCPND |=BIT_WDT_AC97; //清除标志
rINTPND |=BIT_WDT_AC97;
rSUBSRCPND |= BIT_SUB_WDT; //清除子中断标志 rINTMOD &= ~BIT_WDT_AC97;//设置中断模式为IRQ模式
rINTMSK &= ~(BIT_WDT_AC97); //开中断
rINTSUBMSK &= ~(BIT_SUB_WDT);//开子中断 pISR_WDT_AC97=(unsigned)Wdt_Int;//设置中断程序入口 rWTCON |= (1<<5);//看门狗启动 } //看门狗连接系统复位
//prescaler 分频系数 8位
//mux 始终选择 0 16 1 32 2 64 3 128
//countValue 计数值
void WWDGInitForReset(u8 prescaler,u8 mux,u16 countValue)
{ rWTCON &= ~(1<<5);//看门狗禁止 rWTCON &= 0xff00;//清除预分频系数
rWTCON |= prescaler<<8;//设置预分频系数 rWTCON &= ~(0x03<<3);
rWTCON |= mux<<3;//设置时钟选择器 rWTCON &= ~(1<<2);//禁止中断]
rWTCON |= (1<<0);//使能复位
rWTDAT = countValue;
rWTCNT = countValue;//初次使用,必须设置CNT的值 rWTCON |= (1<<5);//看门狗启动 } void Watchfeed(u16 count) //看门狗喂狗
{
rWTCNT=count; //喂狗
}
#ifndef __WATCHDOG_H
#define __WATCHDOG_H
#include "2440addr.h"
#include "def.h" void WWDGInitForTimer(u8 prescaler,u8 mux,u16 countValue); void WWDGInitForReset(u8 prescaler,u8 mux,u16 countValue); void Watchfeed(u16 count); //看门狗喂狗 extern u8 wwdgUp; #endif
S3C2440看门狗解析的更多相关文章
- 基于S3C2440的嵌入式Linux驱动——看门狗(watchdog)驱动解读
本文将介绍看门狗驱动的实现. 目标平台:TQ2440 CPU:s3c2440 内核版本:2.6.30 1. 看门狗概述 看门狗其实就是一个定时器,当该定时器溢出前必须对看门狗进行"喂狗“,如 ...
- 基于mini2440的看门狗(裸机)
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...
- S3C3440看门狗驱动程序
S3C3440看门狗驱动程序 http://www.cnblogs.com/lfsblack/archive/2012/09/13/2684079.html 看门狗是当CPU进入错误状态后,无法恢复的 ...
- 嵌入式 uboot以及kernel添加看门狗临时记录(个人记录未整理乱)
Uboot_Kernerl_Add_Watch_Dog: U-Boot 2010.06 (Nov 01 2013 - 15:28:44) DRAM: 128 MiBCheck spi flash c ...
- linux设备驱动归纳总结(十一):写个简单的看门狗驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-112879.html linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxx ...
- nano100B的看门狗讲解
看门狗定时器的用途是在软件出问题时执行系统复位功能,这可以防止系统无限期地挂起.除此之外,看门狗定时器还支持将CPU 从掉电模式唤醒的功能.看门狗定时器包含一个18 位的自由运行计数器,定时溢出间隔可 ...
- mini2440裸机试炼之——看门狗中断和复位操作
看门狗的工作原理: 设本系统程序完整执行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序正常执行时,定时器就不会溢出,若因为干扰等原因使系统不能在Tp时刻改动定时器的记数值,定时器 ...
- u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗
u-boot分析(五) 上篇博文我们按照210的启动流程,对u-boot启动中的设置异常向量表,设置SVC模式进行了分析,今天我们继续按照u-boot的启动流程对以下内容进行分析. 今天我们会用到的文 ...
- 【Linux开发】linux设备驱动归纳总结(十一):写个简单的看门狗驱动
linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
随机推荐
- 视频 -> 帧 浅析
原创:转载请注明出处 关于帧率 首先以下几个概念必须弄清楚 1.一个帧就是一个画面 2.视频有无数个帧组成 3.表达时间的量 CMTime 的定义: typedef struct { CMTimeV ...
- Swift の 函数式编程
Swift 相比原先的 Objective-C 最重要的优点之一,就是对函数式编程提供了更好的支持. Swift 提供了更多的语法糖和一些新特性来增强函数式编程的能力,本文就在这方面进行一些讨论. S ...
- 深入理解linux网络技术-P179
上锁 net_device结构的组织一节可知,dev_base列表以及dev_name_head和dev_name_index两张hash表由dev_base_list锁保护.然而,该锁只用于对列表和 ...
- over-float清除浮动++隐藏溢出
overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很了解.一提到清除浮动,我们就会想到另外一个CSS样式: ...
- JS定时器的使用--延时提示框
<title>无标题文档</title> <style> div{float:left;margin:10px;} #div1{width:50px; height ...
- hrbust oj 1025 (计算几何+近似计算)
这是我第一次只要可以这么做,题目中给的精度范围较大,所以可以把圆形的区域直接用小方块拼接近似来表示,maps地图开的越大,精度越高,但同时耗时也更多. 代码如下: #include<cstdio ...
- Node.js学习 - File Operation
同步异步 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的方法函数最后一个参数为 ...
- Chapter 1 First Sight——20
After two classes, I started to recognize several of the faces in each class. 两节课之后,我开始记住了每节课的那几张脸. ...
- PAT1004
A family hierarchy is usually presented by a pedigree tree. 一个家族的层次结构经常用一个血缘树来呈现. Your job is to cou ...
- linux中服务器定时程序设定
服务器不重启的情况下定时自动重启apache及mysql服务,其实也大同小异.具体步骤如下: 一.每天的12点及16点重启apache及mysql服务 [root@www bin]# cd /opt ...