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.

[参考译文] TMS320F2800137:启用中断嵌套后 F2800137 SCIC TX 中断异常

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1607023/tms320f2800137-f2800137-scic-tx-interrupt-abnormality-after-enable-interrupt-nest

器件型号: TMS320F2800137

尊敬的团队:

我发现一个非常有趣的事情,当启用 SCIC TX INT 嵌套,即使我关闭 SCIC_TX_INT ,它仍然继续进入 SCIC TX 中断功能。  

d12cf440-b25e-43ce-bf91-974794d23b86.PNG

 

您能帮助我在您的电路板上运行代码并帮助我找到根本案例吗? 谢谢!

工程下载链接:

SCIC_TX issue.zip 

此致、

Zane

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

    尊敬的 Zane:  

    我不建议使用 Interrupt_disable () 函数进行中断嵌套,除了禁用 PIEIER 之外,它还执行了许多操作。 对于嵌套、需要以非常特定的方式遵循该序列。 此处、PIE 可能会进入意外状态。 以下是我看到定义的中断的顺序、这些中断的顺序是 PIE 自动设置优先级的方式。 如果有未使用的元件、请告诉我。

    1. ADCC1
    2. TIMER0
    3. EPWM7
    4. SCIA_RX
    5. SCIA_TX
    6. XINT3

    您希望使用嵌套配置哪个用户定义的优先级顺序? 我可以提供正确的实现方法。  

    此致、

    Delaney

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

    尊敬的 Delaney:

    我发现 sci_ex2_loopback_interrupts 演示无法理解。 我们不将任何数据放入 TX FIFO 中,但它将在程序运行后进入 TXISR 函数。 我阅读了 TRM、发现它可能与 CPU 复位后设置的 TXRDY 有关、对吗? 但即使我 在 sci_ex2_loopback_interrupts TXISR 中注释了 SCI_writeCharArray (SCIA_BASE、sDataA、2);、它也会导致  TXISR 函数溢出。 我不明白为什么会发生这种情况。

    您可以看到我注释了 SCI_writeCharArray、但它始终进入 TXISR 并更新 sDataA。 您可以试用我们的演示代码。

    此致、

    Zane

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

    尊敬的 Zane:

    是否启用了 SCI FIFO? 它看起来像是->如果 启用了 FIFO、则在配置和启用 SCI 模块时应立即触发 TXRDY 中断。 这是因为 TX FIFO 中断条件基于一定数量的元素为空、因此将自动满足该条件、因为 TX FIFO 一开始为空。 如果您清除 ISR 内的中断条件、但不要向 TX FIFO 写入任何数据、由于仍然满足 FIFO 条件、中断应该会再次触发、并且您将获得另一个中断。 我相信这是您看到的吗?

    TXRDY 中断的基本含义是:“您可以 将 x 个字节写入 FIFO 而不会发生溢出 — 因为 x 槽为空“。 如果您不在 ISR 中填充 FIFO、将一次又一次地满足该条件。 应用不使用 TX ISR、除非它们几乎想要 连续数据流。  

    此致、

    Delaney