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.

[参考译文] CCS/TMS320F28035:关于 Piccolo 2803x 中断配置问题。 谢谢~

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/674541/ccs-tms320f28035-about-piccolo-2803x-interrupt-configuration-doubt-thanks

器件型号:TMS320F28035

工具/软件:Code Composer Studio

我想更改由不同情况(对于循环)确定的 EPWM 中断条目、如下所示:
  1. 如果(一种情况) ,则 ePWM --> ISR1,然后禁用 ISR2
  2. 如果(B 情况) 则为 ePWM --> ISR2,然后禁用 ISR1
所以,我的问题是,当把 ePWM 的条目从 ISR1更改为 ISR2时,我是否必须在初始化 InitPieCtrl()、InitPieVectTable()时重新配置中断? 或者我是否可以将 ePWM 的 PieVectTable 从 ISR0更改为 ISR1?
谢谢!

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

    首先、要使用这些中断、需要初始化和启用 PIE。 这由 InitPieCtrl()和 InitPieVecTable()执行。 接下来、每个外设功能/中断在 PIE 表中都有一个唯一的位置。 矢量位置是固定的。 因此、如果您使用一个通用外设(在同一 ePWM 情况下)、则应在该 ISR 中完成决策逻辑。

    要了解有关 PIE 中断的更多信息、请参阅以下技术讲座中的模块4和实验5:

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

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

    尊敬的 Ken:

      我很困惑决策逻辑是什么?

      在初始化和启用基本 PIE 之后。 在主循环中 、我能否只更改唯一位置的入口地址(ISR1至 ISR2)?  

        1.已初始化并启用

       2.将 ISR1点地址配置为 EPWM0中断的唯一位置。

       3.启用 EPWM0中断

       4.主循环

       5、禁用 EPWM0接口、将  ISR2点地址配置到 EPWM0中断的唯一位置、然后使能 EPWM0中断。

    上述操作是否正确?

    谢谢。

        

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

    在软件方面、我的意思是决策逻辑。 例如、在后面的实验课程中、我会根据 EPWM 比较寄存器的值与最大/最小限制的比较来递增或递减 ADC ISR 中的 PWM 波形(即值>=或<=)。 请记住、PIE 表中的矢量是固定的。 也就是说、ePWMx_INT (对于 F28035、x 为1至7)只有一个到单个 ISR 的唯一矢量。

    如果我理解正确、您似乎希望让两个单独的 ISR 修改一个 ePWM。 如果是、则可以这样做。 考虑 ePWM 模块在 main()中初始化的情况,其比较值为 X。然后,您有两个 ISR,用于将比较值更改为 Y 或 Z。在本例中,使用 XINT1和 XINT2, 然后、在 XINT1_ISR 中、比较值更改为 Y、在 XINT2_ISR 中、比较值更改为 Z。这将导致当触发 XINT1时、ePWM 波形使用比较值 Y 进行修改、 同样、当 XINT2被触发时、ePWM 波形被修改为比较值 Z

    查看您的初始帖子-"我想更改 ePWM 中断条目"、每个 ePWM 中断将只有一个单个 ISR 条目。 此"条目"由 PIE 中的矢量确定。 如果您建议在运行时将矢量更改为指向不同的 ISR、则可能会执行此操作、但这不是典型操作或建议操作。 通常、一旦 ENPIE 设置为1、它不会被禁用。 在运行时禁用 PIE 块可能会导致中断丢失。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Ken:
    正如您所建议的那样、由于缺少交叉点、不建议在运行时将矢量更改为指向不同的 ISR。 除了这种影响外、还会发生什么结果?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    明生

    如果您错过了中断、我不确定您的系统还会发生什么情况、因为您更改了表中的矢量。 这就是为什么我建议您在 ISR 内执行 IF/Then 测试的原因。 例如、当 ePWM ISR 被触发时、您将首先运行测试、然后在该 ISR 内相应地修改 ePWM。 这样、您就可以在 ISR 上使用一个入口点。 ISR 中发生的情况由 If-Then 测试确定。

    有关这方面的示例、请参阅以下讲座(请注意、这适用于 F28x7x、但要点相同):

    processors.wiki.ti.com/.../C2000_Multi-Day_Workshop

    在实验7中、打开 DefaultIsr.c 文件。 对于 ADC PIE 1.1、您将进行各种 If 测试。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken