我正在尝试创建一个由 ePWM 中断调用的 CLA-ISR、CLA 似乎无法写入 ETCLR、因此 CLA-ISR 只被调用一次。 如果我在调试器中手动设置 ETCLR、CLA-ISR 将被调用一次。 然后、我向 CPU1添加了一些代码、以同时设置 ETCLR.BIT.INT = 1、并且 CLA-ISR 会被重复调用。
我在 TRM 中唯一能找到的就是 CpuSysRegs.SECMSEL.bit.PF1SEL 必须为0、CLA 才能访问外设帧1。 我还有 CPUSEL0 - 0,所以 EPWM8属于 CPU1 --是否还有任何其他必须置位的东西,才能使 CLA1对 EPWM8进行写访问?
此外、在调试器中、我注意到了一些奇怪的东西。 EPWM8.ETCLR 寄存器(来自 TRM)位于地址0x47AA、因此我在 CLA 中添加了一个_mdebugstop、并查看了反汇编。 CLA1-ISR 源为:
PieCtrlRegs.PIEACX.ALL = PIEACK_group11;
EPwm8Regs.ETCLR.bit.INT = ePWM_CLEAR_INT_FLAG;
MEALLOW();
Cla1Regs.MICLR.bit.int2 = 1;
MEDIS();
但是、反汇编显示:
MMOV32指令应该不应该有地址0x47AA (来自 TRM 的 EPWM8.ETCLR 地址)而不是0x484C (位于 EPWM9中的某个位置)? 我在 CLA 和 CPU1之间使用通用头文件--这是我的 CCS 设置的问题吗?
谢谢、
Jim