大家好、是否可以在更快的任务上实现自定义算法、例如执行 EPWM 块的任务?
我在 这里成功实施了解决方案、但我注意到"精度"取决于采样时间。 我将尝试解释:
当检测到斜率变化时、记录计数器值(ePMW 的 TBCTR)、如果斜率在上升、则没有相位偏移和 TBPHS = TBCTR 的变化、并且如果斜率下降、TBPHS = TBPRD - TBCTR (180°漂移)。
CounterShift_R2018a_v000.zip
我注意到、精度取决于我的应用采样时间。 在某些情况下、计数器斜率变化(CH4)对应于斜率变化数字信号(Ch1)、而在其他情况下、它会被移动几个周期。 两个数字在同一个运行期间记录。 可以看出斜率变化信号和实际计数器斜率变化之间存在延迟、并且斜率变化在"速度"时不会发生。


- CH1:斜率变化信号
- CH4:斜坡信号(计数器值)
在其他情况下、段不会被180°移位。 CH3和 CH4信号应同相、其中没有斜率变化信号、当斜率发生变化时、应移位180度。 但图中显示它们不是同相的、即使在两个斜率变化事件之间也不会以相同的角度移位。

- CH1:斜率变化信号
- CH3:来自另一个具有相同设置的 ePMW 的计数器信号
- CH4:斜坡信号(计数器值)
这是否可以在一些更快的 ePWM 任务上实现该算法? 我还可以尝试其他方法吗?
此示例针对800Hz 的开关频率完成。 μs 50 μ s 任务的采样时间、这将为每个开关频率周期(计数器)提供25个点。 如果我转至任何更高的频率、例如8kHz、应用在每个开关频率周期(计数器)内只读取2.5个点、这对于当前采样时间的算法来说太小、无法正常工作。 如果我增加采样任务时间、我会溢出


