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.

[参考译文] CCS/TMS320F280049C:从观察窗口写入会导致我的变量的两次更新

Guru**** 2999690 points

Other Parts Discussed in Thread: TIDM-02002

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/925337/ccs-tms320f280049c-write-from-watch-window-results-in-two-updates-of-my-variable

器件型号:TMS320F280049C
主题中讨论的其他器件:TIDM-02002

工具/软件:Code Composer Studio

我正在使用为 TIDM-02002参考设计发布的软件、但我注意到、从 CCS 中的观察窗口写入似乎会导致对32位浮点变量进行两次16位写入。 在变量被复制到另一个变量之前发生一个16位写入、而在变量被复制之后发生的第二个16位写入。

这是可行的吗?

有关更多背景信息:

每次为 ISR2提供服务时、CLLLC_pwmPeriodRef_pu 值被复制到 CLLLC_pwmPeriodSlewed_pu 变量中。 每当 CLLLC_pwmPeriodSlewed_pu 的值发生变化时、将触发 ISR1并更新 PWM 频率。 将这些位从观察窗口写入器件存储器的方式似乎会导致 CLLLC_pwmPeriodRef_pu 变量的两次更新。 它显示 CLLLC_pwmPeriodRef_pu 值的16 LSB 被首先写入、然后写入16 MSB。 在这两次写入之间、CLLLC_pwmPeriodRef_pu 值被复制到 CLLLC_pwmPeriodSlewed_pu 变量中、程序将这两次写入视为两次单独的更新、触发 ISR1两次。

 

我提出了三项意见来支持这一点:

  1. 对源自代码的 CLLLC_pwmPeriodRef_pu 变量的更改始终会导致一个 ISR1调用。
    1. 即、只有观察窗口会产生两个调用。
  2. 我能够观察到两个 ISR 调用之间 CLLLC_periodSlewed_pu 的值、并且注意到只有16 LSB 在更新(请参阅下面的第一组范围)。
  3. 通过一个足够小的步骤从观察窗口中更改 CLLLC_pwmPeriodRef_pu、使16 MSB 不会总是改变一个 ISR1调用。 (请参阅下面的第二组范围)
    1. 例如、CLLLC_pwmPeriodRef_pu = 0.801 <-> CLLLC_pwmPeriodRef_pu = 0.802 (0x3F4D0E56 <-> 0x3F4D4FDF)

下面是几个范围、以帮助说明我的观点。 为了进行调试、在每个 ISR 开始时、我将 GPIO 置为有效、在 ISR 结束时、我将 GPIO 清零。

(黄色–ISR1、绿色–ISR 2、蓝色–ISR3、红色–PWM1A)

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

    您好、Clayton、

    32位值的写入可以通过两个单独的16位写入来完成(一个用于高16位、一个用于低16位)。 我们过去也看到过类似的行为。 我需要与工程团队跟进以进行确认。

    谢谢

    Ki

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

    Ki、

    感谢您对此进行深入研究。 请告诉我您找到的内容。

    最棒的

    Clayton