MSP430使用指南8 -> WDT看门狗模块

2020-03-31来源: eefocus关键字:MSP430  使用指南8  WDT  看门狗模块

看门狗WDT电路在平时调试过程中使用并不多,但在真正产品应用上,可以说每一个系统都会使用看门狗,其主要功能和作用如下:


看门狗电路基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作。


使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。


MSP430  MCU内部直接集成了看门狗模块,可以通过用户的设置进行对程序是否跑死进行监控,同时可以通过寄存器配置成两种模式,使得客户使用起来更加方便,看门狗电路内部结构图如下图所示:

由上图结构图中可以看出,MSP430   MCU内部会提供一个PUC信号,用于清除看门狗计数器,这也就是外部看门狗所描述的喂狗操作,当程序跑死后,这个信号没有产生,因此当看门狗定时器定时时间到时,则会产生一个复位信号,使得系统重新启动。同时看门狗计数器的时钟源可以由用户进行选择。


MSP430看门狗比较简单,可以配置成两种模式:看门狗模式和间隔时间模式。这两种模式的描述及区别如下:


看门狗模式:和硬件看门狗功能一致,在设置好看门狗计数时间后,如果程序跑死情况出现,在设定的时间过后就会触发看门狗中断,同时软件复位,程序指针PC会指向复位向量,程序实现软件复位。注意:看门狗复位顺序是:程序跑死 -> 触发看门狗中断 -> 执行中断服务程序(保存数据等操作,这个由用户决定) -> 复位程序。


间隔时间模式:这个和定时器类似,不过时间不是很精确,在看门狗计数器达到设定时间后,会触发看门狗中断,但不会让软件重启,同时间隔时间模式是不存在喂狗操作的,类似于定时器,每隔设定的时间周期,都会触发看门狗中断,因此可以当作定时器使用。


下面讲解一下看门狗的寄存器,这个比较简单,看门狗仅有一个寄存器,如下图所示:

WDTCLY寄存器:

WDTPW:首先看这个寄存器的高八位,是WDT的密码,在操作这个寄存器时,必须同时输入密码(5Ah),否则写任何数字都会导致看门狗复位程序。(注意,是同事写入不是先写密码,再操作寄存器) 同时这个高八位密码寄存器的读取结果一致都是69h。


WDTHOLD:看门狗定时器的使能,0停止此定时器,1使能此定时器。


WDTSSEL:看门狗定时器时钟源选择,默认是SMCLK,X_CLK时钟尽在部分MSP430 MCU中存在。


WDTTMSEL:模式选择,0选择看门狗模式,1选择间隔时间模式。


WDTCNTCL:看门狗定时器清除位,写1会清除看门狗定时器当前的值,在此定时器达到定时时间后会自动清除。


WDTIS:定时时间设置,在这里有八个定时时间可选,起始这个就是对定时器的设定值进行设定,看门狗计数器是个32位寄存器,最大数为232,但由于看门狗并不要求精确时间,因此设置成8段,提供八个时间足够了,如上图所示计算时间,这个跟时钟源有关系,如图如果时钟源频率是32768Hz,WDTIS = 100b,那么也就是设置的计数值是215=32768,因此定时时间为1秒。


同时,细心的话你会发现,如果正常使用看门狗功能的话,还缺少两个寄存器:中断使能寄存器和中断标志位寄存器。这两个参数WDTIE和WDEIFG分别在SFRIE1.0和SFRIFG1.0寄存器中,如下图所示:


WDTIE(仅有1bit)

WDTIE在SFRIE1寄存器的0bit上,默认是0,即失能看门狗中断,注意:就算失能看门狗终端,如果看门狗定时器设置在看门狗模式下,在程序跑飞后,依旧会复位程序,知识不产生中断了而已,因此如果不适用看门狗定时器,请失能定时器,用下面程序:


WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT


WDTIFG(仅有1bit)

WDTIFG在SFRIFG1寄存器的0bit上,默认是0,即没有中断产证,可以手动清除,当然,看门狗定时器在进入中断后会自动清除此标志位。


好啦,讲解完原理和寄存器之后,依旧给出看门狗的程序:


Code 1: 间隔时间模式,toggle LED:


//******************************************************************************

#include

 

int main(void)

{

    WDTCTL = WDT_MDLY_32;       // WDT 32ms, SMCLK, interval timer

    P1OUT &= ~BIT0;             // Clear P1.0 output latch for a defined power-on state

    P1DIR |= BIT0;              // Set P1.0 to output direction

 

    PM5CTL0 &= ~LOCKLPM5;       // Disable the GPIO power-on default high-impedance mode

                                // to activate previously configured port settings

    SFRIE1 |= WDTIE;            // Enable WDT interrupt

 

    __bis_SR_register(LPM0_bits | GIE);     // Enter LPM0, enable interrupts

    __no_operation();                       // For debug

 

}

 

// Watchdog Timer interrupt service routine

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=WDT_VECTOR

__interrupt void WDT_ISR(void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(WDT_VECTOR))) WDT_ISR (void)

#else

#error Compiler not supported!

#endif

{

    P1OUT ^= BIT0;                          // Toggle P1.0 (LED)

}

Code 2: 看门狗模式,1秒(使用过程中,看门狗时间需要用户根据自身程序去设定):


//******************************************************************************

#include

 

int main(void)

{

    // Selects the ACLK source to REFO (internal 32kHz clock source) as default

    WDTCTL = WDT_ARST_1000;                 // Set Watchdog Timer timeout 1s

    P1DIR |= BIT0;                          // Set P1.0 to output direction

    // Disable the GPIO power-on default high-impedance mode

    // to activate previously configured port settings

    PM5CTL0 &= ~LOCKLPM5;

 

    P1OUT ^= BIT0;                          // Toggle P1.0

    __bis_SR_register(LPM3_bits | GIE);     // Enter LPM3

    return 0;

}

关键字:MSP430  使用指南8  WDT  看门狗模块 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492984.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430使用指南5 -> ICC中断控制器
下一篇:MSP430使用指南12 -> GPIO

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430F149内部Flash操作
一般,在单片机中的Flash存储器用于存放程序代码,属于只读型存储器。而在MSP430些列的单片机中,都可以通过内置的Flash控制器擦除或改写任何一段的内容。另外,msp430的单片机内部还专门留有一段Flash区域(information memory),用于存放掉电后需要永久保存的数据。利用430内部的Flash控制器,可以完成较大容量的数据记录、用户设置参数在掉电后的保存等功能。硬件介绍:要对Flash读写,首先要了解MSP430的存储器组织。430单片机的存储器组织结构采用冯诺依曼结构,RAM和ROM统一编址在同一寻址空间中,没有代码空间和数据空间之分。一般430的单片机都统一编址在0-64k地址范围中,只有少数高端
发表于 2020-05-07
MSP430F149内部Flash操作
MSP430 FLASH读写
MSP430 FLASH型单片机的FLASH存储器模块根据不同的容量分为若干段,其中信息存储器SegmengA及SegmentB各有128字节,其他段有512字节。SegmentB的地址是:0x01000h到0x107F,SegmentA的地址是:0x01080h到0x010FFh。其他段的地址根据容量不同,从0xFFFFh开始,每512字节为一段进行分配。FLASH存储器写入数据时,每一位只能由“1”变成“0”,不能由“0”变成“1“,因此,当我们有数据要保存到FLASH存储器时,要先对目标段进行整段擦除操作,擦除操作使的对应段FLASH存储器变成全“1”。下面是擦除FLASH段的子程序,配置好必要的寄存器后,向段中任意地址写入
发表于 2020-05-06
关于Msp430 Flash型单片机内部Flash的操作
1 Msp430Flash型单片机内部Flash存储器介绍MSP430的Flash存储器是可位、字节、字寻址和编程的存储器。该模块由一个集成控制器来控制编程和擦除的操作。控制器包括三个寄存器,一个时序发生器及一个提供编程、擦除电压的电压发生器。Msp430的Flash存储器的特点有:1)产生内部编程电压2)可位、字节、字编程,可以单个操作,也可以连续多个操作3)超低功耗操作4)支持段擦除和多段模块擦除2 Flash存储器的分割Msp430 Flash存储器分成多个段。可对其进行单个字节、字的写入,也可以进行连续多个字、字节的写入操作,但是最小的擦除单位是段。Flash 存储器被分割成两部分:主存储器和信息存储器,两
发表于 2020-05-06
MSP430的JTAG接口和BSW接口
1.JTAG口,JTAG引脚如下定义:单片机TCK——测试时钟输入,接仿真器7脚单片机TDI——测试数据输入,接仿真器2脚单片机TDO——测试数据输出,接仿真器1脚单片机TMS——测试模式选择,接仿真器5脚单片机TRST——测试复位,输入引脚,低电平有效(此引脚可选),接仿真器11脚 2. BSW接口单片机SBWTDIO/RST——测试数据输入输出,接仿真器1脚TDO,其中SBWTDIO和单片机复位RST引脚复用单片机SBWTCK/TEST——测试时钟,接仿真器7脚TCK
发表于 2020-05-06
MSP430的JTAG接口和BSW接口
MSP430F169(四)——浅谈F169看门狗
什么是看门狗在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。这些干扰作用于数字器件,极易使其产生误动作,从而失去应有的控制功能,引起MSP430发生“程序跑飞”事故。若不进行有效的处理,程序就不能回到正常的状态,从而失去应有的控制功能。看门狗定时器正是为了解放这类问题而产生的,尤其是在具有循环结构的程序任务中更为有效。看门狗有一个RST管脚,用来复位。看门狗的两种工作模式(一)看门狗模式:看门狗模式是看门狗这个组件的主要功能,(这不是废话嘛,看门狗组件肯定是看门狗啊)提到看门狗,不得不说这个密码保护了(WDTPW watchdog timer password )任何读写操作必须通过他才能正确执行指令
发表于 2020-05-06
MSP430F169(四)——浅谈F169看门狗
MSP430学习的第一个模拟I2C程序
#include <msp430.h>unsigned char I2CBUF;unsigned char checkbit;#define SCL_H   (P10OUT |= BIT2)      // P10.2为SCL#define SCL_L   (P10OUT &= ~BIT2)#define SDA_H   (P10OUT |= BIT1)     //p10.1为SDA#define SDA_L   (P10OUT &= ~BIT1)#define
发表于 2020-05-06
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved