aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2013-05-02 21:29:30 +1000
committerAndrew Tridgell <tridge@samba.org>2013-05-04 19:18:58 +1000
commit5b75519925a46165b108f1a6d59b6325e1022adc (patch)
tree408db7ee25b1b56924ccddf73cfd90b74f35070b /src/modules
parentd7e04a361909fb65839fb8f2ab515ea17e5f6d77 (diff)
downloadpx4-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')
-rw-r--r--src/modules/px4iofirmware/registers.c13
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);