msp430学习笔记-TA
定时器,CCR2,CCR1三者共用一个中断向量
定时器A是一个16位的定时/计数器。它有3个捕获/比较寄存器;能支持多个时序控制、多个捕获/比较功能和多个PWM输出;有广泛的中断功能,中断可由计数器溢出产生,也可以由捕获/比较寄存器产生。
TimerA的4种工作模式
1.停止模式
停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方
向计数。例如,停止模式前,Timer_A工作于增/减计数模式并且处于下降计数方向,停止模式后,Timer_仍然工作于增/减计数模式,从暂停前的状态开始继续沿着下降方向开始计数。如果不需这样,则可通过TACTL中的CLR控制位来清除定时器的方向记忆特性。
2.增计数模式
捕获/比较寄存器CCR0用作Timer_A增计数模式的周期寄存器。因为CCR0为16位寄存器,所以该模式适用于定时器周期小于65536的连续计数情况。计数器TAR可以增计数到CCR0的值,当计数值与CCR0的值相等(或定时器值大于CCR0的值)时,定时器复位并从0开始重新计数。

3.连续计数模式
在需要65536个时钟周期的定时应用场合常用连续计数模式。定时器从当前值计数到0FFFH后,又从0开始重新计数。
连续计数模式的典型应用:
产生多个独立的时序信号。利用捕获比较寄存器捕获各种其它外部事件发生的定时器数据。
产生多个定时信号。

4.增/减计数模式
需要生成对称波形的情况经常可以使用增/减计数模式。该模式下,定时器先增计数到CCR0的值,然后反向减计数到0。计数周期仍由CCR0定义,它是CCR0计数器值的2倍。

TimerA寄存器说明
| 寄存器 | 寄存器说明 | 类型 | 地址 | 初始状态 | 
| TACTL | Timer_A控制寄存器 | 读写 | 160H | POR复位 | 
| TAR | Timer_A计数器 | 读写 | 170H | POR复位 | 
| CCTL0 | 捕获/比较控制寄存器0 | 读写 | 162H | POR复位 | 
| CCR0 | 捕获/比较寄存器0 | 读写 | 172H | POR复位 | 
| CCTL1 | 捕获/比较控制寄存器1 | 读写 | 164H | POR复位 | 
| CCR1 | 捕获/比较寄存器1 | 读写 | 174H | POR复位 | 
| CCTL2 | 捕获/比较控制寄存器2 | 读写 | 166H | POR复位 | 
| CCR2 | 捕获/比较寄存器2 | 读写 | 176H | POR复位 | 
| TAIV | 中断向量寄存器 | 读写 | 12EH | POR复位 | 
1.TACTL 控制寄存器,各位定义:
| 15-10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
| 未用 | SSEL1 | SSEL0 | ID1 | ID0 | MC1 | MC0 | 未用 | CLR | TAIE | TAIFG | 
SSEL1、SSEL0选择进入定时器分频器的时钟源,
| SSEL1 | SSEL0 | 输入时钟源 | 说明 | 
| 0 | 0 | TACLK | 用特定的外部引脚信号 | 
| 0 | 1 | ACLK | 辅助时钟 | 
| 1 | 0 | MCLK | 系统时钟 | 
| 1 | 1 | INCLK | 外部输入时钟 | 
ID1、ID0输入分频系数
| ID1 | ID0 | 分频系数 | 
| 0 | 0 | 不分频 | 
| 0 | 1 | 1/2分频 | 
| 1 | 0 | 1/4分频 | 
| 1 | 1 | 1/8分频 | 
MC1、MC0计数模式控制位
| MC1 | MC0 | 模式 | 
| 0 | 0 | 停止模式 | 
| 0 | 1 | 增计数模式 | 
| 1 | 0 | 减计数模式 | 
| 1 | 1 | 增/减计数模式 | 
CLR——定时器清除。当该位为1时,定时器复位。
TAIE——定时器中断允许位。0:禁止定时器溢出中断;1:允许定时器溢出中断。
TAIFG——定时器溢出标志位。
增计数模式:当定时器由CCR0计数到0时,TAIFG置位;
连续计数模式:当定时器由0FFFFH计数到0时,TAIFG置位;
增/减计数模式:当定时器由CCR0减计数到0时,TAIFG置位。
2.TAR 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复位/置位
定时器A的输出单元输出模式有8种






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 | 
| 没有中断将挂起 | 
msp430学习笔记-TA的更多相关文章
- msp430学习笔记-msp430g2553
		C语言例程:http://wenku.baidu.com/link?url=49JzNSvt3m0fRuf8SWTEM8yEw1yzqr4lBR-QbX8FddcmjTVYnDhuR97wB60HNf ... 
- msp430学习笔记-ADC12
		本文引用:http://bbs.ednchina.com/BLOG_ARTICLE_3013748.HTM MSP430单片机的ADC12模块是一个12位精度的A/D转换模块,它具有高速度,通用性等特 ... 
- msp430学习笔记-实现开方log等计算及FFT算法(待续)
		MSP430 FFT算法实现 http://bbs.21ic.com/icview-391532-1-1.html http://blog.sina.com.cn/s/blog_6cd2030b010 ... 
- msp430学习笔记-DAC12
		MSP430F169 的DAC12 模块有2 个DAC 通道,并且可以用DAC12GRP控制位将多个DAC12通道组合起来,实现同步更新,硬件还能确保同步更新独立于任何中断或者NMI事件. DAC12 ... 
- msp430学习笔记-USART
		本文引用:http://bbs.ednchina.com/BLOG_ARTICLE_3013784.HTM MSP430F149有两个USART通讯端口,其性能完全一样,每个通讯口可通过RS232和R ... 
- msp430学习笔记-时钟及延时函数
		引用:http://blog.chinaunix.net/uid-24343357-id-3271380.html MCLK默认时钟源是DCOCLK,SMCLK默认时钟源也是DCOCLK,DCOCLK ... 
- msp430学习笔记-IO及低功耗
		引用:http://bbs.ednchina.com/BLOG_ARTICLE_3013511.HTM MSP430F149有6个8位的IO口,其中P1,P2口占两个中断向量,共可以接16个中断源.还 ... 
- MSP430学习笔记:UART
		串通可以两种方法其现 一.USART硬件直接实现 二.通过定时器软件实现 该模块可现现: UART异步串行通讯 SPI同步串行通讯 I2C同步串行通讯 UxCTL控制寄存器 7:PENA 6:PEV ... 
- Android动画学习笔记-Android Animation
		Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ... 
随机推荐
- web前端优化
			在谈到Web优化之前,我们回到一个更原始的问题,Web前端的本质是什么.我的理解是: 将信息快速并友好的展示给用户并能够与用户进行交互.快速的意思就是在尽可能短的时间内完成页面的加载,试想一下当你在淘 ... 
- CompletableFuture
			若你的意图是并发,而非并行,或者你的主要目标是在同一个CPU上执行几个松耦合的任务,充分利用CPU的核,让其足够忙碌,从而最大化程序的吞吐量,那么其实真正想做的避免因为等待远程服务的返回,或对数据库的 ... 
- ANDROID init进程
			init简要 init是Android上启动的第一个用户态进程. 执行序列是: start_kernel() -> rest_init() -> kernel_init() -> i ... 
- pytorch实现autoencoder
			关于autoencoder的内容简介可以参考这一篇博客,可以说写的是十分详细了https://sherlockliao.github.io/2017/06/24/vae/ 盗图一张,自动编码器讲述的是 ... 
- Seaweedfs-启动脚本
			#!/bin/bash if [ ! -e /sunlight/shell/main.sh ];then echo " [ Error ] file /sunlight/shell/main ... 
- Keepalived 进程无法关闭
			操作系统:SLES12sp2 keepalived版本:1.2.12 问题描述: 使用命令"systemctl stop keepalived" 无法关闭keepalived,使用 ... 
- GitHub教程手册、使用流程
			简述GitHub的使用方法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请调整网页缩放比例至200%) 1 注册过GitHub的朋友, ... 
- 转载  React.createClass 对决 extends React.Component
			先给出结论,这其实是殊途同归的两种方式.过去我们一般都会使用 React.createClass 方法来创建组件,但基于 ES6 的小小语法糖,我们还可以通过 extends React.Compon ... 
- C#获取IIS所有站点及虚拟目录和应用程序(包含名称及详细信息)
			using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ... 
- MySQL--派生表Condition Pushdown优化
			如果派生表外部过滤条件可以下推到派生表内部,可以有效减少派生表内部扫描数据量和派生表使用内存甚至避免使用派生表. 如对于下面查询: SELECT * FROM ( SELECT cluster_id, ... 
