Skip to content

Commit 3694b5c

Browse files
authored
Merge pull request #6426 from PaintYourDragon/main
Analog in scaling fix for #4794
2 parents 500083e + 92fa02e commit 3694b5c

File tree

5 files changed

+12
-10
lines changed

5 files changed

+12
-10
lines changed

ports/atmel-samd/common-hal/analogio/AnalogIn.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
123123
adc_sync_read_channel(&adc, self->channel, ((uint8_t *)&value), 2);
124124

125125
adc_sync_deinit(&adc);
126-
// Shift the value to be 16 bit.
127-
return value << 4;
126+
// Stretch 12-bit ADC reading to 16-bit range
127+
return (value << 4) | (value >> 8);
128128
}
129129

130130
float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self) {

ports/mimxrt10xx/common-hal/analogio/AnalogIn.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,10 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
8181

8282
}
8383

84-
// Shift the value to be 16 bit
85-
return ADC_GetChannelConversionValue(self->pin->adc, ADC_CHANNEL_GROUP) << 4;
84+
uint16_t value = ADC_GetChannelConversionValue(self->pin->adc, ADC_CHANNEL_GROUP);
85+
86+
// Stretch 12-bit ADC reading to 16-bit range
87+
return (value << 4) | (value >> 8);
8688
}
8789

8890
float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self) {

ports/nrf/common-hal/analogio/AnalogIn.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
125125
value = 0;
126126
}
127127

128-
// Map value to from 14 to 16 bits
129-
return value << 2;
128+
// Stretch 14-bit ADC reading to 16-bit range
129+
return (value << 2) | (value >> 12);
130130
}
131131

132132
float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self) {

ports/raspberrypi/common-hal/analogio/AnalogIn.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
6565
adc_select_input(self->pin->number - ADC_FIRST_PIN_NUMBER);
6666
uint16_t value = adc_read();
6767

68-
// Map value to from 12 to 16 bits
69-
return value << 4;
68+
// Stretch 12-bit ADC reading to 16-bit range
69+
return (value << 4) | (value >> 8);
7070
}
7171

7272
float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self) {

ports/stm/common-hal/analogio/AnalogIn.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,8 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
204204
uint16_t value = (uint16_t)HAL_ADC_GetValue(&AdcHandle);
205205
HAL_ADC_Stop(&AdcHandle);
206206

207-
// // Shift the value to be 16 bit.
208-
return value << 4;
207+
// Stretch 12-bit ADC reading to 16-bit range
208+
return (value << 4) | (value >> 8);
209209
}
210210

211211
float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self) {

0 commit comments

Comments
 (0)