MSP430单片机看门狗面面观Word下载.docx
- 文档编号:12980151
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:19
- 大小:15.51KB
MSP430单片机看门狗面面观Word下载.docx
《MSP430单片机看门狗面面观Word下载.docx》由会员分享,可在线阅读,更多相关《MSP430单片机看门狗面面观Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
的时间复位,可采取的方法,使用其他计数器,计数满后执行((void
(*)())RESET_VECTOR)();
或计数满后往看门狗控制寄存器写个错误值或执行
一条无效命令:
如((void(*)())0x170)();
0x170是外围模块的一个地址,不可能
是一个函数地址,所以执行此句将使程序复位。
停止模式:
关闭看门狗
C语言实现:
WDTCTL=WDTPW+WDTHOLD
汇编语言实现:
mov.w#WDTPW+WDTHOLD,&
amp;
WDTCTL
计时器模式:
作为一个计时器使用,计数器满产生中断时执行看门狗中断
函数。
主程序中:
开启看门狗计时器,如:
WDTCTL=WDT_MDLY_8;
或
WDTCTL=WDT_ADLY_250;
等
看门狗中断函数为:
#pragmavector=WDT_VECTOR
__interruptvoidwATchdog_timer(void)
{
//..................................
}
开启看门狗计时器,如:
mov.w#WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0,&
或mov.w
#WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0,&
中断向量表中的看门狗中断向量:
ORG0FFF4h;
msp430f2274的看门狗中断地址
DWRESET;
程序开始处以REST作为标号
看门狗中断函数:
WDT_ISR
;
....................
reti
看门狗模式:
计数溢出时,执行复位中断函数。
清看门狗:
WDTCTL=WDTPW+WDTCNCTL;
设置看门狗:
WDTCTL=WDT_MRST_0_5;
或WDTCTL=WDT_ARST_1000;
中断向量表中的复位向量:
ORG0FFFEh;
msp430f2274的复位地址
mov.w#WDTPW+WDTCNCTL,&
mov.w#WDTPW+WDTCNTCL+WDTIS1,&
mov.w#WDTPW+WDTCNTCL+WDTSSEL,&
WDTCTL;
关于喂狗
喂狗,也就是在看门狗定时器溢出之前对其进行清零的操作。
网上和书里对喂狗的介绍不多,大部分都只说使用WDTCTL=WDTPW+
WDTCNTCL;
即可。
一般使用起来没什幺问题,但是当不使用默认的看门狗
时钟源和分频系数之后,问题就来了。
(以G2XXX系列,SMCLK=1M,
ACLK=32K为例)直接使用WDTCTL=WDTPW+WDTCNTCL;
喂狗之后,
看门狗就被重置成复位状态,看门狗复位时间就变成了32ms,如果远小于你
的喂狗时间,程序就没法正常工作了,典型表现为定时重新启动。
仔细查看
WDTCTL寄存器之后,就能发现问题。
要正确喂狗最好的办法就是不改变原有看门狗配置的情况下将
WDTCNTCL置1。
这样看来,简单的就是WDTCTL|=WDTPW+
其中需要注意的是WDTPW位读出来是0x69,而需要写入的
是0x5A,实际上0x69|0x5A=0x7B,这就造成了在喂狗的时候,密码错误造
成单片机重启。
所以正确的喂狗语句就初始化看门狗的语句。
当然如果想使
用通用的喂狗语句,WDTCTL=WDTPW+WDTCNTCL+(WDTCTL&
0x00FF);
应该是最正确的(其中(WDTCTL&
0x00FF)是用来获取看门狗配
置的)。
不过430头文件已经很清新了,喂狗一般直接加上时间(头文件里面都处理
过了)。
MSP430单片机之看门狗的作用
看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使
系统重新启动。
看门狗计数器正常工作时自动计数,程序流程定期将其复位
清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。
在定
时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有
正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重
新启动。
1.看门狗问题及相关实验
现今市面上流行的一些单片机,多嵌有内部WDT,如TI的MSP430系
列,Philips的P87XXX和P89XXX系列,Microchip的PIC列,Atmel的
AT89SXX系列和Holtek公司的Htxxx系列。
但是这些内部看门狗在工作
时,多存在一定的误差。
一些工程师在设计的过程中,由于忽略了这一点,
导致系统出现异常。
MSP430系列单片机是美国德州仪器公司(TI)近几年开发
的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概
念混合型单片机。
在众多单片机系列中,由于它具有极低的功耗、丰富的片
内外设和方便灵活的开发手段,已成为一颗耀眼的新星。
其内部自带看门狗
及复位电路,理论上如果程序跑飞,可用看门狗将其复位。
但在实际使用过
程中,发现看门狗的作用并非万无一失,以下实验证明了这一点。
实验电路如图1所示。
实验程序清单:
#include
voidmain(void){
P1DIRl=0x07;
//设置P1.0~P1.2为输出
for(;
;
){
volatileunsignedinti;
WDTCTL=WDTPW+WDTCNTCL;
//复位WDT计数器
P1OUT–0x07;
//P1.0~P1.2相互异或
i=5000;
//延时
do(i--);
while(i!
=0);
上述实验启动后,如果程序正常运行,LED会闪烁。
缺省时,MSP430的
看门狗是允许状态,所运行的程序会不断地访问看门狗。
理论上,这个系统
是不会发生启动失败的,因为即使启动失败,看门狗也应该在数百毫秒内启
动,复位整个系统。
基于这种思想,对单片机的复位进行测试。
K2断开,用
K1连续产生。
Reset信号,测试看门狗使系统重启的成功率。
K2闭合,则
reset端高电平,理论上K1不能有效产生复位脉冲,观察看门狗是否起作
2.实验结果与分析
实验结果如下:
K2断开,连续开关K1,上电重启系统,平均155次失败
1次(LED不闪),即看门狗失效概率0.6%;
K2闭合,连续开关K1,平均18
次失败1次(LED不闪),且一旦失败,将连续失败下去,看门狗无效率占到
了约5.5%。
另外,当采用同样具有内置看门狗的其他系列单片机替代实验中的
MSP430,启动程序段作相应修改时,实验结果仍大致相同,这说明具有内置
看门狗的单片机面临的问题是相同的。
经分析可能有如下原因:
①由于看门狗的时钟不独立,计数时钟与系统为同一分频链路,因此看门
狗不能在系统出现问题时有效运作。
②由于时钟可用软件设置,启动失败时,开机时钟可能处于空档,没有时
钟看门狗不能生效。
③有些看门狗需要用软件设置或启动,因此启动失败后,初始化程序没有
激活,CPU可能跳转到随机代码,使看门狗被禁止。
这样的看门狗是需要有
可靠的上电复位作保证的,因此,从理论上讲,原设计存在着不合理性。
基
于上述分析,采用片外看门狗专用芯片TPS3823由独立的分频振荡电路提供
计数脉冲。
实验电路如图2所示。
上述电路中,TPS3823输出定时溢出信号给Reset端。
程序段中,CPU要
不断地通过I/O口输出喂狗信号,使看门狗计数器清零。
在此电路中重复上
述试验中K1、K2的相同动作,系统重启成功率达到100%。
结语
未来的内置看门狗必须有独立可靠的时钟。
系统上电后,看门狗即为允许
状态,无需软件设置,它只能被外部硬件跳线或内部熔丝(fuse)所禁止。
目
前,如果要求设计可靠性较高的嵌入式系统,外置看门狗是必须考虑的。
内
置看门狗的另一问题是系统复位后,程序应判断是由Reset端正常上电复
位,还是程序跑飞看门狗所致,由此确定现场数据是否应该保留。
这也是在
看门狗应用中所应考虑的。
扩展阅读:
看门狗定时器是什幺?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSP430 单片机 看门狗 面面观