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.

[参考译文] 编译器/TMS320F28035:TMS320F28035的 ePWM 中断问题

Guru**** 2577385 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/696536/compiler-tms320f28035-issue-with-epwm-interrupt-with-tms320f28035

器件型号:TMS320F28035

工具/软件:TI C/C++编译器

大家好

我设计了一个三相逆变器、因此我使用 epwm4、epw5和 epwm6生成三相正弦信号。 我在闪存´s 中设置了一个数据表、通过该表、我可以获得 ePWM 的脉冲。 我执行了一个子例程来处理 EPW´s 中断。 尽管三个 EPW 模块的配置几乎相等、但只有 epwm4和 epwm5功能正常。 epw6不会产生中断。 我发送有关设置模块 ePWM 的屏幕视图。

我希望有人能够帮助我。

非常感谢您的参与。

Sebastián μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否从 EPWM6获得脉冲?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ramesh
    是的、但该脉冲仅对应于初始配置。 epwm6模块n´t 产生中断、我在 CCS 调试器中进行了验证。

    感谢您的关注
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否检查 ETFLG 寄存器并报告位值? 这些指示 ePWM 模块是否尝试生成中断。 如果这里的 INT 标志被置位、这意味着线下的东西(在 ePWM 之外)没有被正确配置。

    我也看不到您的代码将 PieVectTable 设置为 ePWM ISR。 您也可以分享一下吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好
    我发送几个 ePWM 寄存器的屏幕视图(epwm4、epwm5和 epwm6)。 我´s 的是 C2000 Workshop 实验7的框架、其中有一个用于中断子系统服务的文件。

    非常感谢。

    Sebastián μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它看起来像是正在设置标志。 这可能是 PWM 之外的问题。 请将整个初始化代码发布在 main()中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Kaparrent

    我发送 main.c 文件的屏幕。

    非常感谢。

    Sebastián……

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

    为什么要在 EPWM6的 while ()循环中清除 ETFLG? 这可能是导致中断生成问题的原因。

    为什么注释掉 InitPieVect 函数? 您现在在哪里设置 PieVectTable? 请搜索 PieVectTable 并显示与之关联的任何代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Kaparrent

    我进行了一项练习、其中我更改了 ePWM 模块3、4和5、而不是4、5和6 ePWM 模块。 在这种情况下、模块 epwm5 don´t 产生中断。 我想说的是、三个中断服务子标题具有清除中断标志的指令。 但是、我将删除该指令。

    PieVectTable 位于文件 PieVect_5_6_7_8_9_10.c 中、该文件是 C2000 Piccolo 技术讲座中示例 Lab7的一部分。 因此、我发送几个显示表的屏幕视图。

    储罐很多。

    Sebastián……

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

    我在 main 中的 while ()循环中引用了 ETCLR。 这是一个清除中断条件的奇怪地方、可能会在中断条件传播到 PIE 之前将其清除。

    所有的屏幕截图都非常令人困惑。 对于与 PWM 或中断生成相关的任何代码、我建议只发布您的整个文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kparrent

    n´t 用于清零 ETCLR 的指令、INT 位 I 尝试清除 epwm6的中断标志、但执行 μ s 函数。 n´t 我正在使用 empw3、epwm4和 epwm5、因此该指令在我的实际程序中没有 efect。 不过,我会把这点说得像一个喜剧。


    屏幕视图对应于 PieVectTable 文件、我按顺序发送了此类视图、如果您看到行号、则为复杂文件、并由于论坛的另一位合作伙伴向我询问而发送这些视图。

    非常感谢。

    Sebastián μ A

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

    Sebastián μ A、

    请在运行时使用内存浏览器读取以下地址。 如果这些地址的值与相应的 ISR 地址不同、则需要更正它们。

     0x0000 0D60 EPWM1_INT (EPWM1)  
     0x0000 0D62 EPWM2_INT (EPWM2)  
     0x0000 0D64 EPWM3_INT (EPWM3)  
     0x0000 0D66 EPWM4_INT (EPWM4)  
     0x0000 0D68 EPWM5_INT (EPWM5)  
     0x0000 0D6A EPWM6_INT (EPWM6)
     0x0000 0D6C EPWM7_INT (EPWM7)

    如果正确:请阅读下图所示开关(INTM、IER、IFR、PIEIER、PIEIFR)的配置、 如果它们未被启用、您的中断信号将不会到达 CPU。

    此致、
    Cody