diff --git a/ports/atmel-samd/common-hal/analogio/AnalogIn.c b/ports/atmel-samd/common-hal/analogio/AnalogIn.c index 4140324a1c..e6db95b358 100644 --- a/ports/atmel-samd/common-hal/analogio/AnalogIn.c +++ b/ports/atmel-samd/common-hal/analogio/AnalogIn.c @@ -123,8 +123,8 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) { adc_sync_read_channel(&adc, self->channel, ((uint8_t *)&value), 2); adc_sync_deinit(&adc); - // Shift the value to be 16 bit. - return value << 4; + // Stretch 12-bit ADC reading to 16-bit range + return (value << 4) | (value >> 8); } float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self) {