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.

[参考译文] MSP430FR2155:TimerB 生成 PWM、并发生异常

Guru**** 2513185 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/951058/msp430fr2155-timerb-generates-pwm-and-an-exception-occurs

器件型号:MSP430FR2155

尊敬的团队:

我的一位客户有以下技术问题、请 帮助回答:

Timer B 产生 PWM。 当占空比增大时、PWM 正常;然而、当占空比减小时、会出现一个全周期高电平。 例如、
如果 TB1CCR1 = 100、更改为 TB1CCR1 = 200、占空比从25%变为50%、这是正常现象;但是、如果 TB1CCR1 = 200、更改为 TB1CCR1 = 100、占空比首先从50%更改为100%、然后更改为25%。

void PWM_init (void)
{
PM5CTL0 &=~LOCKLPM5;

TB1CCR0 = 400-1;// PWM 周期
TB1CCTL1 = OUTMOD_7;//| CCIE;// CCR1复位/置位
TB1CTL = TBSSEL_SMCLK | MC__UP | TBCLR;//| TBIE;// SMCLK、UP 模式、清除 TBR

_delay_cycles (200);
TB3CCR0 = 400-1;// PWM 周期
TB3CCTL5 = OUTMOD_7;//| CCIE;// CCR1复位/置位
TB3CTL = TBSSEL_SMCLK | MC__UP | TBCLR;// SMCLK、向上计数模式、清除 TB

} 

此致

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

    在定时器运行时(始终)更新占空比很棘手、因为根据 TB3R/TB1R 的值、它可能会"丢失"、并且看不到旧的或新的 CCR1值。 Timer B 具有 CLLD 机制来避免这种情况。 [参考用户指南(SLAU445I)表14-8和第14.2.4.2.1节]

    CLLD=1通常是一个良好的设置。 所以

        TB3CCTL5 = OUTMOD_7;// | CCIE; // CCR1 reset/set

     becomes

        TB3CCTL5 = CLLD_1 | OUTMOD_7;// | CCIE; // CCR1 reset/set