故障现象

电机偶发一直丢步,通过逻辑分析仪观察,电机丢步时PWM出现了大约6.5ms的断层,
导致电机急停后高速启动导致启动丢步。

故障分析

1、根据PWM断层时间长度估计定时器跑飞,直到下一次溢出后产生更新中断才重新跑回来。
但是电机控制的PWM是开启了重装载的。不应该出现跑飞的情况。

2、几经周折后,发现问题出现在速度控制模块,在加速阶段时,速度控制需要动态控制每一个pwm脉冲的周期,
由于加速阶段,所以PWM脉冲周期越来越小,假设一个场景,当前周期是30us,定时器开启重装载,下一个脉
冲周期长度是28us。但是存在一个同优先级但是早触发或者高优先级的中断,将定时器完成中断阻塞了29us。
此时由于没满30us,所以不会触发重装载,但是在29us处写入重装载值为28us,此时定时器已经计数到29us,
所以知道定时器满溢出前永远不会触发更新中断。同时刚刚好是16位的定时器(65535),所以导致出现6.5ms的断层。

故障重现

故障解决

在没办法解决中断抢占问题的前提下,每次写入下一个周期时先判断当前计数值,如果大于下一个周期写入值就置0

影响分析

当出现中断抢占问题时速度控制会出现大约1个周期的异常。但是由于异常变化不大,所以不影响整体运动。