ARM S3C2410 看门狗设置原理及源码
来源:互联网 发布:oracle数据库设置密码 编辑:程序博客网 时间:2024/06/15 18:44
ARM S3C2410 看门狗设置原理及源码
S3C2410 看门狗只要有两个功能
1、作为常规时钟,并且可以产生中断
2、作为看门狗定时器使用,当时钟减到0时(超时),它将产生一个128个时钟(PLCK)的时钟信号。
看门狗的设置:
1、 看门狗的外部时钟源是有PLCK提供的, plck 通过预分频 和 与比例因子 产生适合看门狗的时钟。
t_watchdog = 1/[PLCK/(prescale value +1)/division_factor]
上面就是它的计算公式。
2、相关寄存器的介绍
WTCON watchdog控制寄存器
看门狗控制寄存器能够禁止或者允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁止中断,并且能允许或禁止看门狗时钟输出。如果用户想要使用看门狗作为普通时钟,应该中断使能,禁止看门狗定时器复位。
WTDAT――看门狗定时器数据寄存器
WTDAT 用于设置看门狗定时器的超时时间值,在初始化看门狗过程中,WTDAT 的值不会自动加载到定时计数器中,首次使用定时器超时值为其初始值即0x8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中。
WTCNT――看门狗定时器计数寄存器
WTCNT 为看门狗定时器工作的时间计数器的当前计数值,注意在初始化看门狗操作后,看门狗数据寄存器(WTDAT)的值不能自动装到看门狗计数寄存器(WTCNT)中,所以看门狗被允许之前应该初始化看门狗计数寄存器的值。
实验程序
由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门狗的功能,只需要对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON)、看门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。
设计流程如下:
1.设置看门狗中断操作,包括全局中断和看门狗中断的使能,看门狗中断向量的定义。频值、中断使能和复位使能等。
2.对看门狗数据寄存器(WTDAT)和看门狗计数寄存器(WTCNT)的设置。
3.启动看门狗定时器。
主功能函数
- 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);
- }
- 看门狗复位功能程序实现
- 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);
- }
看门狗定时器功能程序实现
- 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);
- }
- /**** watchdog_int ****/
- void __irq watchdog_int(void)
- {
- //清除中断
- ClearPending(BIT_WDT);
- f_ucSencondNo++;
- if(f_ucSencondNo<11)
- Uart_Printf("%ds",f_ucSencondNo);
- else
- {
- //mask watchdog timer interrupt
- DisableIrq(BIT_WDT);
- Uart_Printf("watch dog is ok/n");
- }
原文地址:http://blog.chinaunix.net/u2/78572/showart_1180410.html
- ARM S3C2410 看门狗设置原理及源码
- ARM S3C2410 看门狗设置原理及源码
- ARM S3C2410 看门狗设置原理及源码
- S3C2410看门狗的若干原理
- ARM看门狗定时器设置
- s3c2410 ARM 时钟与设置
- S3C2410接口之 看门狗控制器原理与编程
- S3C2410看门狗驱动分析
- s3c2410 watchdog (看门狗)转
- S3C2410看门狗驱动分析 .
- S3C2410看门狗驱动分析
- ARM 看门狗
- ARM之看门狗
- arm看门狗的作用
- arm看门狗的作用
- ARM笔记(看门狗)
- SDRAM工作原理及S3C2410 SDRAM控制器配置方法
- SDRAM工作原理及S3C2410 SDRAM控制器配置方法
- lucene3.5学习笔记01--搭建开发环境
- 关于文字编码
- myeclipse 中 TODO 注释的用法
- C#基础1——语法
- U-boot在开发板上移植过程详解(1)---bootloader架构分析
- ARM S3C2410 看门狗设置原理及源码
- Linux学习笔记一 ---- Linux基础知识认知以及初识Linux下C编程入门
- 对归并、堆排、快排的一些总结。
- hdu1162最小生成树
- 话题发现与跟踪系统
- search
- Silverlight 皮肤的使用(vs2010+sl4+ Toolkit April 2010)
- ViewPager多页面滑动切换以及动画效果
- Android竖直显示Text