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.

[参考译文] TMS320F28069M:同一 PIE 中断组内的中断嵌套

Guru**** 2534130 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1029893/tms320f28069m-interrupt-nesting-within-same-pie-interrupt-group

器件型号:TMS320F28069M
Thread 中讨论的其他器件:controlSUITE

我正在尝试从示例代码 C: \ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVACI_Sensorless_PFC_F2803x 移植 PFC+Boost 控制器软件

使用控制卡 F28069MISO 将其更改为 HVMTR-EVM 套件。

该文档表示文件 PFC-DPL_ISR.asm 中的_DPL_ISR 设置为中断 MotorInvISR()。  

根据 HVACI_Sensorless_PFC.c 中列出的代码、中断设置如下:

中断                  PIE 组             PIE 优先级          CPI INT   CPU 优先级      矢量

ADC_INT1                 1                     1                   1         5.              DPL_ISR

ADC_INT2                 1                    2.                   1         5.              MotorInvISR

由于这两个中断都来自 PIE 组1并馈入 CPU INT1、因此我不清楚优先级逻辑的工作方式。 但是、根据 Tms320F28069-FanmilyRef-spruh18h 和 C28x 中断嵌套应用手册、似乎需要允许 DP_ISR 中断 MotorInvISR  

1.清除 PIEACK.INT1以解除对 PIE 组1和中中断的阻断

2. 设置 IER.INT1  以重新启用 CPU INT1,该 CPU INT1在 MotorInvISR 正在进行中时当前已禁用。

我只能在 MotorInvISR 开始时看到 EINT 、并添加了注释//电机 ISR 可由数字电源 ISR 中断、我认为该 ISR 只会清除 INTM。

当两个中断来自同一 PIE 组时、您能否提供一些有关优先级在这种特定情况下如何工作的指导?

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

    Suresh、

    主题专家今天(8/23)不在办公室,但将会回来。  您可以在8月24日收到业务结束时的回复。

    最棒的

    Matthew

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

    Suresh、

    您引用的示例似乎没有遵循 C28x 中断嵌套文章中介绍的建议做法。 如果中断方案被扩展到其当前配置之外、我不会感到意外的中断行为。 如果嵌套实际上不是以其当前形式工作、我也不会感到惊讶。

    正如您所指出的、该示例仅使用来自一个组的两个中断。 如果嵌套正常工作、这只是因为简化的机制与基于硬件的 PIE 组仲裁逻辑对齐。

    当来自一个组的多个中断同时处于活动状态时、枚举值最低的中断具有优先级:

    在本示例中、DPL_ISR (ADC_INT1/INT1.1)旨在中断 MotorInvISR (ADC_INT2/INT1.2)的执行。 当 EINT 在 MotorInvISR 中启用中断时、硬件 PIE 组仲裁逻辑会在触发 ADC_INT1时自然为 DPL_ISR 的执行设定优先级。

    但是、我看到的一个问题是、组1的 PIEACK 位在 MotorInvISR 结束前似乎不会被清除、因此 ADC_INT1很可能在 MotorInvISR 结束前被挂起:

    这会导致潜在的更多麻烦、因为该序列现在容易受到勘误表中记录的意外中断行为的影响:

    我认为根据这篇文章重新执行嵌套实现是一个好主意。

    Tommy

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

    谢谢 Tom、这很有道理。  

    感谢您的回复。