Fixed the handling of the sign of values from the ADC #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Although the data sheet doesn't specify this clearly, the value from the ADC is actually a signed 24-bit integer value. However, the existing implementation wasn't handling the sign of this value correctly leading to overflow if the weight on the load cell ended up being less than the value during power up. Unfortunately, fixing this issue is not as simple as casting the
uint32_t
used to store the value from the ADC into aint32_t
. My change fixes the code with the proper bit manipulations to handle the sign of the value from the ADC correctly throughout the library.