【OK210试用体验】之裸机程序 –Watchdog Timer - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】之裸机程序 –Watchdog Timer

chkconfig ( 楼主 ) 2015-9-19 19:38:31  只看该作者 倒序浏览
看门狗定时器(WDT)在S5PV210中,是由于噪声和系统错误出现故障后,恢复控制器操作的定时装置。WDT可以作为一个标准的16位间隔计时器,以请求中断服务,产生复位信号。
前不久我们讨论过PWM(脉冲宽度调制),并阐述了PWM的功能以及使用方法。仔细研究,会发现WDT和PWM的功能类似地, WDT和PWM计时器的不同点在于WDT会产生复位信号。WDT里面有一个(递减)计数器,要是不“喂”看门狗的话,计数器会递减,直至减到0,并产生一个复位信号。
如果S5PV210在调试模式下使用嵌入式ICE,看门狗定时器这时不得操作。看门狗定时器决定从CPU核心信号(DBGACK信号)看目前是否处在调试模式下。一旦认定是DBGACK信号,看门狗定时器的输出复位信号是没有激活的即便看门狗定时器已经到期。


上图是看门狗定时器的发生机制,它以PCLK作为时钟源,PCLK频率预分频(8bitWTCON寄存器)生成相应的看门狗定时器时钟,再以1/161/321/641/128分频再次分离,看门狗定时器初始化完毕。对比PWMTCNTBTCMPB两个寄存器的缓存机制,WDT也有类似的缓存机制(WTDAT寄存器),通俗的话来说就是用作递减的数(WTCNT寄存器),一旦使能WDTWTDAT里的数不能自动加载进WTDAT里,故需要预先设定好WTDAT里面的值。可用下面的公式计算看门狗定时器时钟频率。
下面是看门狗初始化的一段逻辑程序,
  1. #define WTCON                        ( *((volatile unsigned long *)(0xE2700000)) )
  2. #define WTDAT                        ( *((volatile unsigned long *)(0xE2700004)) )
  3. #define WTCNT                        ( *((volatile unsigned long *)(0xE2700008)) )


  4.         /*reset: 是否使能reset 1:Enable 0:Disables
  5.          *int: 是否使能中断        1:Enable 0:Disables
  6.          *selectclk: 分频系数
  7.          *wtd:是否启动定时器        1:Enable 0:Disables
  8.          *uprescaler:预分频系数
  9.          */
  10. void wtd_set(unsigned long reset, unsigned long int, unsigned long selectclk,
  11. unsigned long wtd, unsigned long uprescaler,unsigned long uwtdat, unsigned long uwtcnt)
  12. {
  13.         WTDAT = uwtdat;
  14.         WTCNT = uwtcnt;
  15.        
  16.        
  17.         WTCON = (reset<<0);
  18.         WTCON =(int<<2);
  19.         WTCON =(selectclk<<3);
  20.         WTCON =(wtd<<5);
  21.         WTCON =(uprescaler<<8);
  22. }
复制代码
参考之用:
对看门狗,三星公司在出厂时的固化代码已经帮我们关闭了,因此开发裸机程序可以直接运行。



0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /7 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-11-14 17:29 , Processed in 0.624020 second(s), Total 65, Slave 44 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表