diff options
author | Andrew Tridgell <tridge@samba.org> | 2013-05-02 21:29:30 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2013-05-04 19:18:58 +1000 |
commit | 5b75519925a46165b108f1a6d59b6325e1022adc (patch) | |
tree | 408db7ee25b1b56924ccddf73cfd90b74f35070b /src/modules/px4iofirmware | |
parent | d7e04a361909fb65839fb8f2ab515ea17e5f6d77 (diff) | |
download | px4-firmware-5b75519925a46165b108f1a6d59b6325e1022adc.tar.gz px4-firmware-5b75519925a46165b108f1a6d59b6325e1022adc.tar.bz2 px4-firmware-5b75519925a46165b108f1a6d59b6325e1022adc.zip |
px4io: handle errors from adc_measure()
don't update the voltage/current values on error
Diffstat (limited to 'src/modules/px4iofirmware')
-rw-r--r-- | src/modules/px4iofirmware/registers.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/modules/px4iofirmware/registers.c b/src/modules/px4iofirmware/registers.c index 9f9c50048..4f3addfea 100644 --- a/src/modules/px4iofirmware/registers.c +++ b/src/modules/px4iofirmware/registers.c @@ -506,10 +506,12 @@ registers_get(uint8_t page, uint8_t offset, uint16_t **values, unsigned *num_val * Intercept corrected for best results @ 12V. */ unsigned counts = adc_measure(ADC_VBATT); - unsigned mV = (4150 + (counts * 46)) / 10 - 200; - unsigned corrected = (mV * r_page_setup[PX4IO_P_SETUP_VBATT_SCALE]) / 10000; + if (counts != 0xffff) { + unsigned mV = (4150 + (counts * 46)) / 10 - 200; + unsigned corrected = (mV * r_page_setup[PX4IO_P_SETUP_VBATT_SCALE]) / 10000; - r_page_status[PX4IO_P_STATUS_VBATT] = corrected; + r_page_status[PX4IO_P_STATUS_VBATT] = corrected; + } } /* PX4IO_P_STATUS_IBATT */ @@ -521,7 +523,10 @@ registers_get(uint8_t page, uint8_t offset, uint16_t **values, unsigned *num_val FMU sort it out, with user selectable configuration for their sensor */ - r_page_status[PX4IO_P_STATUS_IBATT] = adc_measure(ADC_IN5); + unsigned counts = adc_measure(ADC_IN5); + if (counts != 0xffff) { + r_page_status[PX4IO_P_STATUS_IBATT] = counts; + } } SELECT_PAGE(r_page_status); |