历史上的今天
今天是:2025年01月29日(星期三)
2020年01月29日 | MSP430F5538A watchdog
2020-01-29 来源:eefocus
1、watchdog timer(WDT_A)
看门狗定时器?
看门狗定时器32bit定时器,能被用作看门狗或者作为一个间隔定时器。
在看之前,给自己几个问题
a、看门狗依赖于时钟配置吗?
b、多长时间喂狗,软件喂狗(定时器)?时间长短如何配置?
c、看门狗重启和软件重启以及硬件重启的区别?
看门狗定时器模块的主要功能是在软件问题发生时执行系统重启;如果指定的时间到还不喂狗,就会系统复位。
如果在应用中不需要看门狗功能,看门狗模块可以配置成一个间隔定时器并且在指定时间间隔产生中断。
看门狗定时器模块特性:
8个软件选择的时间间隔
看门狗模式
间隔模式
密码保护访问看门狗定时器控制寄存器
可选的时钟源
停止用于节约电力
时钟自动防故障特性
注意:看门狗定时器上电激活
PUC(上电清除复位信号)后, WDT_A模块自动配置成看门狗模式,使用SMCLK为时钟源,~32ms复位间隔;所以用户必须在初始复位间隔超时前设置或者停止WDT_A模块;
Msp430f5438a.cmd (c:ticcsv5ccs_basemsp430include)
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),以及任务耗时的地方等都需要适当喂一下狗
史海拾趣
|
电解电容器使用上注意事项 使用电解电容器时,请注意下列事项: 电解电容器就如下列情形时,会引起特性的劣化 ◎ 逆向电压 ◎ 使用电压超出工作电压 ◎ 电流大于容许纹波电流 ◎ 急剧的充放电 此时,引起激烈的发热或气体产生会从电容器的封口处漏 ...… 查看全部问答> |
|
新手请教一个网卡驱动的问题(对网卡芯片的操作,不涉及TCP/IP) 我用的控制芯片为S3C2410,网卡芯片是AX88796, 网卡在BANK2上,基地址为0x200,逻辑地址为0x10000200。Ax88796的寄存器宽度为8位,映射到从基地址200h到21fh地址空间内。 首先是两个对Ax88796的寄存器读写的操作函数:ax88796Write()和ax88796Read( ...… 查看全部问答> |
|
您好! 我们开发了一块pci9052芯片的PCI接口板,出现怪异问题,请帮忙分析下! 开发板连接测量仪器和PC机上的测试程序(VC++), 大概每80ms左右读2048次数据,每次大概2个字节。 测试仪器实时采集数据并作图。 我们发现开机(电 ...… 查看全部问答> |
|
比如我的电脑接了一个光电开关,希望用PC 程序知道根据光电开关电路电压的高低(或通断)。请教怎么个连接实现法? 看了许多书,都是讲关于串口通信,所有演示的都是如何实现两台PC之间互相发送字符的。可是,我并不是要采集字符,我只想采集电压 ...… 查看全部问答> |
|
数控机床的数控部分和机械部分通信的串行口有问题,数控不稳定,运行一会儿就死机了,重启好几次才行. 串行口处理的电路板很难换掉,接的数据线控制线关联太多,都不知道干啥用的,也找不到这种型号的电路板. 还好这个数控机床数控部分用的就是Dos操作 ...… 查看全部问答> |
|
Vforum2010 见闻 之IBM 和INTEL 讲座心得! 阿牛哥参加Vforum2010, 听到了智慧的IBM 系统--面向云计算的智能硬件平台讲演,也听了INTEL 开放式数据中心--推动云计算的新技术趋势讲演。有一些心得和大家分享,班门弄斧,请大家拍砖! IBM ...… 查看全部问答> |
|
我现在的备用电源就是在市电掉电的情况下开始工作,和UPS一样,在市电和备用电源转换的时候不能存在复位(电源后面的工作设备)? 我原来的方法是经过整流后根据比较器的结果确定是否市电掉电,即确定备用电工作。不过这样有时存在复位(电源后面 ...… 查看全部问答> |




