新闻  |   论坛  |   博客  |   在线研讨会
MSP430定时器B
Capture | 2013-08-03 14:35:25    阅读:843   发布文章

  MSP43016位定时器B模块是单片机的重要资源。MSP430F13/14/15x系列都有定时器模块B,但是不同单片机系列所带的比较/捕获模块功能有所不同。

1.定时器B模块:

TimerB与TimerA大部分相同,不同点在于定时器B的捕获/比较单元增加了锁存器。

二者区别:

(1)TimerB计数长度为8位,10位,12位,16位可编程,由TBCTL寄存器的CNTLx两位来配置,而定时器A的计数长度是固定的16位;

(2)TimerB没有实现定时器A中的SCCI功能位的功能;

(3)TimerB在比较模式下的捕获/比较寄存器功能与TimerA不同,增加了捕获比较锁存器;

(4)有些芯片型号当中TimerB输出实现了高阻抗输出;

(5)比较模式的原理有所不同:TimerA当中CCRx寄存器当中保存与TAR相比较的数据,而在TimerB当中CCRx中保存要比较的数据,但并不直接与定时器TBR相比较,而是将CCRx当中的数据锁存到相应的锁存器之后,由锁存器与TBR相比较。从捕获/比较寄存器相比较锁存器传输数据的过程的时间也是可编程的,可以是写入比较捕获寄存器之后立即传输,也可有一个定时器来触发传输。

(6)TimerB支持多种同步的定时功能,多重比较捕获功能和多重波形输出功能(PWM波)。而且,通过对比较数据的两级缓冲,可实现多个PWM波同步周期更新。

2.TimerB的逻辑结构图:
MSP430--定时器B
MSP430--定时器B
定时器B的逻辑结构基本与定时器A相同。

 

3.定时器B的寄存器:

寄存器相关位的配置过程参考定时器A和数据手册。

MSP430--定时器B
4.定时器B的比较功能

当定时器B工作在比较模式时,将数据写入捕获比较锁存器TBCCRx当中,当TBCCTLx当中的CLLDx位决定的装载事件的发生时,TBCCRx中的数据会自动地传输到比较寄存器当中。

5.TI提供的例程:

//
//  // 
//
//               MSP430F149
//            -----------------
//        /|\|              XIN|-
//         | |                 | HF XTAL (455k - 8MHz)
//         --|RST          XOUT|-
//           |                 |
//           |         P4.1/TB1|--> CCR1 - 75% PWM
//           |         P4.2/TB2|--> CCR2 - 25% PWM
//
//  M. Buccini
//  Texas Instruments Inc.
//  Feb 2005
//  Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************

#include  <msp430x14x.h>

void main(void)
{
  volatile unsigned int i;
  WDTCTL = WDTPW +WDTHOLD;                  // Stop WDT

//系统时钟初始化
  BCSCTL1 |= XTS;                           // ACLK= LFXT1 = HF XTAL

  do
  {
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  for (i = 0xFF; i > 0; i--);               // Time for flag to set
  }
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?

  BCSCTL2 |= SELM_3;                        // MCLK= LFXT1 (safe)

//io口初始化
  P4DIR |= 0x06;                            // P4.1 and P4.2 output
  P4SEL |= 0x06;                            // P4.2 and P4.2 TB1/2 otions

//定时器B的配置
  TBCCR0 = 128;                             // PWM Period/2
  TBCCTL1 = OUTMOD_6;                       // CCR1 toggle/set
  TBCCR1 = 32;                              // CCR1 PWM duty cycle
  TBCCTL2 = OUTMOD_6;                       // CCR2 toggle/set
  TBCCR2 = 96;                              // CCR2 PWM duty cycle
  TBCTL = TBSSEL_1 + MC_3;                  // ACLK, up-down mode

  _BIS_SR(CPUOFF);                          // Enter LPM0
}


 

 

 

 

 

 

 

 

 

 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客