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 周期生成两个中断。 一个在 TBCTR = CMPA 上、另一个在 TBCTR = CMPB 上。
现在、如果我理解正确、当我进行设置时
EPwm2Regs.ETSEL.bit.INTSELCMP = 0; // 当 定时器递增到 INTSEL 选择多路复用器时启用等于 CMPA 或 CMPB 的事件时基计数器。
EPwm1Regs.ETSEL.bit.INTSEL = 100; // 100: 当定时器递增时启用等于 CMPA 或 CMPC 的事件时基计数器
我会在 CMPA 上获得中断
这意味着、如果我还想在 CMPB 上产生中断、我需要将中断例程内的寄存器更改为:
EPwm1Regs.ETSEL.bit.INTSEL = 110; // 110:使能事件:当定时器递增时、时基计数器等于 CMPB 或 CMPD
并通过下一个中断将其设置回
EPwm1Regs.ETSEL.bit.INTSEL = 100;
我还能通过另一种方式来俯瞰吗?
谢谢、致以最诚挚的问候!
Gustavo
遗憾的是、您查找的功能不存在。 没有寄存器可以设置为使 CMPA 和 CMPB 都产生中断。 您已经实现了第一种解决方案、即在 ISR 中切换中断源、了解 CMPA 是首先发生还是 CMPB。
还有另一个选项、您可以同步未使用的 EPWM、让我们假设 EPWMy 与 ePWMx (原始 EPWM)完全一样运行、并在 CMPB 发生中断。 这样、您就有两个中断。
NIMA Eskandari