器件型号: TMS320F28P659DK-Q1
大家好、TI 专家。
我正在处理的 “single_axis_servo_drive_fcl_QEP_f28p65x"</s>“ 工程。
PWM 频率= 20kHz、每个 ISR 的时间 = 50 μ s。
通常、当 ISR 执行时间小于 50usec(我们的间隔为 7-10us)时、工作正常。
又了解了 ISR 结束 、我明确地清除 EPWM ETFLG.INT、 ADC 中断标志、PIE ACK、也验证了 CPU IFR (IFR = 0x0000)。
现在、在该 ISR 中、我会定期传输 CAN 消息。CAN 传输所需的时间 ~ó n 420µs 、在 CAN 呼叫前后使用 GPIO 切换确认。 在发生这种情况时、 退出 ISR 后、 我预计会执行这一操作 无挂起的中断 和 下一个 ISR 应发生在下一个 PWM 周期边界处 (~450usec)。 然而,我观察到这一点 ISR 几乎立即重新进入(稍后~1–2µs) 而不是在预期的剩余 PWM 时间 (~20 μ s) 之后。
我的目标不是对错过的中断进行排队。 我只想确保在 ISR 退出后不会立即重新进入、并且该控制会在发生下一个 PWM 事件时干净地恢复。
是否有任何支持的机制
1) 清空所有 挂起的 ePWM/CPU/CPU PIE 中断状态、和
2) 保证下一个 ISR 只发生在下一个 PWM 周期边界?
3) 在 C2000 上、在高频 ePWM ISR (20kHz) 内执行长 CAN 发送 (~420µs) 是否在架构上有效?
谢谢、此致
Raghu

