您好,我用的是MSP430G2553,在datasheet中,P1.1有个功能为TA0.0是比较输出OUT0,是不是设置好TACCTL0中的输出模式就对应OUT0输出呢???TACCTL1对应OUT1,TACCTL2对应OUT2???
Ling Zhu2:
//****************************************************************************** //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|- //| || //--|RSTXOUT|- //|| //|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 WDTP1DIR |= 0x0C;// P1.2 and P1.3 outputP1SEL |= 0x0C;// P1.2 and P1.3 TA1/2 optionsCCR0 = 128;// PWM Period/2CCTL1 = OUTMOD_6;// CCR1 toggle/setCCR1 = 32;// CCR1 PWM duty cycleTACTL = TASSEL_2 + MC_3;// SMCLK, up-down mode__bis_SR_register(LPM0_bits);// Enter LPM0 }
灰小子:
建议楼主多看看官网提供的例程。各模块常见的配置方法例程里都有的
feng gao6:
回复 灰小子:
IO口会配置,lz想说的是 TACCTLx这个寄存器是不是控制输出的OUTx,
feng gao6:
回复 Ling Zhu2:
P1.3口有比较输出????还有就是我想P1.0输出PWM,除了配置IO口功能外,是用CCTL0配置输出模式吗?
HG:
回复 feng gao6:
你可以看一下datasheet中对应的PWM章节。配置好模式,周期,占空比等信息,输出的就是如下的波形。
feng gao6:
回复 HG:
您好,我知道输出模式怎么配置。可能是我前面表达的有问题,你回答的并不是我需要的答案。我再把问题说一下吧,希望能让您明白我的提问同时解答一下我的疑惑,谢谢!!!
问题如下:(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了。
feng gao6:
问题是解决了,自己总结一下:主要是参考手册没有仔细的看明白,OUT0只能输出模式1,4,5三种模式,导致了相应的PIN脚不能输出PWM,配置好IO口的功能后,TACCTLx是对应控制OUT0,OUT1,OUT2;明白这个后,就能控制有比较输出的PIN输出需要的PWM。