summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/adc-as3514.c48
1 files changed, 24 insertions, 24 deletions
diff --git a/firmware/target/arm/adc-as3514.c b/firmware/target/arm/adc-as3514.c
index 77d6545..8c661eb 100644
--- a/firmware/target/arm/adc-as3514.c
+++ b/firmware/target/arm/adc-as3514.c
@@ -28,36 +28,36 @@ unsigned short adc_read(int channel)
{
unsigned short data = 0;
- if ((unsigned)channel < NUM_ADC_CHANNELS)
- {
- ascodec_lock();
+ if ((unsigned)channel >= NUM_ADC_CHANNELS)
+ return 0;
- /* Select channel */
- if (ascodec_write(AS3514_ADC_0, (channel << 4)) >= 0)
- {
- unsigned char buf[2];
+ ascodec_lock();
- /*
- * The AS3514 ADC will trigger an interrupt when the conversion
- * is finished, if the corresponding enable bit in IRQ_ENRD2
- * is set.
- * Previously the code did not wait and this apparently did
- * not pose any problems, but this should be more correct.
- * Without the wait the data read back may be completely or
- * partially (first one of the two bytes) stale.
- */
- ascodec_wait_adc_finished();
+ /* Select channel */
+ if (ascodec_write(AS3514_ADC_0, (channel << 4)) >= 0)
+ {
+ unsigned char buf[2];
+ /*
+ * The AS3514 ADC will trigger an interrupt when the conversion
+ * is finished, if the corresponding enable bit in IRQ_ENRD2
+ * is set.
+ * Previously the code did not wait and this apparently did
+ * not pose any problems, but this should be more correct.
+ * Without the wait the data read back may be completely or
+ * partially (first one of the two bytes) stale.
+ */
+ ascodec_wait_adc_finished();
- /* Read data */
- if (ascodec_readbytes(AS3514_ADC_0, 2, buf) >= 0)
- {
- data = (((buf[0] & 0x3) << 8) | buf[1]);
- }
- }
- ascodec_unlock();
+ /* Read data */
+ if (ascodec_readbytes(AS3514_ADC_0, 2, buf) >= 0)
+ {
+ data = (((buf[0] & 0x3) << 8) | buf[1]);
+ }
}
+
+ ascodec_unlock();
return data;
}