diff options
-rw-r--r-- | sw/ltc2400.cpp | 24 | ||||
-rw-r--r-- | sw/ltc2400.h | 4 | ||||
-rw-r--r-- | sw/main.cpp | 6 |
3 files changed, 19 insertions, 15 deletions
diff --git a/sw/ltc2400.cpp b/sw/ltc2400.cpp index 23287bc..a221029 100644 --- a/sw/ltc2400.cpp +++ b/sw/ltc2400.cpp @@ -110,17 +110,21 @@ void ltc2400_init() sei(); } -int ltc2400_conversion_ready() +bool ltc2400_conversion_ready() { + return true; +#warning "Clarify usage of SS" + cs_low(); // EOC == 0 means conversion is complete and device in sleep mode const int eoc = (PORTB & PINB_SPI_MISO) ? 0 : 1; + cs_high(); return eoc; } -float ltc2400_get_conversion_result(bool& dmy_fault, bool& exr_fault, uint32_t& adc_value) +float ltc2400_get_conversion_result(bool& dmy_fault, bool& exr_fault, uint32_t& raw_value) { cs_low(); @@ -135,17 +139,17 @@ float ltc2400_get_conversion_result(bool& dmy_fault, bool& exr_fault, uint32_t& cs_high(); - const uint32_t result = - ((uint32_t)data[3] << 24) | - ((uint32_t)data[2] << 16) | - ((uint32_t)data[1] << 8) | - ((uint32_t)data[0]); + raw_value = + ((uint32_t)data[0] << 24) | + ((uint32_t)data[1] << 16) | + ((uint32_t)data[2] << 8) | + ((uint32_t)data[3]); - dmy_fault = result & _BV(30); - exr_fault = not (result & _BV(28)); + dmy_fault = raw_value & (1uL << 30); + exr_fault = raw_value & (1uL << 28); // Mask 4 MSB status bits, and shift out 4 sub-LSB bits - adc_value = (result >> 4) & 0x00FFFFFF; + const uint32_t adc_value = (raw_value >> 4) & 0x00FFFFFF; // Convert ADC value to voltage return ((float)adc_value) / ((float)0x00FFFFFF) / 5.0f; diff --git a/sw/ltc2400.h b/sw/ltc2400.h index 720b64c..d46a24f 100644 --- a/sw/ltc2400.h +++ b/sw/ltc2400.h @@ -31,6 +31,6 @@ void ltc2400_init(); -int ltc2400_conversion_ready(); +bool ltc2400_conversion_ready(); -float ltc2400_get_conversion_result(bool& dmy_fault, bool& exr_fault, uint32_t& adc_value); +float ltc2400_get_conversion_result(bool& dmy_fault, bool& exr_fault, uint32_t& raw_value); diff --git a/sw/main.cpp b/sw/main.cpp index 1c2e402..f929c84 100644 --- a/sw/main.cpp +++ b/sw/main.cpp @@ -422,15 +422,15 @@ int main() if (exr_fault) { flag_error(error_type_t::LTC2400_EXTENDED_RANGE_ERROR); - - snprintf(timestamp_buf, sizeof(timestamp_buf), "DBG,%ld" ENDL, adc_value); - uart_puts(timestamp_buf); } /* Vout - 2.5V = Ishunt * Rshunt * 20 */ const double i_shunt = (adc_voltage - 2.5) / (20.0 * R_SHUNT); capacity_accum += i_shunt * TIMER_TICK_INTERVAL; + snprintf(timestamp_buf, sizeof(timestamp_buf), "DBG,%ld mA" ENDL, lrint(i_shunt * 1000.0)); + uart_puts(timestamp_buf); + if (capacity_accum < 0) { capacity_accum = 0; } if (capacity_accum > MAX_CAPACITY) { capacity_accum = MAX_CAPACITY; } |