diff --git a/ads1210.cpp b/ads1210.cpp index 071e756..e4674ba 100644 --- a/ads1210.cpp +++ b/ads1210.cpp @@ -74,10 +74,12 @@ void ADS1210::exec() { //Serial << "DOR4x8: " << _HEX(res.in[3]) << " " << _HEX(res.in[2]) << " " << _HEX(res.in[1]) << " " << _HEX(res.in[0]) << endl; //Serial << "DOR1x32: " << _HEX(res.out) << endl; - value = (res.out & V_MASK); + value = res.out >> SKIPPED_BITS; - u = (((float)value) / ((float)V_MAX)) * U_REF; - rRaw = ((((float)V_MAX) / ((float)value)) - 1.0) * R_REF; + uint32_t vMax = V_MAX >> SKIPPED_BITS; + + u = (((float)value) / ((float)vMax)) * U_REF; + rRaw = ((((float)vMax) / ((float)value)) - 1.0) * R_REF; r = (rRaw + m_calOffset) * m_calFactor; } } diff --git a/ads1210.h b/ads1210.h index 861e20d..3e4471e 100644 --- a/ads1210.h +++ b/ads1210.h @@ -75,7 +75,7 @@ private: const uint32_t V_MAX = 0x3FFFFF; const float R_REF = 3000.0; - const uint32_t V_MASK = 0x3FFFF0; + const uint8_t SKIPPED_BITS = 4; uint8_t m_csPin; uint8_t m_drdyPin;