本帖最后由 q15920078530 于 2015-8-17 01:55 编辑
【OK210试用体验】裸机篇 -- WATCHDOG
本帖主要学习S5PV210的看门狗定时器的操作。
S5PV210的WATCHDOG
S5PV210中的WDT是一个由噪音或者系统错误所引起的故障后可以获得控制操作的定时装置。S5PV210的WDT定时器相当于一个普通的16bit的定时器,它与PWM定时器的区别是看门狗定时器可以产生reset信号而PWM定时器不能。
内部结构框架:
这里可以看出WDT的时钟来源于PCLK,要经过8位分频器,重要的寄存器WTCON。
输出时钟频率配置计算:
程序编写思路
初始化WTD:
WTD启动后WTDAT的数据并不能自动装入WTCNT,所以在启动WTD定时器之前要先装载好计数数据,即装入WTCNT寄存器。
启动WTD,set WTCON[0] and WTCON[5] as 1。
WTD初始化配置示例:- WTDAT = 100000000;
- WTCNT = 100000000;
-
- WTCON = (1 << 0) | // Asserts reset signal of the S5PV210 at watchdog time-out
- (1 << 2) | // Enable interrupt
- (0 << 3) | // Determines the clock division factor -- 16
- (1 << 5) | // Enable Watchdog timer
- (100 << 8); // Prescaler value.
初始化之后要使能WTD TIMER和设置相应处理函数:- // 设置看门狗中断的中断处理函数
- intc_setvectaddr(NUM_WDT,isr_wtd);
- // 使能看门狗中断
- intc_enable(NUM_WDT);
中断处理函数需要清理相关中断标志:- // 看门狗相关中断清除,任意值
- WTCLRINT = 1;
- // VIC相关中断清除
- intc_clearvectaddr();