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.

PWM输出问题

Other Parts Discussed in Thread: MSP430G2553

您好,我用的是MSP430G2553,在datasheet中,P1.1有个功能为TA0.0是比较输出OUT0,是不是设置好TACCTL0中的输出模式就对应OUT0输出呢???TACCTL1对应OUT1,TACCTL2对应OUT2???

  • //******************************************************************************
    //  MSP430G2xx3 Demo - Timer_A, PWM TA1, Up/Down Mode, DCO SMCLK
    //
    //  Description: This program generates one PWM output on P1.2 using
    //  Timer_A configured for up/down mode. The value in CCR0, 128, defines the PWM
    //  period/2 and the value in CCR1 the PWM duty cycles.
    //  A 75% duty cycle is on P1.2.
    //  SMCLK = MCLK = TACLK = default DCO
    //
    //               MSP430G2xx3
    //            -----------------
    //        /|\|              XIN|-
    //         | |                 |
    //         --|RST          XOUT|-
    //           |                 |
    //           |         P1.2/TA1|--> CCR1 - 75% PWM
    //
    //  D. Dang
    //  Texas Instruments, Inc
    //  December 2010
    //   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
    //******************************************************************************
    
    #include <msp430.h>
    
    int main(void)
    {
      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
      P1DIR |= 0x0C;                            // P1.2 and P1.3 output
      P1SEL |= 0x0C;                            // P1.2 and P1.3 TA1/2 options
      CCR0 = 128;                               // PWM Period/2
      CCTL1 = OUTMOD_6;                         // CCR1 toggle/set
      CCR1 = 32;                                // CCR1 PWM duty cycle
      TACTL = TASSEL_2 + MC_3;                  // SMCLK, up-down mode
    
      __bis_SR_register(LPM0_bits);             // Enter LPM0
    }
    
  • 建议楼主多看看官网提供的例程。各模块常见的配置方法例程里都有的

  • IO口会配置,lz想说的是 TACCTLx这个寄存器是不是控制输出的OUTx,

  • P1.3口有比较输出????还有就是我想P1.0输出PWM,除了配置IO口功能外,是用CCTL0配置输出模式吗?

  • 你可以看一下datasheet中对应的PWM章节。配置好模式,周期,占空比等信息,输出的就是如下的波形。

  • 您好,我知道输出模式怎么配置。可能是我前面表达的有问题,你回答的并不是我需要的答案。我再把问题说一下吧,希望能让您明白我的提问同时解答一下我的疑惑,谢谢!!!

    问题如下:(1)我用的是20PIN,msp430g2553,如下图所示红色标注出来的是Time0_A的比较出端吗?也就是PWM的输出端?

               (2)如果问题1是错的,此问题忽略。其中有两个TA0.0,三个TA0.1,是不是说Time0_A最多可以输出两路不同的PWM,其中一路有3个相同的PWM,另一路是2个相同的PWM???

                (3)如果上面2个问题都错了,此问题忽略。

                          OUT0表示TA0.0,OUT1表示TA0.1,怎么配置寄存器选择是OUT0输出还是OUT1输出?????

                        下面是我配置P1.1比较输出的过程:

                         首先通过Datasheet把P1.1配置成TA0.0功能:P1DIR |= BIT1;P1SEL |= BIT1;

                    

                        然后配置Time0_A的寄存器

                           TACTL 选择SMCLK+上数模式;TACCR0 = 1000;//输出周期 ;TACCR1=500;//占空比50%

                           TACCTL0 选择输出模式7;  比较控制寄存器TACCTLx就是控制OUT0,还是OUT1或则OUT2输出吗?????这是我想问的核心问题,

                    最后就是开总中断,写一个空的Time0_A中断函数,就可以在P1.1输出PWM了。

  • 具体的说,哪个做PWM的输出是和CCRx有关的。比如TA0 CCR0就对应TA0.0。不用纠结具体有多少个脚能输出对应的波形,只是从不同的PIN输出而已,有时候两个不同的PIN输出的东西是一样的。

    输出是由TAxCCTLx控制的,比如

    TA0CCTL1=OUTMOD_3; //T3,T4

    就是从TA0.1输出,后面的OUTMOD就是输出模式。

    TA0CCTL2=OUTMOD_6

    就是从TA0.2输出,明白了?

  • 问题是解决了,自己总结一下:主要是参考手册没有仔细的看明白,OUT0只能输出模式1,4,5三种模式,导致了相应的PIN脚不能输出PWM,配置好IO口的功能后,TACCTLx是对应控制OUT0,OUT1,OUT2;明白这个后,就能控制有比较输出的PIN输出需要的PWM。