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.

[参考译文] TMS320F28335:TMS320F28335中断

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/593232/tms320f28335-tms320f28335-interrupts

器件型号:TMS320F28335

大家好、

我使用 F28335来触发逆变器的脉冲。 逆变器开关频率为100kHz。 我有一些控制计算大约需要60-70us、而 ewpm 中断每10us 出现一次。 我在前面的帖子中询问了一些有关这方面的问题。 提供了两种解决方案。 我对这些问题有一些疑问。

1)我被告知在 代码的这两部分之间握手。我被告知在计算完成时设置一个标志,然后将 ePWM ISR 打包成一个“if”语句,检查是否设置了标志,否则它只会返回到您的应用程序代码。

但我发现 、一旦 PWM 中断被启用、中断就会被执行、即使它在一个 if 语句内并且给出的条件不是真的。  

2) 2)还被告知使用两个单独的计时器。 一个用于 CPU (60us)、一个用于 ePWM (10us)。 CPU 定时器的优先级高于 ePWM 定时器。 那么,如何将两个计时器的时钟同步在一起? 此外、 当第6个 ePWM 中断与第1个 CPU 中断一同到达时、控制代码会被执行吗?

3) 3)此外、如果我在无限的'for '循环中编写控制代码、则在不使用 ePWM 中断的情况下设置设置 EPwm1Regs.CMPA.half-CMPA=占空比(占空比由控制代码计算)、这是否起作用?

此致



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

    您好!

    首先、如果您创建的线程获得响应、最好在同一线程中继续对话。  这通常是我们喜欢的。

    ===

    虽然可以在 PWM 发生器和控制器更新之间不同步的情况下使其正常工作、但在您的情况下使其同步并不是太困难-因此我建议您这样做。  选项1-3不一定强制执行此同步。  我会考虑的选项:
    a)您可以使用两个 EPWM、而不是使用 PWM 和 CPUTimer。  然后、较快的 PWM 将负责生成 PWM、较慢的 PWM 可以执行控制环路和 PWM 更新。  可以轻松地同时同步两个 EPWM。  另请记住、您可以使用影子加载到 CMPA/CMPB 寄存器。
    b)像通常那样使用一个 PWM 中断。  然后、您可以将控制环路拆分为6-7个逻辑块、并且每个 PWM 周期只运行控制环路的一部分。  在6-7个中断后、您应该写入 PWM 寄存器。


    谢谢、
    Brett