dsp看门狗定时器的作用解析

嵌入式设计应用

132人已加入

描述

  一、DSP看门狗定时器介绍

  看门狗在外围监控DSP中软件的运行以及硬件的操作,当CPU出现故障时,看门狗将执行系统复位。如果软件进入了一个不正确的循环或者CPU出现暂时的混乱,看门狗定时器将出现溢出来使系统复位。

  在大多数情况下,DSP短暂的混乱以及CPU不正确的操作都可以被看门狗所清除并重新进行设置。由于看门狗稳定的性能,其增加了CPU的可靠性,以确保系统的完整。

  在看门狗中这个外围设备中,所有的寄存器都是8位的,连接到16位CPU的低8位外围数据总线上。240XA看门狗定时器和C240看门狗定时器唯一的区别就是其缺乏实时的中断能力。看门狗定时器将通过对从CPU出来的CLKOUT进行分频而得到自己所需的时钟

  二、看门狗定时器工作原理

  使用时,WDT将递增,直到溢出,或称“超时”。除非处于休眠或空闲模式,WDT 超时会强制器件复位。为避免WDT超时复位,用户必须定期用PWRSAV 或CLRWDT 指令将看门狗定时器清零。如果WDT 在休眠或空闲模式下超时,器件将唤醒并从PWRSAV 指令执行处继续执行代码。在上述两种情况下,WDTO 位(RCON《4》)都会置1,表示该器件复位或唤醒事件是由于WDT超时引起的。如果WDT 将CPU从休眠或空闲模式唤醒,“休眠”状态位(RCON《3》)或“空闲”状态位(RCON《2》)也会置1,表示器件之前处于省电模式。

  在正常操作期间,一次WDT超时溢出将产生一次器件复位。当器件处于休眠状态时,一次WDT超时溢出将唤醒器件,使其继续正常操作(即称作WDT 唤醒)。对WDTE 设置位清零可以永久性地关闭WDT。后分频器分配完全是由软件控制,即它可在程序执行期间随时更改。

  为避免发生不可预测的器件复位,当从Timer0 预分频器的分配改为WDT 后分频器的分配时,必须执行下列指令序列。即使WDT 被禁止,也要执行这个指令序列。

看门狗定时器

  看门狗功能框图

  三、看门狗定时器的功能作用

  看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位。也可以用于将器件从休眠或空闲模式唤醒,看门狗定时器对微控制器提供了独立的保护系统,当系统出现故障时,在可选的超时周期之后,看门狗将以RESET信号作出响应,像x25045就可选超时周期为1.4秒、600毫秒、200毫秒三种。当你的程序死机时,x25045就会使单片机复位。

  四、看门狗定时器的特征

  8位的看门狗计数器通过计数溢出从而使系统复位

  6位的独立运行计数器通过对看门狗计数器预定标来feed看门狗计数器(上句为字面意思,我的理解是:该6位的独立运行的计数器通过对WDCLK(看门狗工作时钟)进行分频从而使看门狗计数器得到不同频率的时钟。独立运行的意思是该计数器不受其他器件的影响,只要启动系统,就开始工作) n 看门狗复位键寄存器,当向该寄存器写下合适的组合值(在该DSP中,

  通过向该寄存器相继写55h和AAh值)时,该寄存器将使看门狗计数器清零,当向该寄存器写下不合适的组合值(除55h和AAh以外的值)时,该寄存器将使系统复位

  看门狗核对位,当看门狗定时器出现错误情况时,通过看门狗核对位来复位系统

  当系统复位时,将自动启动看门狗定时器

  可对独立运行计数器输出的6路分频信号进行选择

看门狗定时器
 

  看门狗定时器控制寄存器

  五、看门狗定时器的操作

  看门狗定时器是一个由从预分频器出来的时钟进行驱动的连续增计数的计数器。在看门狗计数器溢出之前如果WDKEY寄存器没有对其进行清零,该定时器将对系统复位以保证系统软件和硬件的正常运行。

  WDCLK是由芯片内的时钟模块产生,并且在除HALT模式之外的任何操作模式下都是激活的。WDCLK使看门狗定时器不考虑芯片内的任何寄存器状态的情况下运行。除了HALT低功耗模式,因为它可以使WDCLK信号中止。WDCNTR的当前状态可以在对其进行操作的任何时候进行读操作。

  六、看门狗定时器的应用

  应用看门狗定时器的芯片支持函数首先要包含csl_wdtim.h头文件,接下来定义看门狗定时器的配置结构:

  WDTIM_Config MyConfig = {

  0x0060, /* Counter */

  0x1000, /* Period */

  0x0000, /* Control */

  0x1000 /* Secondary control */

  };

  配置看门狗定时器需要调用看门狗配置函数:

  WDTIM_config(&MyConfig);

  在配置好看门狗定时器后调用开始函数,该函数的作用是将看门狗定时器控制寄存器2的WDEN位置成1:

  WDTIM_start();

  在运行看门狗开始函数后,看门狗开始递减计数,在计数器减到0之前需要周期性地向WDKEY字段写入A5C5h和A7Eh,否则看门狗定时器将会发生超时事件从而触发中断或复位,该操作可以通过调用WDTIM_service()函数来完成。

  WDTIM_service();

看门狗定时器

  看门狗复位键寄存器

看门狗定时器

  看门狗计数寄存器

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分