MSP430F5529 (七)定时器B

http://blog.lehu.shu.edu.cn/879836630/A450844.html


七、定时器Timer_B
 
          定时器B和定时器A有很多相同之处,学习的时候注意回忆Timer_A的      相关知识。注意,MSP430F5529中只有一个定时器B
            
                                                                                                                                                                                                                                                                                                                                                                                                                                                 
             7.1 定时器B的简介
 
                 7.1.1  特性(了解):
(1).    16 位同步定时 / 计数, 4 种工作模式可选、 4 中长度可选;
(2).    可选可配置时钟源;
(3).    高达 7 个捕获 / 比较寄存器;
(4).    可配置 PWM 输出;
(5).    带有同步装载的双缓冲比较寄存器;
(6).    快速解码的中断向量;
 
7.2.2 与定时器A的比较(相同点与不同点)
 
(1).    TB 的计数长度可以选择( 8 10 12 16BITS ),而 TA 只有 16 位;
(2).    TB0CCRn 寄存器是双缓冲的,且可以分组;
(3).    所有的 TB 输出可以被设为高阻状态;
(4).    TB 没有 SCCI ,即捕获器输入信号 CCI 没有被锁存;
 
看结构图,观察和TA有什么区别:
 
  •       
 
 
            7.2 Timer0_B寄存器介绍及设置)
                 声明: 所有寄存器同样支持字和字节操作
                            所有寄存器初始化都为 0x0000
 
      7.2.1 TB控制寄存器TB0CTL(最常用最基本)(和TA有一点不同)
                                   rw-(0)表示默认读写均为0
点击看大图
TBCLGGRP TB0CLn 分组控制
                       00 每个 TB0CLn 独立使用
01 TB0CL1+TB0CL2 作为一组( TB0CCR1 CLLD 位控制整组数据更新)
TB0CL3+TB0CL4 作为一组( TB0CCR3 CLLD 位控制整组数据更新)
TB0CL5+TB0CL6 作为一组( TB0CCR5 CLLD 位控制整组数据更新)
                            10 TB0CL1 2 3 一组,( TB0CCR1 CLLD 位控制整组数据更新)
                                    TB0CL4 5 6 一组,( TB0CCR4 CLLD 位控制整组数据更新)
                            11 TB0CL0 1 2 3 4 5 6 整合为一组,
TB0CCR1 CLLD 位控制整组数据更新)
CNTL 计数器长度控制
00  16 位,即最大可以计到 0FFFFh
01  12 位,即最大可以计到 0FFFh
10  10 位,即最大可以计到 03FFh
11   8 位,即最大可以计到 0FFh
 
TBSSEL  时钟源选择。尽量不要选 TACLK 外部时钟源,因为如果 TACLK CPU 时钟不同步,很容易出问题。( TB0CLK P7.7 引脚)
00  TBCLK 
01  ACLK 
10  SMCLK 
11   ~TBCLK
 
ID 第一次分频控制。 ID0-1 分频; ID1-2 分频; ID2-4 分频; ID3-8 分频
MC 工作模式控制。(建议在修改定时器运行模式前先停止定时器(中断使能、中断标志、 TACLR 例外),以避免产生未知的误操作。)(和 TA一样)
00  停止模式:定时器停止  
01  增模式:   定时器计数到 TB0CCR0 
10  连续模式,定时器计数到 0FFFH 16 位) …12 位、 10 … 
11 增减模式:定时器加计数到 TB0CCR0 然后减计数到 0000H 
TBCLR 定时器清零位。该位置位会复位 TA 寄存器,时钟分频和计数方向。
TACLR 位会自动复位并置 0
TBIE 定时器中断使能
                                     0 :中断禁止
1 :中断允许
TBIFG 中断标志位
                                     0 :没有中断发生
1 :有中断挂起
 
7.2.2 计数值存放寄存器TB0R
         
 
7.2.3 扩展寄存器TBEX0
                  很简单,这个寄存器就是为了控制时钟源的二次分频(看结构图)。
                  该寄存器的低 3 为定义为 TBIDEX 000-111 分别表示 1-8 分频
 
7.2.4 捕获/比较寄存器TBCCR0-TBCCR67个)
                  比较模式下,用来设定计数终值;
捕获模式下用来将捕获的 TBR 值存放进 TBCCRx 中。
 
 
 
       7.2.5 捕获/比较控制寄存器TB0CCTL0-TB0CCTL6
点击看大图
CM 捕获模式设定     00  不捕获  
01  上升沿捕获  
10  下降沿捕获  
11 上升和下降沿都捕获
 
       CCIS 捕获源的选择              00  CCIxA 
01  CCIxB 
10  GND 
11  VCC 
SCS 同步捕获源,设定是否与时钟同步
                                                 0  异步捕获  
同步捕获  
CLLD 比较寄存器缓冲装载模式选择。
00   TB0CCRn 的值(改变时)立即装载到 TB0CLn 
01    TB0R 的值计到 0 时,进行装载
10    增模式或者连续模式下, TBR0 值计到 0 时,进行装载  
         增减模式下, TBR0 计数到 TBCL0 时,开始装载;
11   TBR0 计数到 TBCL0 时,开始装载;
 
CAP 0 - 比较模式      1- 捕获模式
OUTMOD 输出模式控制位。 TA一模一样    
CCIE 中断使能,该位允许相应的 CCIFG 标志中断请求  
0 - 中断禁止       1 - 中断允许  
CCI   捕获比较输入,所选择的输入信号可以通过该位读取
OUT   对于输出模式 0 ,该位直接控制输出状态  
0 - 输出低电平     1- 输出高电平
COV 捕获溢出位。该位表示一个捕获溢出发出, COV 必须由软件复位。  
0 - 没有捕获溢出发生   1 - 有捕获溢出发生
CCIFG 捕获比较中断标志位。
 0 - 没有中断挂起     1 - 有中断挂起
 
 
               7.2.6 中断向量寄存器TB0IV
                                             TAIV一样,里面存放一个数字编号。
  • 点击看大图
 
 
7.3 重点讲TBTA的不同之处
 
                        7.3.1 没有再把CCI信号锁存了
                                       TA 作捕获器的时候, CCI 为捕获信号,然后 CCI 被锁存输出            为 SCCI
 
                                              但是,TB 没有锁存。也就是说只能从 CCI 位查看输入信        号了。
 
                        7.3.2 计数值位数可调了(其实无所谓,都可以16位那干嘛不用)
                                              TA 的计数值寄存器 TAR 只能是 16 位( 0XFFFFh );
 
                                             TB 计数值寄存器 TBR 可以选择是 16 12 10 8 位;
 
                        7.3.3 两级缓冲比较器(比较模式下)
TA 里面,我们在 TACCRn 中写入要比较的数值,然后让 TAR 中的计数值和 TACCRn 比较,如果相等了,相应的标志位就会置位;
 
TB里面, 不仅有 TB0CCRn ,还多了一个二级缓存器 TB0CLn TB0CLn 不能被直接进行操作,它的值只能来源于 TB0CCRn 。计数的时候, TB0R 中的计数值不和 TB0CCRn 比较,而是和 TB0CLn 进行比较。
二级缓冲是为了防止我们在修改 TB0CCRn 的值的时候,对计数产生影响。因为计数器不直接和 TB0CCRn 比较,而是 TB0CCRn 把值赋给 TB0CLn ,由 TB0CLn 去和 TB0R 进行比较。所以也就有了 CLLD 位控制比较寄存器缓冲装载模式:(当向 TB0CCRn 中重新写数时)
00  TB0CCRn 的值立即装载到 TB0CLn 
01   TB0R 的值计到 0 时,进行装载
10   增模式或者连续模式下, TBR0 值计到 0 时,进行装载  
         增减模式下, TBR0 计数到 TBCL0 时,开始装载;
11   TBR0 计数到 TBCL0 时,开始装载;
 
 
 
 
 
              7.3.4  比较器可以被分组
                                       TA 没有二级缓冲寄存器,而且本来的 TACCRn 也只能被单         独使用。
对于TB
TBCLGGRP TB0CLn 二级缓冲寄存器分组控制
                       00 每个 TB0CLn 独立使用
01 TB0CL1+TB0CL2 作为一组( TB0CCR1 CLLD 位控制整组数据更新)
TB0CL3+TB0CL4 作为一组( TB0CCR3 CLLD 位控制整组数据更新)
TB0CL5+TB0CL6 作为一组( TB0CCR5 CLLD 位控制整组数据更新)
                            10 TB0CL1 2 3 一组,( TB0CCR1 CLLD 位控制整组数据更新)
                                    TB0CL4 5 6 一组,( TB0CCR4 CLLD 位控制整组数据更新)
                            11 TB0CL0 1 2 3 4 5 6 整合为一组,
TB0CCR1 CLLD 位控制整组数据更新)
 
                               所谓的分组,就是该组的数据要同时更新。
                               10模式下的TB0CL123这组为例:
                                 TB0CCTL1 中的 CLLD 设置为 01 ,即 TB0R 计数到 0 时, TB0CCR1 就会把值装载(更新)到 TB0CL2 中,同时 TB0CCR2 就会把值装载(更新)到 TB0CL2 中,同时 TB0CCR3 也会把值装载(更新)到 TB0CL3 中。无论 TB0CCRn 中的值有几个发生了变化,但它们都只会同时更新 TB0CLn
 
                        一个重要的应用:
 
             如图,增减模式下,可以用来产生有死区时间(dead time)的信号。点击看大图
 
                               我们知道有一种H电路结构,该电路有一般有两个输入端,而且这两个输入端(12)严禁同时输入高电平。那么该怎么产生驱动该电路的信号呢:
                 但是,如果我们想要在系统运行的时候,修改死区时间怎么办。那只有修改
                 比较器里面的数值了。这样就有问题了,如果两个比较器数值没有同时修改,那么就有可能产生同时为高电平的情况,这就很危险了。所以,我们把比较器分组,这样数据同时更新,就不会有这样的担心了。
 
 
 
 

 


此贴由 落叶公子 在 2013/9/8 10:17:42 进行编辑...



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值