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.

如何在TA0.0发送PWM信号



用的是67791芯片,看了一遍输出PWM信号,都是将CCR0作为周期设定使用,但是看到引脚是有TA0.0输出功能。

问一下是否能够使用TA0.0输出PWM信号?还是这个TA0.0本来就是作其他用途,不是用于PWM的?

谢谢!

  • TA0.0可以输出pwm信号的,不过要使用定时器A0的时候才可以

    你看的例程使用的哪个定时器?

  • 我没有找到用TA0.0输出PWM信号的例程。
    目前我看到用TA0的例子都是用CCR0定义周期,用其他比较器设定占空比,然后输出的。
    比如:
    // Setup P2.1 TA0.1, P2.2 TA0.2
    P2DIR |= BIT1; // P2.1/TA0.1 output
    P2SEL0 |= BIT1; // Output TA1
    P2DIR |= BIT2; // P2.2/TA0.2 output
    P2SEL0 |= BIT2; // Output TA2

    // Setup TA0
    TA0CCR0 = 512 - 1; // PWM Period
    TA0CCTL1 = OUTMOD_7; // CCR1 reset/set
    TA0CCR1 = 384; // CCR1 PWM duty cycle
    TA0CCTL2 = OUTMOD_7; // CCR2 reset/set
    TA0CCR2 = 128; // CCR2 PWM duty cycle
    TA0CTL = TASSEL_2 | MC_1 | TACLR; // SMCLK, up mode, clear TAR
  • 我现在想到的用CCR0做PWM的方法是TA使用连续计数模式,然后利用计数到0xFFFF的溢出中断,和CCR0中断来做PWM,但这样周期只能靠改变选择的时钟频率来调整了,比较麻烦,而且好像也用不到TA0.0这个输出口功能。
  • 您可以参考下TI例程内的

    MSP430F677x_TA1_16.c Timer1_A1, PWM TA1.1, Up Mode, DCO SMCLK
    MSP430F677x_TA1_17.c Timer1_A1, PWM TA1.1, Up Mode, 32kHz ACLK
    MSP430F677x_TA1_19.c Timer1_A1, PWM TA1.1, Up/Down Mode, DCO SMCLK
    MSP430F677x_TA1_20.c Timer1_A1, PWM TA1.1, Up/Down Mode, 32kHz ACLK
  • 你提供的例程是TA1.1输出PWM,CCR0设周期,其他比较器设占空比,然后输出PWM,这个没问题。
    我现在问题是TA0.0有何种方法输出PWM?我看下来是实现不了的,想确认一下是不是这样。
  • TA0.0可以输出,如果timer工作在连续计数模式,周期是默认的,不需要CCR0设置周期。
  • 如果使用TA0.0输出模式(也就是CCR0)的话,我看了手册里的output modes说明,那只有001置位、100取反,101复位可以使用,虽然使用连续计数模式可以固定周期,但占空比没办法设,最多是使用取反达到双周期的50%占空比