Other Parts Discussed in Thread: TMS320F280039C
器件型号: TMS320F280039C
您好、
我正在开发 TMS320F280039C。 我观察到一种与中断优先级相关的行为、我无法理解。 我使用来自同一 PIE 组(第 3 组)的两个 ePWM 中断:
- ePWM5→10µs 周期 ISR
- ePWM6→20µs 周期 ISR
设置:
- ePWM5 ISR 执行时间≈1.1µs
- ePWM6 ISR 执行时间≈11µs
预期行为:
如果在 20µs ISR (ePWM6) 正在执行时发生 10µs 中断 (ePWM5)、则应抢占 ePWM6 ISR 并立即执行。 为什么 ePWM5 即使应该具有更高的优先级也不会抢占 ePWM6 ISR?
代码片段:
__ interrupt void epwm5_timer_isr (void)
{
GpioDataRegs.GPASSET.bit.GPIO8 = 1;
for (j=0;j<10;j++);
GpioDataRegs.GPACLEar.bit.GPIO8 = 1;
//清除 EPWM5 中断标志
EPwm5Regs.ETCLR.bit.INT = 1;
//确认 PIE 组 3
PieCtrlRegs.PIEACK.ALL = PIEACK_GROUP3;
}
__ interrupt void epwm6_timer_isr (void)
{
GpioDataRegs.GPASSET.bit.GPIO23 = 1;
for (l=0;l<100;l++);
GpioDataRegs.GPACLEar.bit.GPIO23 = 1;
//清除 EPWM6 中断标志
EPwm6Regs.ETCLR.bit.INT = 1;
//确认 PIE 组 3
PieCtrlRegs.PIEACK.ALL = PIEACK_GROUP3;
}