在线问答
直播中

h1654155865.6393

9年用户 301经验值
擅长:可编程逻辑 测量仪表 嵌入式技术 模拟技术 处理器/DSP 控制/MCU
私信 关注

【OK210试用体验】裸机篇 -- WATCHDOG

本帖最后由 q15920078530 于 2015-8-17 01:55 编辑

【OK210试用体验】裸机篇 -- WATCHDOG



      本帖主要学习S5PV210的看门狗定时器的操作。



S5PV210的WATCHDOG



      S5PV210中的WDT是一个由噪音或者系统错误所引起的故障后可以获得控制操作的定时装置。S5PV210的WDT定时器相当于一个普通的16bit的定时器,它与PWM定时器的区别是看门狗定时器可以产生reset信号而PWM定时器不能。

      内部结构框架: 1.png

      这里可以看出WDT的时钟来源于PCLK,要经过8位分频器,重要的寄存器WTCON。

      输出时钟频率配置计算: 2.png

      

程序编写思路


      初始化WTD:

             WTD启动后WTDAT的数据并不能自动装入WTCNT,所以在启动WTD定时器之前要先装载好计数数据,即装入WTCNT寄存器。

             启动WTD,set WTCON[0] and WTCON[5] as 1。



      WTD初始化配置示例:
  1. WTDAT = 100000000;
  2.         WTCNT = 100000000;
  3.        
  4.         WTCON = (1 << 0) |        // Asserts reset signal of the S5PV210 at watchdog time-out
  5.                         (1 << 2) |        // Enable interrupt
  6.                         (0 << 3) |        // Determines the clock division factor -- 16
  7.                         (1 << 5) |        // Enable Watchdog timer
  8.                         (100 << 8); // Prescaler value.

      初始化之后要使能WTD TIMER和设置相应处理函数:
  1. // 设置看门狗中断的中断处理函数
  2.         intc_setvectaddr(NUM_WDT,isr_wtd);
  3.         // 使能看门狗中断
  4.         intc_enable(NUM_WDT);

      中断处理函数需要清理相关中断标志:
  1. // 看门狗相关中断清除,任意值
  2.         WTCLRINT = 1;                  
  3.         // VIC相关中断清除
  4.         intc_clearvectaddr();



更多回帖

发帖
×
20
完善资料,
赚取积分