Other Parts Discussed in Thread: TIDM-02002
主题中讨论的其他器件: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两次。
我提出了三项意见来支持这一点:
- 对源自代码的 CLLLC_pwmPeriodRef_pu 变量的更改始终会导致一个 ISR1调用。
- 即、只有观察窗口会产生两个调用。
- 我能够观察到两个 ISR 调用之间 CLLLC_periodSlewed_pu 的值、并且注意到只有16 LSB 在更新(请参阅下面的第一组范围)。
- 通过一个足够小的步骤从观察窗口中更改 CLLLC_pwmPeriodRef_pu、使16 MSB 不会总是改变一个 ISR1调用。 (请参阅下面的第二组范围)
- 例如、CLLLC_pwmPeriodRef_pu = 0.801 <-> CLLLC_pwmPeriodRef_pu = 0.802 (0x3F4D0E56 <-> 0x3F4D4FDF)
下面是几个范围、以帮助说明我的观点。 为了进行调试、在每个 ISR 开始时、我将 GPIO 置为有效、在 ISR 结束时、我将 GPIO 清零。
(黄色–ISR1、绿色–ISR 2、蓝色–ISR3、红色–PWM1A)

