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.

[参考译文] TMS320F28388D:未设置寄存器 INTM

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F28388D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1272136/tms320f28388d-register-intm-is-not-being-set

器件型号:TMS320F28388D

大家好!

我´m Lauterbach 调试 TMS320F28388D、我的´m 遇到 双色 那就是它绝不会将 INTM 设置为1。 反过来、 电子情报 指令 正确地将 INTM 设置为0。

我已检查生成的汇编器代码、并且 DINT 已正确"转换"为" SETC INTM "指令。   

为什么需要以任何原因或条件 双色 可能无法将 INTM 设置为1?

提前感谢您。

伊万

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

    伊凡、您好!

    该指令本身应该不会有任何问题、但我可以立即想到的一种可能性是、如果另一个函数将 INTM 设置为1 (在可能不会注意到发生的中断期间)。 中断在进入 ISR 期间将 INTM 设定为1。 查看 INTM 时是否可能触发了另一个中断?

    此致、

    文斯

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

    您好、Vince。

    感谢您的答复。  

    实际上、在 初始化阶段也可以很早就观察到这种行为、在初始化阶段没有配置/启用中断。

    以下是代码的摘录:

     
     DINT;                                         /* disable interrupts globally              */
     !!!----> DINT here never sets INTM to 1 (visible in Lauterbach Registers window)
     !!!----> Although I manipulate INTM to 0, a re-execution 
     !!!----> of DINT, through a changing of the program counter (set PC in Lauterbach),
     !!!----> has not effect, that is INTM remains set to 0. 
     
     IER = 0x0;                                    /* disable all interrupts groups            */
     IFR = 0x0;                                    /* clear all CPU interrupt flags            */
     EINT;                                         /* enable all interrupts                    */
     !!!----> Conversely in this case, EINTM sets always INTM to 0

    问题是:谁/什么可能阻止 INTM 设置为1?  

    一般而言:我看到它设置为1的唯一时刻(正如预期的那样)是我输入一个中断处理程序时、该处理程序正如预期的那样。 对于手册、当一个中断被触发时、CPU 的确将 INTM 设置为1 (也就是说:一旦进入一个中断处理程序、中断被全局禁用)。

    任何将 INTM 设置为1 (SETC INTM 指令)的软件尝试都不起作用。  

    欢迎提出任何建议。 谢谢你。

    此致、

    伊万

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

    伊凡、您好!

    我想知道这实际上是"寄存器视图"的问题、而不是 INTM 在 DINT 后是否仍然保持0。

    您能否尝试在"DINT;"命令之后立即将 INTM 字段的 HWREGH 读取结果添加到变量中? 基本上、我想看看 INTM 的变量存储是否会显示它实际上已更新。

    此致、

    文斯

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

    您好、Vince。  

    因此、INTM  视图肯定不会 在 Lauterbach 中更新。 我´ve 过 CCS Code Studio、INTM 已正确更新。

    感谢您的支持。

    此致、

    伊万