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.

[参考译文] TMS320F28379D:TBCTR = CMPA 且 TBCTR = CMPB 上的 ePWM 中断

Guru**** 1949000 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/736596/tms320f28379d-epwm-interrupts-on-tbctr-cmpa-and-also-on-tbctr-cmpb

器件型号:TMS320F28379D

大家好、

根据我的应用、我需要在每个 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、出现错误:
    "EPwm2Regs.ETSEL.bit.INTSELCMP"应为"EPwm1Regs..."
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    遗憾的是、您查找的功能不存在。 没有寄存器可以设置为使 CMPA 和 CMPB 都产生中断。 您已经实现了第一种解决方案、即在 ISR 中切换中断源、了解 CMPA 是首先发生还是 CMPB。

    还有另一个选项、您可以同步未使用的 EPWM、让我们假设 EPWMy 与 ePWMx (原始 EPWM)完全一样运行、并在 CMPB 发生中断。 这样、您就有两个中断。

    NIMA Eskandari

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Nima、
    这是个好主意!
    我将对此进行实验。
    此致、
    Gustavo
x 出现错误。请重试或与管理员联系。