MSP430单片机定时器面面观
AR 16位计数器。
3. CCTLx 捕捉/比较控制寄存器,各位定义:
15 14 | 13 12 | 11 | 10 | 9 | 8 | 7 6 5 | 4 | 3 | 2 | 1 | 0 |
CAPTMOD1~0 | CCIS1~0 | SCS | SCCIx | CAP | OUTMODx | CCIEx | CCIx | OUT | COV | CCIFGx |
CAPTMOD1~0——选择捕获模式
00:禁止捕获模式
01:上升沿捕获
10:下降沿捕获
11:上升沿与下降沿都捕获
CCIS1~0——捕获事件输入源
00:选择CCIxA
01:选择CCIxB
10:选择GND
11:选择Vcc
SCS——选择捕获信号与定时器时钟同步、异步关系
0:异步捕获
1:同步捕获(实际中经常使用同步模式,捕获总是有效的)
SCCIx——比较相等信号EQUx将选中的捕获/比较输入信号CCIx(CCIxA,CCIxB,Vcc和GND)进行锁存,然后可由SCCIx读出。
CAP——选择捕获模式还是比较模式。
0:比较模式
1:捕获模式
OUTMODx——选择输出模式
000:输出
001:置位
010:PWM翻转/复位
011:PWM置位/复位
100:翻转
101:复位
110:PWM翻转/置位
111:PWM复位/置位
CCIEx——捕获/比较模块中断允许位
0:禁止中断
1:允许中断
CCIx——捕获/比较模块的输入信号
捕获模式:由CCIS0和CCIS1选择的输入信号可通过该位读出
比较模式:CCIx复位
OUT——输出信号(如果OUTMODx选择输出模式0,则该位对应于输入状态)
0:输出低电平
1:输出高电平
COV——捕获溢出标志
0:没有捕获溢出
1:发生捕获溢出
当CAP=0时,选择比较模式。捕获信号发生复位。没有使COV置位的捕获事件。
当CAP=1时,选择捕获模式。如果捕获寄存器的值被读出前再次发生捕获事件,则COV置位。程序检测COV来判断原值读出前是否又发生捕获事件。读捕获寄存器时不会使溢出标志复位,须用软件复位。
CCIFGx——捕获比较中断标志
捕获模式:寄存器CCRx捕获了定时器TAR值时置位
比较模式:定时器TAR值等于寄存器CCRx值时置位
4. CCRx 捕捉/比较寄存器:可读可写
在捕获模式,当满足捕获条件,硬件自动将计数器TAR数据写入该寄存器。
如果测量某窄脉冲(高电平)的脉冲长度,可定义上升沿和下降沿都捕获。在上升沿时,捕获一个定时器数据,这个数据在捕获寄存器中读出;再等待下降沿到来,在下降沿时又捕获一个定时器数据;那么两次捕获的定时器数据差就是窄脉冲的高电平宽度。
其中CCR0经常用作周期寄存器,其它CCRx相同。
5. TAIV 中断向量寄存器:
Timer_A模块使用两个中断向量。一个单独分配给捕获/比较寄存器CCR0;另一个作为共用中断向量用于定时器和其它的捕获/比较寄存器。
捕获/比较寄存器CCR0中断向量具有最高的优先级。因为CCR0能用于定义增计数和增/减计数模式的周期。因此,它需要最快速的服务。CCIFG0在被中断服务时能自动复位。
CCR1~CCRx和定时器共用另一个中断向量,属于多源中断,对应的中断标志CCIFG1~CCIFGx和TAIFG1在读中断向量字TAIV后,自动复位。如果不访问TAIV寄存器,则不能自动复位,须用软件清除。
15~5 | 4~ 1 | 0 |
0~0 | 中断向量 | 0 |
中断优先级 | 中断源 | 缩写 | TAIV的内容 |
最高 | 捕获/比较器1 | CCIFG1 | 2 |
捕获/比较器2 | CCIFG2 | 4 | |
...... | |||
捕获/比较器x | CCIFGx | ||
最低 | 定时器溢出 | TAIFG1 | 10 |
没有中断将挂起 |
————————————————————————————————————————————————
//******************************************************************************
//
// Lierda, Inc
// Built with IAR Embedded Workbench Version: 3.41a
// ID: MSP430-TEST44X
// 程序功能:实现延时 1S,驱动LED4闪烁
// 通过本实验了解MSP430内部的时钟来源和不同频率的设置。
// 硬件连接:在必须连接P1.1、P1.5短接器,
//******************************************************************************
#include "msp430x44x.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器
TACTL = TASSEL0
MSP430单片机定时 相关文章:
- MSP430单片机定时器B中断实验(12-01)
- MSP430单片机定时器(11-25)
- MSP430单片机——定时器(11-13)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)