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.

[参考译文] TMS570LS3137:即使启用了寄存器、中断也会停止工作

Guru**** 2557640 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LS3137

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1279850/tms570ls3137-interrupt-stops-working-even-with-registers-enabled

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

我正在开发一个依赖中断的 TMS570LS3137固件。 直到最近、一切都在运行、但是不知何故、中断可靠地停止工作。 除了 HalCoGen 生成的代码、调试代码非常简单:


int main(void)
{
    gioInit();                  /* IO pins init */

    _enable_IRQ();

    gioEnableNotification(gioPORTB,2);

    while(true);
    
    return;
}

uint32 testCounter = 0;
/* USER CODE END */
#pragma WEAK(gioNotification)
void gioNotification(gioPORT_t *port, uint32 bit)
{

 testCounter++;
 
}

HCG 文件将 IRQ 通道9 (GIO Int A)置1、各个引脚的 GIO 设置为高优先级、且通知句柄的功能在 VIM RAN 选项卡、插槽9上进行设置(这是来自 HCG 的 gioHighLevelInterrupt、只需调用上面的 gioNotification)。 当然、计数器不会向上计数、即使它处理另一个代码、从头开始、仅针对 GIO。 在启动后的很短时间内、它将会递增。

CPSR 上的 I 寄存器为0、对应引脚的 IntDet 和 IntENASet 为1、IntFlg 保持为0、即使我可以看到 DIN 寄存器中的值发生变化、并且从未调用通知、有时也会调用几次以永远不会再次调用。

对于要调查或如何解决此问题的任何提示、我们都非常欢迎您!

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

    我无法上传 HalCoGen 文件、所以我 通过这个链接提供了这些文件

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

    您好、Gustavo、

    我真的对您的配置感到困惑、因为  

    在 VIM 模块中、您将启用 GIO 中断 A

    但 您再次调用了针对 GIO_B2的启用通知、

    gioEnableNotification (gioPORTB、2);

    如果你想使用 GIO_B2、那么你应该在 VIM 模块中启用 GIO 中断 B (中断23)吗?

    请更正并重新测试。

    --
    谢谢。此致、
    Jagadish。

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

    嗯、这与文档中所说的相违背:GIO 中断 A 是端口 A 和端口 B 的高级中断(或 A 级)、而 GIO 中断 B 是低级中断(或 B 级)、同样对于两个端口也是如此。 是的、我同意这是一个令人困惑的命名选择、但以下是 TRM 的相关部分。

    请注意、包括端口 B 在内的每个端口的寄存器都可以设置为高级或低级、并且在我上面发送的屏幕截图中、它们被设置为高级(即端口 B 的引脚2和4)。

    总之、我已经尝试过(在此应用中使用哪个中断无关紧要)、使用低级中断处理程序的相应设置、行为不变。

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

    有人对可能发生的事情有任何建议吗? 需要更多代码?

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

    您好、Gustavo、

    我能获得完整的项目吗?

    我将快速调试并提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    是的、我可以通过任何方式私下发送吗?

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

    是的、您可以执行私人消息。 我向您发送了朋友请求,只需接受朋友请求,一旦您接受了朋友请求,您就可以向我发送私人消息。

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

    你好、 ! 我想我可能已经找到了这个问题的根源。 由于我有复杂的跟进问题、我决定发布新帖子、您可能有兴趣:

    e2e.ti.com/.../tms570ls3137-code-gio-emulation-mode-and-debugger-interaction

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

    您好、Gustavo、

    好的、我将浏览您的帖子并提供更新内容、我将关闭此主题。

    --

    谢谢。此致、
    Jagadish。