This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TimerA2

Other Parts Discussed in Thread: MSP430G2553

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

  • 在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

    }

     

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

  • 您好!

    两路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 */

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

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

  • 这就是输出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

    }