MSP430学习小结

发布者:李国永最新更新时间:2015-11-09 来源: eefocus关键字:MSP430  学习小结 手机看文章 扫描二维码
随时随地手机看文章
看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。在很多单片机中都内置了看门狗,看门狗本身是一个定时器,当定时器溢出时即进行系统复位,因此需要在程序中对看门狗定时器进行清零,即常说的喂狗。

由于我用过AVR的单片机,和AVR的相比,MSP430的看门狗要灵活的多,首先默认看门狗是开着的,因此如果不使用看门狗的话要关闭,指令如下:
WDTCTL = WDTPW + WDTHOLD
如果打开看门狗则需要在程序中清零,指令如下:
WDTCTL=WDTPW+WDTCNTCL
这只是基本的应用,430的看门狗要稍微复杂一些,首先从IAR的头文件中看看定义了几种工作状态:


2.WDT通过SSEL 和IS0 IS1 3位可以确定与8种时钟源相关的时间(ACLK=32768Hz,SMCLK=1MHz)
SMCLK=1MH(对应8种)
WDT_MDLY_32
WDT_MRST_32
WDT_MDLY_8 
WDT_MRST_8
WDT_MDLY_0_5
WDT_MRST_0_5
WDT_MDLY_0_064
WDT_MRST_0_064
ACLK=32768Hz(对应8种)
WDT_ADLY_1000
WDT_ARST_1000
WDT_ADLY_250
WDT_ARST_250
WDT_ADLY_16
WDT_ARST_16
WDT_ADLY_1_9
WDT_ARST_1_9 
 
在头文件中查得:

【看门狗】MSP430学习小结1-看门狗的使用总结

            

代码解释:

WDTCTL =WDT_ARST_1000;  

在头文件中看到WDT_ARST_1000的定义为:(WDTPW+WDTCNTCL+WDTSSEL0+WDTIS2)       

即上一条指令执行的是WDTCTL= WDTPW+WDTCNTCL+WDTSSEL0+WDTIS2。

WDTCTL设置每条命令中必有WDTPW+..因为WDTPW代表写WDTCTL的时候高八位写05Ah,读的时候高八位为069h,否则触发PUC。

WDTCNTCL:看门狗计数器清零.

WDTSSEL0:表示WDTSSEL第0位置1,既0001.

WDTIS2: 表示WDTIS2第2位置1,既0100.

设置的含义看MSP4305438 PDF文档

【看门狗】MSP430学习小结1-看门狗的使用总结
 

 

 

 从头文件的定义中可以看出主要有两种方式,一种就是当做普通的定时器使用,一种才是作为看门狗,另外就是时钟源可选,选择8M或者32K的晶振来获得不同的延时,通过上面可以看出看门狗定时器最大的时间可以到1S,在程序中可以灵活的利用看门狗定时器实现想要的功能。

下面介绍两个典型应用:
1、在动态数码管显示中的应用,具体代码可以参考我之前的笔记,部分代码如下:
 WDTCTL = WDT_ADLY_1_9;        //   设置内部看门狗工作在定时器模式,1.9ms中断一次  
    //可以去看头文件中具体的配置,这里使用的手表晶振64分频计算可得是1.9ms  
     SFRIE1 |= WDTIE;                     // 使能看门狗中断

__interrupt void watchdog_timer(void)  
{
}
这个程序主要是将看门狗定时器当做普通定时器使用,1.9ms刚好适合动态扫描间隔,在看门狗中断中对数码管进行动态扫描,这样使用相对于开一个定时器来说要有所方便。因此在需要的定时与看门狗定时器的几个时间相同时可以考虑使用看门狗。
2、普通延时
WDTCTL = WDT_ADLY_1000;               //间隔定时器,定时1000ms
 //延时2s
    for(i = 0; i < 3; i++)
    {

        IFG1 &= ~WDTIFG;
        while(!(IFG1 & WDTIFG));
        IFG1 &= ~WDTIFG;
    }
这个程序同样是将看门狗当普通定时器使用,在主程序中读取中断标志位,实现延时效果,上面的程序为什么是延时2S自己分析。

这里面举了两个例子,是最近学习的一点小体会,当然还是不能忘了看门狗的本能工作,在程序较为简单时可以考虑使用看门狗定时器简化设计。另外还有一点觉得比较重要的是虽然头文件中对寄存器都有了很好的定义,但是还是很有必要对着头文件和寄存器把主要的寄存器看一面,弄清每一种工作模式的使用方式和注意点。

 http://www.61ic.com/Article/MSP430/MSP430/201108/36308.html

 

 

 

关于软件看门狗
2008-08-01 08:36

关于软件看门狗

 

    Watch Dog 看门狗是一个很重要的资源,他能够有效的防止系统进入死循环或者程序跑飞。工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。

看门狗是类似与硬件保护卡之类.保护硬盘数据的.

是单片机一个复位芯片,在单片机遇到异常情况之下自动复位!~~

看门狗是用来看家的,作用是保护你家的财产不丢失,
看门狗电路是用来看着你的CPU的,作用是不让你的程序丢失。

看门狗实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。

一般是为了程序进入死循环或死机!有的单片机不需外加看门狗电路(PIC)。

看门狗定时器对微控制器提供了独立的保护系统.当系统出现故障时,在可选的超时周期之后,看门狗将以RESET信号作出响应.像x25045就可选超时周期为1.4秒,600毫秒,200毫秒三种.当你的程序死机时,x25045就会使单片机复位.[page]

 

硬件看门狗WatchDog    

 

  是一个自我保护装置.        他时刻监视系统的运行.        一旦系统运行不正常.      看门狗会复位系统.          实际上看门狗是一个计时器.      你要让这个计时器置零前给她一个信号.让他重新计时.      这样起到一个监视系统运行的作用.        一般很多MCU带有这个电路。        但是你可以不使用它。      这样在上电的时候禁止他。      如果你要使用watchdog,      那么你的系统就必须每隔一段时间给这个电路一个信号。   
    
如果你说的是软件看门狗,那么它的意思是:你可以创建一个看门狗,创建后开始计时,如果中间不被取消什么的,一段时间之后--这个时间通常都可以有你自己指定--它就会触发,而且你可以指定看门狗触发时执行一个你自己提供的看门狗函数。   
     那么它的使用就可以是这样的:为了确认程序会不会走到某个地方,你可以先创建一个看门狗,然后在要确认的地方调用一个取消看门狗计时的函数,如果程序确实走到了那个地方,看门狗被取消,那么看门狗函数就不会被执行;如果看门狗函数被执行了,说明程序没有走到该处,表明出现了什么错误。这就是看门狗的使用。

motorola      mpc860这个芯片有个软件看门狗,当定时到时,芯片会复位。我看到别人的代码如下:   
     void      test(void)   
      
     启动看门狗   
     while(true)   
      
     ...   
      
      
    
     照程序看来,如果看门狗不能停止的话,那肯定得重启了,但在这个程序中,它又如何的停止呢?

看门狗用来在一定时间之后重启CPU,   
     正常情况下不要它重启CPU,所以定期要“喂狗”,其实就是通知看门狗   
     重新开始计时。   
     这样一来,如果一切正常,看门狗每次在重启之前被触发重新计时,所以就永远不会重启。   
     如果程序由于干扰等原因“跑飞”,不知道执行到什么地方去了,看门狗就没人喂了,时间一长,它就自动重启,程序恢复正常。   
     看门狗这东西是加强可靠性用的。

同意ckc(火)的说法,比较正确和完整。   
     看门狗是不随主芯片时钟的停止而停止的,它是一个独立的计时单元,假如你在程序中使用并设置了看门狗寄存器,在系统加电后它就会启动,若在指定周期内没有重置看门狗寄存器(也就是大家常说的喂狗),系统将会重新启动。   
    
     这种设计为系统提供了极高的可靠性,即使系统死锁,也可以及时的自动恢复系统。   
     现在地绝大多数mcu都有这个

看门狗的主要操作一般有三种:启动,触发和停用.   
     启动是指设置初始参数并调用中断以使看门狗开始工作;   
     触发是指在看门狗的记数器的数值减为零以前对其恢复初始值;   
     停用是指调用中断停止使用看门狗.   
     在程序中应选择适当的地方对其进行触发选择时有许多讲究,程序比较大时会比较难确定,但使用它确实有很多优点不能说不容易用所以就不用

几乎所有的嵌入式操作系统都有看门狗任务,它的主要功能是防止系统死掉或者陷入死循环。也就是每个一定的时间就会执行看门狗任务,以reset系统.  

喂狗的方式举个例子:在os任务调度的时候顺便触发一下看门狗,这样一旦任务长时间停止调度系统就会复位,这个功能实现起来很简单,并不需要应用程序多操什么心。

     照一般的看门狗定时的使用方法一般为:   
    
     1。设置看门狗控制器;//初始化狗的唤醒时间,使能看门狗   
     2。睡眠;          //等待,或作其它的事   
     3。唤醒后检测中断位是否是由狗中断导致的唤醒   
     4。延时完成,继续其它程序

看门狗在启动的时候一般都会设置超时时间,超时时间按照一定的频率递减,减到零就复位,所以得定时将一个计时器更新到最大,防止减小到零。超时时间初始化时一般都是固定好的。

 

看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

  工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813 ,5045, IMP 813等,价格4~10元不等.

  软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。

  51 系列有专门的看门狗定时器,对系统频率进行分频计数,定时器溢出时,将引起复位.看门狗可设定溢出率,也可单独用来作为定时器使用.
  凌阳61的看门狗比较单一,一个是时间单一,第二是功能在实际的使用中只需在循环当中加入清狗的指令就OK了。

  C8051Fxxx单片机内部也有一个21位的使用系统时钟的定时器,该定时器检测对其控制寄存器的两次特定写操作的时间间隔。如果这个时间间隔超过了编程的极限值,将产生一个WDT复位。

  看门狗使用注意:大多数51 系列单片机都有看门狗,当看门狗没有被定时清零时,将引起复位。这可防止程序跑飞。设计者必须清楚看门狗的溢出时间以决定在合适的时候,清看门狗。清看门狗也不能太过频繁否则会造成资源浪费。程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器置数,即可预防溢出中断而引起的误复位。
看门狗运用:看门狗是恢复系统的正常运行及有效的监视管理器(具有锁定光驱,锁定任何指定程序的作用,可用在家庭中防止小孩无节制地玩游戏、上网、看录像)等具有很好的应用价值.

 

  系统软件"看门狗"的设计思路:

  1.看门狗定时器T0的设置。在初始化程序块中设置T0的工作方式,并开启中断和计数功能。系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的10次方)-1=65 535,T0输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。

  2.计算主控程序循环一次的耗时。考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。系统设置"看门狗"定时器T0定时30 ms(T0的初值为65 536-30 000=35 536)。主控程序的每次循环都将刷新T0的初值。如程序进入"死循环"而T0的初值在30 ms内未被刷新,这时"看门狗"定时器T0将溢出并申请中断。

  3.设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入"无条件转移"命令,把计算机拖回整个程序的第一行,对单片机重新进行初始化并获得正确的执行顺序。


关键字:MSP430  学习小结 引用地址:MSP430学习小结

上一篇:建立链表遇到的问题(链表突然消失,链表突然全部为空)
下一篇:msp430的中断优先级和中断嵌套

推荐阅读最新更新时间:2024-03-16 14:38

Msp430时钟设计与寄存器说明
4.1基础时钟模块+介绍 基础时钟模块+支持低系统消耗和超低功耗。采用三种片内时钟信号,用户可以选择合适 的性能和低功耗。基础时钟模块只需接一个外部电阻、一个或两个外部晶体、或者用振荡器, 通过软件控制。 基础时钟模块+有4 个时钟源: LFXT1CLK:由低频时钟晶体或外接32768Hz 时钟源产生的低频/高频振荡器或由标准晶 体、振荡器,或外部400KHz~16MHz的外部时钟源提供。 XT2CLK:可供选择的高频振荡器,由标准晶体、振荡器,或外部400KHz~16MHz 的外 部时钟源提供。 DCOCLK:片内可数字控制的振荡器。 VLOCLK:片内超低功耗、12KHz 的低频振荡器。 基础时钟模块可提
[单片机]
<font color='red'>Msp430</font>时钟设计与寄存器说明
基于MSP430的无线门禁控制系统设计
引言   随着人们生活水平的不断提高,家庭防盗这一问题也变得尤为突出。传统的机械锁因其结构简单、安全性差等缺陷,已经逐渐被淘汰,电磁锁由于其保密性高、使用灵话、安全系数高,逐渐进入千家万户。如果在一个家居系统中有多个门,就需要一套综合的门控系统,这样就可以监控所有楼门的开关。   参考文献设计的门控系统是以AT89S51单片机为控制核心,系统功耗较大,使用成本较高,所以其应用具有一定的局限性。参考文献设计的门控系统利用局域网进行组网控制,所以制作成本较高,而且应用范围有限。针对以上缺点,本系统采用MSP430系列单片机CCA30F5135芯片为控制核心,其不但具有 MSP430系列单片机的低功耗性能,而且具有RF无线收发器
[安防电子]
基于<font color='red'>MSP430</font>的无线门禁控制系统设计
IAR for msp430的一个编译错误的解决方法
简介:很多人在win7上安装 IAR for msp430 后编译会出现如上的错误,笔者刚开始也遇到了这个问题,很是困惑。在网上找解决方法。 Fatal Error : Copy protection check, No valid license found for this product 2 很多人在win7上安装 IAR for msp430 后编译会出现如上的错误,笔者刚开始也遇到了这个问题,很是困惑。在网上找解决方法。很多都是如下回答: 注意:破解后如出现以下情况: Fatal Error : Copy protection check, No valid license found for this pr
[单片机]
MSP430 5xx/6xx Watchdog看门狗编程实例
看门狗定时器是一个32位定时器,可以用作看门狗或间隔定时器。 看门狗定时器模块的主要功能是在出现软件问题后执行受控的系统重启。如果超过选定的时间间隔,将生成系统复位。如果应用程序不需要看门狗功能,则模块可配置为间隔定时器,并可在选定的时间间隔内生成中断。 看门狗定时器模块的特点包括: 八个软件可选时间间隔 看门狗模式 间隔定时器模式 密码保护访问看门狗定时器控制(WDTCTL)寄存器 可选时钟源 可停止以节省电力 时钟故障保护功能 注:看门狗定时器上电时自动激活 在PUC之后,WDT_A模块自动配置为看门狗模式,初始复位间隔为32ms,使用SMCLK。用户必须在这个初始重置间隔到期之前设置或停止WDT_A。 看
[单片机]
MSP430串口接收发送中断程序
MSP430串口接收发送中断程序F149 #include msp430x14x.h unsigned char RecBuf ; //接收数据缓存 unsigned char *SDat; //指向要发送的数据 unsigned char Rindex; //接收数据计数 unsigned char Tindex; //发送数据计数 unsigned char SendLen; //发送数据长度 void ConfigUart0() { P3SEL |= 0x30; // 选择
[单片机]
基于MSP430单片机的婴儿睡眠监护系统
  在当今生活和工作节奏日益紧张的社会,女性往往要兼顾工作和家庭,尤其初为人母,既要照顾婴儿,还要料理家务,新妈妈们往往手忙脚乱。婴儿一天中大部分时间都在睡眠,如何对其进行睡眠监护,在婴儿醒来时及时安抚、如何解决尿湿问题一直困扰着忙碌的新妈妈们。绝大多数的家庭选择使用方便的纸尿裤,但纸尿裤除了高开支以外,它的吸水层容易滋生细菌,不及时更换就会捂出红疹,对婴儿的健康也有隐患。纯棉尿布健康舒适,但需要及时更换,市面上现有的尿湿检测装置大多是单点测量,存在漏报的可能。   本文设计的远程婴儿尿湿监护系统能有效地为新妈妈们解决这个困扰。在异常报警部分,主要检测两种情况:1)婴儿尿湿;2)婴儿由于不舒服或需要照顾而产生的哭闹。系统采用多点
[单片机]
基于<font color='red'>MSP430</font>单片机的婴儿睡眠监护系统
基于MSP430的车体自动调平系统
  目前,调平技术都已逐步成熟,但随着武器机动性要求的不断提高,也相应提高了对调平时间和调平精度的要求,与之相适应的自动控制调平技术也不断发展。自动调平系统的发展方向主要是:   (1)精确性:系统的精确性主要取决于倾角传感器的分辨率。随着新结构、新材料、新工艺和新技术在高精度倾角传感器中的应用,倾角传感器的性能大幅度地提高了,倾角传感器正从传统的液体摆、气体摆原理向伺服加速度及力平衡、重力摆原理发展,倾角传感器的分辨率已达到0.001度或更高。   (2)稳定性:为了适应现代武器高机动性和快速反应能力的需求,要求车载平台有更高的稳定性,采用机电伺服系统代替电液伺服系统,加上单片机系统可靠性与抗干扰技术的不断发展,奠定了单片机系统
[单片机]
基于<font color='red'>MSP430</font>的车体自动调平系统
MSP430单片机型号资料
MSP430单片机的发展 德州仪器1996年到2000年初,先后推出了31x、32x、33x等几个系列,这些系列具有LCD驱动模块,对提高系统的集成度较有利。每一系列有ROM 型(C)、OTP 型(P)、和 EPROM 型(E)等芯片。EPROM 型的价格昂贵,运行环境温度范围窄,主要用于样机开发。这也表明了这几个系列的开发模式,即:用户可以用 EPROM 型开发样机;用OTP型进行小批量生产;而ROM型适应大批量生产的产品。 2000 年推出了11x/11x1系列。这个系列采用20脚封装,内存容量、片上功能和 I/O 引脚数比较少,但是价格比较低廉。 这个时期的MPS430已经显露出了它的特低功耗等的一系列技术特点,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved