This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我对中断生成有疑问。 我正在配置 ePWM 的数字比较子模块。 这里、TRIP 11被配置为 DCAEVT1来导致 ePWM6上的跳闸。
我的问题是、这个 DCAEVT1生成哪个中断?
我查看了 TZENT 寄存器、它说使用一次性(OST)会导致 ePWMx_TZINT PIE 中断。 同样、跳闸事件 DCAEVT1上发生的中断也是如此。
我编写了我的配置以及用户手册中有关 TZENT 的少量信息。
/********* 来自 TZENT 寄存器:******* /
BIT3 DCAEVT1 R/W 0h
数字比较输出 A 事件1中断使能
0:禁用
1:启用
复位类型:SYSRSn
Bit2 OST R/W 0h
触发区单次触发中断使能
0:禁用单次触发中断生成
1:启用中断生成
单次触发事件将导致 ePWMx_TZINT PIE 中断。
复位类型:SYSRSn
/********* 我的配置*** /
//将 ePWM 输出 A & B 配置为跳闸时变为低电平。 EPwm6Regs.TZCTL.bit.TZA= TZ_FORCE_LO; EPwm6Regs.TZCTL.bit.TSB= TZ_FORCE_LO; //将 DCA 配置为 TRIP11 EPwm6Regs.TZDCSEL.bit.DCAEVT1= TZ_DCBH_HI; EPwm6Regs.DCTRIPSEL.bit.DCAHCOMPSEL= 0xA;// Trip11 EPwm6Regs.DCAHTRIPSEL.bit.TRIPINPUT11= 0;//单次触发输入;非 ORed //将 DCA 配置为 DCAEVT1 EPwm6Regs.TZSEL.bit.DCAEVT1= 1;//启用 //将 DCA 路径配置为未过滤和异步 EPwm6Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1; EPwm6Regs.DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_异 步; //清除跳闸标志 EPwm6Regs.TZCLR.bit.DCAEVT1= 1;//写入1清除跳闸标志。 EPwm6Regs.TZCLR.bit.INT= 1; //启用 DCB 中断 EPwm6Regs.TZEINT.BIT.DCAEVT1 = 1;
感谢你的帮助。
谢谢
Sagar
我看到当 trip11变为高电平时、EPWM6输出 A 和 B 将变为低电平。 但我看不到相应的 EPWM_TZ 中断的控制权。
我已经在 PIE 矢量表中启用了适当的 TZ 中断、并进行了如下回调:
PieCtrlRegs.PIEIER2.bit.INTx6 = 1;//* EPWM6_TZ *////*这是初始块*/ PieVectTable.EPWM6_TZ_INT =&ePWM_INV_2D_tzint_ISR;//这是 ISR 回调块*/
我出什么问题了吗?
您好 Sagar、
您能否检查从 ePWM 到 CPU 的路径上的各种中断寄存器的状态? 在 ePWM 中、请查看 TZFLG。 然后、还请检查 PIEIFR 和 IFR。
您还将需要"IER |= M_INT2;"等命令来启用 PIE 中的第2行。
此致、
Kris
萨加尔
感谢您提供信息。 这确认 ePWM 被正确设置以生成中断。 您能否单步执行 PIE 配置代码并验证寄存器是否确实正在更新? 我想知道是否缺少 EALLOW 或类似器件。
此致、
Kris