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.

[参考译文] TMS320F280025:在执行嵌套 ISR 并在 ISR 末尾编译 TBIT 指令时、从 ISR 返回的结果不正确

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1577783/tms320f280025-return-from-isr-is-incorrect-when-doing-nested-isr-and-compilation-of-tbit-instruction-at-end-of-isr

器件型号:TMS320F280025


您好 TI 专家
我有一个以 50kHz 运行的最高优先级 PWM ISR 来控制电源循环、一个以 1kHz 运行的计时器 2 ISR 用于监测和错误处理。该 ISR 允许通过 PWM ISR 嵌套。
两个 ISR 仍会得到处理、但不会返回主超级循环。 我认为计时器 ISR 中编译为 TBIT 干扰的代码“"if(“ (bc_dcdcConvStatus.bit.iinOverCurrent == 1)“会导致错误。 如果我将其从 ISR 末尾删除或移动、它将正确返回主循环。 ISR 2 错误地返回到具有 “SB 0 UNC“指令的地址、而不是主循环

image.pngimage.png

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

    尊敬的 Trinh:

    您使用的编译器版本是哪个?

    此致、

    Delaney

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

    尊敬的 Delaney:
    我使用版本 22.6.2.LTS。
    我  在“DINT"下方“下方添加了一些 NOP 指令“___asm(“ RPT #5 || NOP“)“以清空流水线、这会有所帮助。 但仍然不知道为什么

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

    尊敬的 Trinh:

    您能否查看 C28x 指令集指南的以下部分? 我相信这与您看到的问题相同:

    此致、

    Delaney

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

    尊敬的 Delaney:
    我解决了问题。
    这是我的错、我修改了 ISR 中数组的外部元素、其地址与主循环中的状态机函数指针相同。 感谢您的帮助。