您好,e2e:
MSP430F5324中TimerB的计时器输出存在问题。
如果更改频率,第一个脉冲不是我们预期的。 该值大于预期值,且脉冲比预期值长;
以下是一个示例。
功能要求:
输出PWM定义。 (更改步长为25毫秒。)
计时器和模式选择:
CCR0正在对频率工作。
CCR2正在运行占空比。
代码:
初始化函数:
void enable_timerB_tone(){
TB0CCR0 = 0;
TB0CCR2 = 0;
TB0CCTL2 = CLLD_1 | OUTMOD_6;
TB0CTL = TBSSEL__SMCLK + MC__UP + ID__2 + TBCLR;
}
每25毫秒更改参数以更改频率:
void set_parameters_timerB (uint16_t period,uint16_t pulse_width_counter){
TB0CCR0 =周期;
TB0CCTL0 = CLLD_3;
TB0CCR2 =脉冲宽度计数器;
}
结果:
使用OSC检查输出:
紫色线标记参数更改时间(GPIO切换用于调试,它表示MCU中的值更改)。
绿线是CCR2的输出。
紫色箭头是调用“set_parameters_timerB()”函数的时间(也已完成)。
绿色箭头表示问题脉冲。
(改变脉冲之前为90US,问题之后为100us。 两侧都是正确的参数。)
(从问题脉冲的上升沿到脉冲的下一上升沿,周期也大于预期值。)
您对此问题有什么建议吗?
提前感谢。
Leon