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.

[参考译文] MSP430F5438A:无法使用 A0定时器生成 PWM。

Guru**** 666710 points
Other Parts Discussed in Thread: MSP430F5438A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1316725/msp430f5438a-cannot-generate-pwm-using-a0-timers

器件型号:MSP430F5438A

我需要在  MSP430F5438A 上实施一个 PWM 来支持背光器件。  此器件连接至 引脚1.1

我找到了一个示例、该示例提供了设置计时器 A0 0和计时器 A0 1以生成 PWM 的方法。

下面是代码:

P1DIR |= BIT1;//将引脚1.1设置为输出方向。
P1SEL |= BIT1;//选择引脚1.1作为我们的 PWM 输出。
TA0CCR0 = 1000;//将计时器 A0捕获/比较0寄存器中的周期设置为1000us。
TA0CCTL1 = OUTMOD_7;
TA0CCR1 = 500;//电源打开的周期,以微秒为单位。 它是时间的一半、相当于50%的占空比。
TA0CTL = tassel_2 + MC_1;//tassel_2选择 SMCLK 作为时钟源、MC_1告诉它计数到 TA0CCR0中的值。

当执行时、GPIO 上没有输出。

我已验证是否可以 使用以下代码将 A0 0计时器路由到 P1.1。:

P1DIR |= BIT1;//将引脚1.1设置为输出方向。
P1SEL |= BIT1;//选择引脚1.1作为我们的 PWM 输出。
TA0CCR0 = 1*MS_10_tick;//时间大约为10ms
TA0CCTL0 = OUTMOD_7;
TA0CTL = TASSEL_2 + MC_1;// SMCLK、升压模式

相同的实现不能使用 A0运行1:

P1DIR |= BIT1;//将引脚1.1设置为输出方向。
P1SEL |= BIT1;//选择引脚1.1作为我们的 PWM 输出。
TA0CCR1 = 1*MS_10_tick;//时间大约为10ms
TA0CCTL1 = OUTMOD_7;
TA0CTL = TASSEL_2 + MC_1;// SMCLK、升压模式

是否有某种类型的映射会阻止使用 A0 1?

另一种方法是使用2个单独的中断来生成 PWM。  遗憾的是、我可能只能使用 A0。  我可以使用 A0生成中断、.int54:

P1DIR |= BIT1;//将引脚1.1设置为输出方向。
TA0CCTL0 = CCIE;// CCR0中断被启用
TA0CCR0 = 1*MS_10_tick;//时间大约为10ms
TA0CTL = TASSEL_2 + MC_1;// SMCLK、升压模式

但使用以下命令在 int53上看不到它们:

P1DIR |= BIT1;//将引脚1.1设置为输出方向。
TA0CCTL1 = CCIE;// CCR1中断被启用
TA0CCR1 = 1*MS_10_tick;//时间大约为10ms
TA0CTL = TASSEL_2 + MC_1;// SMCLK、升压模式

计时器 A0 1似乎未启用?

我在其他线程中读到、如何配置计时器存在特定于器件的限制。  不确定这是否是问题所在。  任何帮助都会有所帮助。

-Steve

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    P1.1只能生成 TA0.0 [请参考数据表(SLAS655H)表9-43]。 可以在 P1.2上生成 TA0.1 [同一表]、但我不知道这是否对您有所帮助。

    TA0.0无法生成"实时"PWM、因为对于这些 OUTMOD 设置、导通触发器与关断触发器相同。 您可以使用 OUTMOD=4 (Toggle)获得50%的时间(周期的两倍)。 [请参考用户指南(SLAU208Q)第17.2.5.1节]。

    如果您只能使用 P1.1、则可能需要执行软件 PWM。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Steve、您好!  

    请参阅 Bruce 的回答。

    此外、您可以查看我们的 生成大量独立 PWM 应用简报。