使用的计时器为Timer2,用到Timer2的CH0为外部触发输入(低电平有效),Timer2的CH3为触发后延迟和加宽后的脉冲输出(低电平有效)。
CAR寄存器设置为1051,CH3CV设置为4;控制寄存器设置为边沿对齐,向上计数,单脉冲模式,不分频,重复计数值为0。
CH3配置为输出极性低有效,使能比较输出,工作在PWM1模式。
寄存器数值如下所示:
CTL0: 0x0088
CTL1: 0x0060
SMCFG: 0x0055
CHCTL0: 0x0021
CHCTL1: 0x7070
CHCTL2: 0x3303
CAR: 0x041B
CH2CV: 0x000C
CH3CV: 0x0004
在启动事件触发后,大部分情况下,工作都是正常的。但是,有一次在别的与Timer无关的位置增加了一点代码,立即出现下述情况:
CH0的触发信号第一次到来之后,CH3正常延迟输出低电平,但是未在预期的计数周期后恢复到高电平。
CH0的触发信号第二次到来之后,CH3输出恢复到高电平,并在正常延迟后输出低电平,在预定计数周期之后正常恢复到高电平。
同时输出的CH2现象与CH3保持一致。
后续一直重复前述两个触发信号到来时的现象。
后来,将CAR/CH2CV/CH3CV均增加数值1,该现象未再复现。
目前暂时无法确定相关故障现象的原因,推测为CPU的O3CPRE信号在第一次触发后,未能够在计数溢出后正常切换电平。