TI中文支持网
TI专业的中文技术问题搜集分享网站

TimerA2

求msp430g2553TimerA2输出PWM波的程序,现在只能用TimerA1产生一路pwm波,现在急需两路pwm波

Hardy Hu:

在P2.2与P2.4上输出PWM波形,周期为TACCR0/SMCLK,正平宽(TACCR0-TACCR1)/TACCR0,(TACCR0-TACCR2)/TACCR0

#include  <msp430g2553.h>

 

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  P2DIR |= BIT2+BIT4;                       // P2.2 and P2.4 output

  P2SEL |= BIT2+BIT4;                       // P2.2: TACCR1 output, P2.4: TACCR2 output

  TACCR0 = 128;                             // PWM Period/2

  TACCTL1 = OUTMOD_6;                       // CCR1 toggle/set

  TACCR1 = 32;                              // CCR1 PWM duty cycle

  TACCTL2 = OUTMOD_6;                       // CCR2 toggle/set

  TACCR2 = 64;                              // CCR2 PWM duty cycle

  TACTL = TASSEL_2 + MC_3;                  // SMCLK, up-down mode

 

  _BIS_SR(LPM0_bits);                       // Enter LPM0

}

 

Peter_Zheng:

两路PWM的频率是否有要求?

Young Hu:

您好!

两路PWM信号之间有没有什么关系? 比如频率,占空比等等的。

另外,在2553中有两个Timer:Timer0_A3, Timer1_A3,其中两个timer的工作方式时一模一样的。

只不过在寄存器定义,引脚等方面有些差别。

Timer1_A3相应的寄存器定义可以在头文件中找到,可以根据您的程序填充相应的寄存器即可

SFR_16BIT(TA1IV);                             /* Timer1_A3 Interrupt Vector Word */

SFR_16BIT(TA1CTL);                            /* Timer1_A3 Control */

SFR_16BIT(TA1CCTL0);                          /* Timer1_A3 Capture/Compare Control 0 */

SFR_16BIT(TA1CCTL1);                          /* Timer1_A3 Capture/Compare Control 1 */

SFR_16BIT(TA1CCTL2);                          /* Timer1_A3 Capture/Compare Control 2 */

SFR_16BIT(TA1R);                              /* Timer1_A3 */

SFR_16BIT(TA1CCR0);                           /* Timer1_A3 Capture/Compare 0 */

SFR_16BIT(TA1CCR1);                           /* Timer1_A3 Capture/Compare 1 */

SFR_16BIT(TA1CCR2);                           /* Timer1_A3 Capture/Compare 2 */

Hardy Hu:

能不能说明一下您需要的两路PWM波是用在什么应用中有什么具体要求,比如频率,精度,两路之间是独立的呢还是有同步、互补、死区等关系?这样大家可以为您提供更好的方案

yun mu:

回复 Hardy Hu:

这个程序不能输出PWM波啊,现在急需两路占空比独立可调的pwm波(频率可以相同)

Hardy Hu:

回复 yun mu:

这就是输出PWM波的程序啥

#include  <msp430g2553.h>

void main(void)

{

 WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

 P2DIR |= BIT2+BIT4;                       // P2.2 and P2.4 output

 P2SEL |= BIT2+BIT4;                       // P2.2: TACCR1 output, P2.4: TACCR2 output

 TACCR0 = 128;                             // PWM Period/2

 TACCTL1 = OUTMOD_6;                       // CCR1 toggle/set

 TACCR1 = 32;                              // CCR1 PWM duty cycle

 TACCTL2 = OUTMOD_6;                       // CCR2 toggle/set

 TACCR2 = 64;                              // CCR2 PWM duty cycle

 TACTL = TASSEL_2 + MC_3;                  // SMCLK, up-down mode

 _BIS_SR(LPM0_bits);                       // Enter LPM0

}

赞(0)
未经允许不得转载:TI中文支持网 » TimerA2
分享到: 更多 (0)