WDT看门狗程序_第1页
WDT看门狗程序_第2页
WDT看门狗程序_第3页
WDT看门狗程序_第4页
WDT看门狗程序_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、of MSP430 看门狗定时器的原理看门狗定时器的原理 MSP430X1/4XX系列单片机的看门狗定时器系列单片机的看门狗定时器 WDT 的相关寄存器的相关寄存器 看门狗的三种工作模式看门狗的三种工作模式 相关相关C程序程序看门狗定时器的原理(看门狗定时器的原理(1/2) 所谓程序跑飞程序跑飞就是PC指针没有按照预定的程序变更,可能PC指针指向一个不确定的或者根本就没有存放用户代码的程序存贮空间,造成PC指针根本无法恢复到用户代码空间之内,程序跑飞,当发生中断时,中断服务程序代码仍然可以被执行。 在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰信号噪声。这些干扰信号作用于

2、数字器件,极易引发错误动作,引起“程序跑飞”事故! 看门狗的在于阻止程序跑飞。在正常操作期间,一次WDT定时时间到,将产生一次器件复位。看门狗定时器的原理(看门狗定时器的原理(2/2) 如杲通过编制程序使WDT定时时间程序执行一次的时间,并且程序执行过程中有对看门狗,使计数器,则程序正常运行时,就会在WDT定时时间到对,不会产生WDT溢出。 如果由于干扰使程序跑飞,则不会在WDT定时时间到之前执行WDT清零指令,则,从而自动产生,CPU需要重新运行用户程序,这样程序就可以正常运行状态!MSP430系列单片机的看门狗定时器 看门狗定时器材的如下图:WDT 的相关一、WDT寄存器包括WDTCNT和

3、和WDTCTL,两个寄存器在上电和系统复位内容全部清零上电和系统复位内容全部清零 ,就是说就是说MSP430的看门狗的看门狗在此时处于在此时处于的状态。的状态。 1. 记数单元记数单元WDTCNT:WDTCNT是16位增记数器,由MSP430选定的时钟电路产生的固定周期脉冲信号对记数器进行加法记数。WDTCNT不能直接软件存取,必须通过看门狗定时器的控制寄存器WDTCTL来控制。 2. 控制寄存器控制寄存器WDTCTL:WDTCTL由两部分组成,用作口令,即5AH(头 文件中定义为WDTPW),是对WDT操作 的控制命令。写入WDT控制命令时先写入口令WDTPW,口令写错将导致系统复位。读WD

4、TCTL时不需口令,低字节WDTCTL的 值,高字节读出始终为69H。 WDT 的相关IS1 SI0 选择看门狗定时器的定时输出,选择看门狗定时器的定时输出,T为为WDTCNT的的 输入时钟源输入时钟源周期。周期。TMSEL WDT工作模式选择工作模式选择 0 0 T*2的的15次方次方 计数次数为计数次数为 32 768;0 1 T*2的的13次方次方 计数次数为计数次数为 8 192;1 0 T*2的的9次方次方 计数次数为计数次数为 512;1 1 T*2的的6次方次方 计数次数为计数次数为 64 。SSEL 选择选择WDTCNT的时钟源的时钟源 1 RST/NMI为非屏为非屏 蔽蔽中断

5、输入中断输入 0 SMCLK 1 ACLK WDT 的相关WDT 的相关 当该位为 时,表示清除WDTCNT ,该位具有自动复0的功能,无需软件重置。亦即传说 中的!(这个我没找到)? WDT 计数器中的值,只能通过CNTCL 实现! 工作模式的选择0 :看门狗模式;:看门狗模式;1 :定时器模式。:定时器模式。WDT 的相关NMI选择RET / NMI 引脚功能,在PUC后被复位。0 : RET / NMI 引脚为复位端;1 : RET / NMI 引脚为边沿触发的非屏蔽中断输入。NMIES 选择选择NMI中断的边沿触发方式中断的边沿触发方式 0 上升沿触发NMI中断 1 下降沿触发NMI中

6、断 HOLD 停止看门狗定时器工作停止看门狗定时器工作 0 看门狗功能激活 1 时钟禁止输入,记数停止 以MSP430F2274为例。其中汇编实现采用的是IAR汇编。 1. 看门狗有 三种工作模式:停止模式,计时器模式,看门狗模式。2. 其中后两种模式可以选择的时钟源有:SMCLK 和 ACLK3. 在使用后两种模式时候要注意单片机所处的状态下看门看门狗能否工作狗能否工作,如单片机处在LPM3时候只有ACLK时钟,处在LPM4下,没有时钟可以使用。4. 看门狗模式的:当看门狗计数溢出时,程序复位。 在程序中开启看门狗,在计数溢出前清空看门狗,或重置看门狗,以使其重新计数。若程序跑飞,看门狗可能

7、没有被清空或重置,就会溢,使程序复位。5. 在MSP430F2274中,看门狗模式下可以计时最长为1s,若需要以更长的时间复位,可采取的方法,使用其他计数器,计数满后执行(void(*)()RESET_VECTOR)() ; 或计数满后往看门狗控制寄存器写个错误值或执行一条无效命令:如(void (*)()0 x170)();0 x170是外围模块的一个地址,不可能是一个函数地址,所以执行此句将使程序复位。 :关闭看门狗关闭看门狗C C语言实现:语言实现:WDTCTL = WDTPW + WDTHOLDWDTCTL = WDTPW + WDTHOLD; ;我们用得最多的语句,也是我们用得最多的

8、语句,也是430430低功耗的实现低功耗的实现语句之一!语句之一!:作为一个计时器使用,计数器满产生中断时作为一个计时器使用,计数器满产生中断时执行看门狗中断函数。执行看门狗中断函数。C C语言实现:语言实现:主程序中:开启看门狗计时器,如:主程序中:开启看门狗计时器,如:WDTCTL = WDT_MDLY_8;WDTCTL = WDT_MDLY_8;或或WDTCTL = WDT_ADLY_250;WDTCTL = WDT_ADLY_250;等等看门狗中断函数为:看门狗中断函数为:#pragma vector#pragma vector = = WDT_VECTOR WDT_VECTOR in

9、terrupt interrupt voidvoid watchdog_timer( watchdog_timer(voidvoid) ) /./. 看门狗模式:计数溢出时,执行复位中断函数。C语言实现:清看门狗:WDTCTL = WDTPW+WDTCNCTL;设置看门狗:WDTCTL = WDT_MRST_0_5; /* TSMCLK*2POWER9=0.512ms */或 WDTCTL = WDT_ARST_1000;/* TACLK*2POWER15=1000ms */相关相关C程序(程序()# include void main(void) WDTCTL = WDT_MDLY_32;/

10、 定时周期为32msIE1 | = WDTIE; / 使能WDT中断 P1DIR |= 0 x01; / P1.0输出 _EINT(); / 系统中断允许 for (;) /循环等待定时器溢出中断 _BIS_SR(CPUOFF); / 进入 LPM0 _NOP(); / 看门狗中断服务子程序#pragma vector= WDT_VECTOR_interrupt void watchdog_timer (void)/此处开头为双下划线 P1OUT = 0 x01; / P1.0取反相关相关C程序(程序()#include void main(void) WDTCTL = WDT_ADLY_25

11、0; / WDT 250ms, ACLK, interval timer IE1 |= WDTIE; / Enable WDT interrupt P1DIR |= 0 x01; / Set P1.0 to output direction _BIS_SR(LPM3_bits + GIE); / Enter LPM3 w/interrupt/ Watchdog Timer interrupt service routine#pragma vector=WDT_VECTOR_interrupt void watchdog_timer(void) P1OUT = 0 x01; / Toggle P

12、1.0 using exclusive-OR相关相关C程序(程序()#includevoid Clear_WDT(void);void main( void ) unsigned int i; WDTCTL=WDTPW+WDTHOLD; /关闭看门狗 P4DIR |=BIT0; P4OUT &=BIT0; /暗 for(i=0;i6000;i+); P4OUT |=BIT0; /亮 for(i=0;i6000;i+); WDTCTL=WDTPW; /启动看门狗 while(1) Clear_WDT(); void Clear_WDT(void) WDTCTL=WDTPW+WDTCNTCL; /

13、计数器清零程序对程序对WATCHDOG计数溢出的控制计数溢出的控制 WDT看门狗模式看门狗模式本程序中,不断对本程序中,不断对WDT的看门狗计的看门狗计数器及时清零,数器及时清零,LED不再闪烁,主不再闪烁,主要程序运行正常,要程序运行正常,看门狗不会使程序看门狗不会使程序复位,复位,同时也保证了一旦同时也保证了一旦程序发生异常,可程序发生异常,可以立即恢复到初始以立即恢复到初始状态状态相关相关C程序(程序()#includevoid main( void ) unsigned int i; WDTCTL=WDTPW+WDTHOLD; /关闭看门狗 P4DIR |=BIT0; P4OUT &=BIT0; /暗 for(i=0;i6000;i+); P4OUT |=BIT0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论