580|0

3713

帖子

0

资源

纯净的硅(中级)

MSP430F5538A watchdog [复制链接]

 

1、watchdog timer(WDT_A)

看门狗定时器?

看门狗定时器32bit定时器,能被用作看门狗或者作为一个间隔定时器。

 

在看之前,给自己几个问题

 a、看门狗依赖于时钟配置吗?

 b、多长时间喂狗,软件喂狗(定时器)?时间长短如何配置?

 c、看门狗重启和软件重启以及硬件重启的区别?

 

看门狗定时器模块的主要功能是在软件问题发生时执行系统重启;如果指定的时间到还不喂狗,就会系统复位。

如果在应用中不需要看门狗功能,看门狗模块可以配置成一个间隔定时器并且在指定时间间隔产生中断。

 

看门狗定时器模块特性:

8个软件选择的时间间隔

看门狗模式

间隔模式

密码保护访问看门狗定时器控制寄存器

可选的时钟源

停止用于节约电力

时钟自动防故障特性

 

注意:看门狗定时器上电激活

PUC(上电清除复位信号)后, WDT_A模块自动配置成看门狗模式,使用SMCLK为时钟源,~32ms复位间隔;所以用户必须在初始复位间隔超时前设置或者停止WDT_A模块;

 

Msp430f5438a.cmd (c:\ti\ccsv5\ccs_base\msp430\include)

WDTCTL             = 0x015C;

 

/*! when 0 the watchdog timer and interrupt is used and an invalid password
* is used to reset the part, when 1 the watchdog expiring will cause the micro
* to reset and if ACLK goes away VLOCLK will be used.
*/
#define USE_FAILSAFE_WATCHDOG ( 1 )

 

#define WDTPW                  (0x5A00)

#define WDTCNTCL               (0x0008)       /* WDT - Timer Clear */

#define WDTSSEL__ACLK          (1*0x0020u)    /* WDT - Timer Clock Source Select: ACLK */

#define WDTIS_3                (3*0x0001u)    /* WDT - Timer Interval Select: /512k */

 

void ResetWatchdog(void)
{
  /* set watchdog for 16 second timeout
   * write password, select aclk, WDTIS_3 means divide by 512*1024 = 16 s;
   * WDTIS_2: 4 mins 

   * Any write operation to WDTCTL must be a word operation with 05Ah (WDTPW) in the upper byte

Watchdog timer interval select. These bits select the watchdog timer interval to
set the WDTIFG flag and/or generate a PUC.
000b = Watchdog clock source /(2^31) (18h:12m:16s at 32.768 kHz)
001b = Watchdog clock source /(2^27) (01h:08m:16s at 32.768 kHz)
010b = Watchdog clock source /(2^23) (00h:04m:16s at 32.768 kHz)
011b = Watchdog clock source /(2^19) (00h:00m:16s at 32.768 kHz)
100b = Watchdog clock source /(2^15) (1 s at 32.768 kHz)
101b = Watchdog clock source /(2^13) (250 ms at 32.768 kHz)
110b = Watchdog clock source /(2^9) (15.625 ms at 32.768 kHz)
111b = Watchdog clock source /(2^6) (1.95 ms at 32.768 kHz)   

2^19/(32.768KHZ) =512*1024/32768 = 16s 

*/
#ifUSE_FAILSAFE_WATCHDOG
/* wathdog 看门狗功能 *

WDTPW 密码0x5a00

WDTCNTCL:计数清零

时钟源以及超时间隔:ACLK、3(也即16s)

*/
  WDTCTL = WDTPW + WDTCNTCL + WDTSSEL__ACLK + WDTIS_3;

 

/* Interrupt Enable Register  中断使能寄存器 ,*/
  SFRIE1 &= ~WDTIE; /* disable  watchdog timer interrupt */


#else
/* interval timer 间隔定时器 */
  WDTCTL = WDTPW + WDTCNTCL + WDTSSEL__ACLK + WDTIS_3 + WDTTMSEL;

/* enable watchdog timer interrupt */
  SFRIE1 |= WDTIE;

#endif
}

 

在idle线程中会调用void ResetWatchdog(void),以及任务耗时的地方等都需要适当喂一下狗


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/9 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表