MSP430 watchdog timer 1【原创】
0赞
今天让我们来说一下定时器吧。记得以前学习微机原理的时候,那时间用的是汇编语言,我们需要记忆一下指令的周期数,然后记忆些数字加上一些循环来实现几个通用时间。后来学单片机的时候有了定时器的概念,最早用定时器是在51单片机输出占空比可调的PWM波控制电机转速的时候用上的。定时器可以产生中断,可以满足各种应用。
MSP430系列有丰富的定时器资源:看门狗定时器(WDT)、基本定时器(BASIC Timer)、定时器A(Timer_A)、定时器B(Timer_B)、实时时钟(RTC)等。当然不同系列配备模块不同。
MSP430各种定时器功能:
定时器 |
功能 |
看门狗定时器 |
基本定时,当程序发生错误时执行一个受控的系统重启动 |
基本定时器 |
基本定时,支持软件和各种外围模块工作在低频率、低功耗条件下 |
实时时钟 |
基本定时,日历功能 |
定时器A |
基本定时,支持同时进行的多种时序控制、多个捕获/比较功能和多种输出波形(PWM),可以硬件方式支持串行通信 |
定时器B |
基本定时,功能基本同定时器A,但比定时器A灵活,功能更强大 |
前面在系统复位的时候提到过看门口,然后其实每个实用的例子里面也都会在开始的时候有一条关闭看门狗的语句。那什么是看门狗(watchdog)呢。
网上搜了一个比较合胃口的介绍:
看门狗,又叫watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
也就是说看门狗定时器实际上是一个特殊的定时器,它的功能是当程序发生故障时序时能使系统重新启动。其原理就是发生的故障时间满足规定的定时时间后,产生一个非屏蔽中断,使系统复位。
MSP430单片机中的watchdog timer 是一个16位的定时器,通过对WDTCTL寄存器的配置,它既可以被选作当看门狗使用,也能选作作为一个间隔计时器使用。下面是看门狗定时器的内部结构。其实看一下就好了。
这里需要提到一个问题,当产生一个PUC信号的时候,看门狗模块被自动配置工作在看门狗模式,通过使用DCOCLK产生一个32ms左右的复位间隔时间。这也就解释了为什么我们要在程序一开始加上关闭看门狗的语句了。
操作WDT所涉及的寄存器
Register |
Short Form |
Register Type |
Address |
InitialState |
Watchdog timer Control register |
WDTCTL |
Read/write |
0120h |
06900h with PUC |
SFR interrupt enable register 1 |
IE1 |
Read/write |
0000h |
Reset with PUC |
SFR interrupt flag register1 |
IFG1 |
Read/write |
0002h |
Reset with POR |