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/MSP430G2553:将 ADC 响应除以100会得到奇怪的结果

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/568292/ccs-msp430g2553-divide-adc-response-by-100-gives-a-strange-results

器件型号:MSP430G2553

工具/软件:Code Composer Studio

大家好、

我有一些奇怪的事件,我无法理解为什么会发生

我有一个外部 ADC (HX711)。

我得到 的数字大约为8561023、这很好

当我将答案除以100 (85610)时、我会得到不稳定的结果(有时数字为8561023、有时为14701165等非常大的数字)

我认为时间是问题的、所以我将延迟设置为2500ms、它返回 的数字大约 为8561023、这是很好的

但我尝试了另一种方法(可能是算术方法)、所以我将除法设置为另一个参数(以 任何方式都未连接到 ADC 响应)、 数字大约 为8561023

例如、

WT_CURR =((long) bitbang_data_in ()) -->为我提供了良好的响应

WT_CURR =((long) bitbang_data_in ())/100;--> 为我提供错误响应

WT_CURR =((long) bitbang_data_in ()))/100;

__DELAY_CYCLES (2500);--> 为我提供了良好的响应

WT_CURR =((long) bitbang_data_in ());

WT_ZERO /= 100; --> 为我提供了良好的响应

bitbang_data_in 是一个从 ADC 获取数据的函数。

如何在不发生延迟的情况下使 wt_CURR 偏离100?

我希望我能说明我的问题

谢谢你

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

    这是一个独特的问题、感谢您提供示例。 位拆裂可能很棘手、并且与时序非常相关。 我怀疑该函数中存在错误、但它不能解释您遇到的问题。 是否可以通过 SPI 或 I2C 与 ADC 通信、而不是使用位拆裂?

    我也想在我自己的板上测试这个。 您是否愿意发布可用于测试此问题的代码的简化版本?

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

    您的实验不一定证明问题是除法。 您是否尝试了以下代码、连续三次获得了良好的结果?

    WT_curr1 =((long) bitbang_data_in ());

    WT_zero1 = wt_curr1/100;

    WT_curr2 =((long) bitbang_data_in ());

    WT_zero2 = wt_curr2/100;

    WT_curr3 =((long) bitbang_data_in ());

    WT_zero3 = wt_curr3/100;

    请注意、我稍微修改了代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要找出根本问题、请先关闭优化。 wt_CURR 是局部变量还是全局变量?