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.

[参考译文] TMS320F28075:当有中断时、数学计算有时是错误的

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1133982/tms320f28075-math-calculation-sometimes-is-wrong-when-there-have-interrupt

器件型号:TMS320F28075

您好、专家、

我的客户遇到以下计算有时错误的问题。  

ITEMP 是局部变量、应始终等于600000、但有时该值是错误的并变为0。  

i32Debug3在出现错误时保存该值、  i32Debug3[2]、  i32Debug3[4]、  i32Debug3[6]在出现错误时记录该值。

代码中还有一些中断函数、例如 PWM ISR 和计时器 ISR。 如果禁用中断或为该代码添加保护、则一切都正常。

客户使用最新的编译器 TI v22.6.0 并且优化级别已关闭、 对此问题有任何建议吗?

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

    您好、专家、

    客户使用全局 变量来执行测试、同样也有同样的问题。  

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

    你好、我很抱歉耽误你的回复。 我正在与专家联系、并将很快通知您。 谢谢、Ashwini。

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

    强、

    1..\n\n 是否可以共享此代码的反汇编视图?

    2.您能否解释一下"或为该代码添加保护"这一表述的含义?

    3.为了完整起见,是否可以启用优化并检查问题是否仍然出现?

    此外、您记录错误值的方式对我来说有点令人困惑。 我不确定为什么您有 i32Debug3[ichx+8]++。 如果 i32Debug3是32b 缓冲器、并且 lTemp 是64b 变量、我认为您应该执行如下操作:

    if (..){

    i32Debug[ichx]=ITEMP;

    ichx+=2;

    如果我在理解上遗漏了一些东西、请告诉我。

    谢谢、

    Sira