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.

[参考译文] F29H850TU:C29设备上的禁用/恢复插值建议

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1489889/f29h850tu-recommendation-for-disable-restoreint-on-c29-device

部件号:F29H850TU

工具与软件:

您好、TI 专家:

在 C28器件上、我一直使用以下函数(这些函数是用汇编语言实现的)来禁用和恢复关键段附近的中断。

您能否为 C29器件推荐等效器件?

提前感谢您!

相位差

extern uint16_t DisableInt(void);
extern void RestoreInt(uint16_t Stat0);

_DisableInt:
    PUSH  ST1
    SETC  INTM,DBGM
    MOV   AL, *--SP
    LRETR

_RestoreInt:
    MOV   *SP++, AL
    POP   ST1
    LRETR

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

    嗨、Beat、

    您使用的是 INT 还是 RTINT?

    就启用/禁用中断而言...

    如您所知、我们不支持 C29x 中的汇编指令、但我们提供了两组相关的中断启用/禁用。

    我们拥有用于在 CPU 级别启用和禁用 INT (修改 DSTS.INTE)的 ENINT 和 DISINT。 请注意、RTINT 是不可禁用的。  

    更重要的是、具有用于转发 INT 和 RTINT 的 PIPE 全局启用/禁用。  

    就 恢复中断而言...

    由于 RTINT 有自己的 RTINT 硬件栈、这些中断不仅以更低的延迟得到处理、而且还具有 CPU 寄存器的自动上下文保存和恢复功能。 对于 INT、用户需要在软件中保存/恢复寄存器。  

    TRM 和 CPU 用户指南同样提供了更多信息和示意图。

    此致、

    Aishwarya.

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

    您好、 Aishwarya、

    感谢您的答复。  

    我知道全局转换、但这不是我要找的。

    原始 Disable/Restore 对的行为不同,因为 RestoreInt()只会恢复在调用 DisableInt()时已启用的中断的启用。

    通过调用 DISINT 并接着调用 ENINT、全局启用始终会发生、即使之前已禁用它也是如此。

    因此、我需要一些原子方法来保存  DSTS.Inte 的状态并 同时清除它。

    C29 Clang 编译器是否支持此类原子操作?

    此致、

    相位差

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

    击败、

    感谢您的澄清。 让我进一步探讨这个问题并回头与您联系。

    此致、

    Aishwarya.

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

    击败、

    在 C29中、DISNT 和 ENINT 可在原子块中使用 以处理 INT 的禁用/启用。 。  2.9.内置函数和内在函数—C29 Clang 编译器工具用户指南 介绍了原子条目/保留内在函数(C29特定)以及启用/禁用内在函数(也存在于 C28x 上)。

    然而、由于 C29中存在原子指令、我建议简单地 将原子块放置在代码的任何和所有关键部分周围、并让硬件自动负责阻止 INT/RTINT 中断进入 CPU 流水线。 用户不需要担心代码中的哪个位置允许或不允许启用/禁用 INT/RTINT。 请参阅下面的片段  C29x CPU 参考指南 。  

    此致、

    Aishwarya.

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

    Aishwarya——这是超级有帮助的! 感谢您引导我了解这些新的内在函数。
    此致、

    相位差