aboutsummaryrefslogtreecommitdiff
path: root/drivers/avr/analog.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/avr/analog.c')
-rw-r--r--drivers/avr/analog.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/avr/analog.c b/drivers/avr/analog.c
index 9b8397b93..8d299ffdb 100644
--- a/drivers/avr/analog.c
+++ b/drivers/avr/analog.c
@@ -97,10 +97,11 @@ uint8_t pinToMux(pin_t pin) {
97#endif 97#endif
98 // clang-format on 98 // clang-format on
99 } 99 }
100 return 0;
100} 101}
101 102
102int16_t adc_read(uint8_t mux) { 103int16_t adc_read(uint8_t mux) {
103 uint8_t low; 104 uint16_t low;
104 105
105 // Enable ADC and configure prescaler 106 // Enable ADC and configure prescaler
106 ADCSRA = _BV(ADEN) | ADC_PRESCALER; 107 ADCSRA = _BV(ADEN) | ADC_PRESCALER;
@@ -128,5 +129,10 @@ int16_t adc_read(uint8_t mux) {
128 // Must read LSB first 129 // Must read LSB first
129 low = ADCL; 130 low = ADCL;
130 // Must read MSB only once! 131 // Must read MSB only once!
131 return (ADCH << 8) | low; 132 low |= (ADCH << 8);
133
134 // turn off the ADC
135 ADCSRA &= ~(1 << ADEN);
136
137 return low;
132} 138}