问题:
pwm输出,偶发的少输出一次高电平。问题出现频率一般为10分钟-1小时一次。问题不固定时间出现。
配置:
MSP4305435A芯片使用TA1.1输出PWM。
采用定时器输出模式的UP模式,输出3:set/reset,即CCR0为周期、CCR1为低电平时长。指定P8.6复用为PWM输出。
开启了ccr0计数中断。
pwm周期为10ms。低电平时长每隔1s在2.64ms和4.57ms之间切换(在CCR0中断中切换)。
图片说明:
正常波形的图片,包含若干波形,周期为10ms,低电平时常从4.57ms变换到2.64ms。
异常波形的图片,“波1”和“波3”正常。“波2”周期为20ms,其实应该是有个波少输出了一次高电平,导致低电平很长。
以下是CCR0中断,用于更新ccr1值,也就是占空比。
void TIMER_A1_0_ISR (void) { //每10ms进入 cnt++; if (cnt == 99) { cnt = 0; if (pwm == 1081) // 低电平2.64ms { pwm = 1873; Timer_A_setCompareValue(TIMER_A1_BASE, TIMER_A_CAPTURECOMPARE_REGISTER_1, 1081); } else // 低电平4.57ms { pwm = 1081; Timer_A_setCompareValue(TIMER_A1_BASE, TIMER_A_CAPTURECOMPARE_REGISTER_1, 1873); } } }