summaryrefslogtreecommitdiff
path: root/atmel-samd/common-hal/nativeio
diff options
context:
space:
mode:
authorScott Shawcroft <scott.shawcroft@gmail.com>2016-12-13 16:09:00 -0800
committerScott Shawcroft <scott.shawcroft@gmail.com>2016-12-13 16:09:00 -0800
commit781633c716a2d0dc32ebf352fb5dd5ffdecad1d3 (patch)
treee8e932c038ab666220d826f21b8d5f6bd0007b6f /atmel-samd/common-hal/nativeio
parent9ad0da61348ab034ac762b42e6e080daaefe96fd (diff)
Fix up Analog classes: unify them at 16 bits and adds reference_voltage member
to make for easy conversion. Fixes #14.
Diffstat (limited to 'atmel-samd/common-hal/nativeio')
-rw-r--r--atmel-samd/common-hal/nativeio/AnalogIn.c10
-rw-r--r--atmel-samd/common-hal/nativeio/AnalogOut.c3
2 files changed, 9 insertions, 4 deletions
diff --git a/atmel-samd/common-hal/nativeio/AnalogIn.c b/atmel-samd/common-hal/nativeio/AnalogIn.c
index 592ba4ca8..0d5f98310 100644
--- a/atmel-samd/common-hal/nativeio/AnalogIn.c
+++ b/atmel-samd/common-hal/nativeio/AnalogIn.c
@@ -47,10 +47,10 @@ void common_hal_nativeio_analogin_construct(nativeio_analogin_obj_t* self,
struct adc_config config_adc;
adc_get_config_defaults(&config_adc);
+ config_adc.reference = ADC_REFERENCE_INTVCC1;
+ config_adc.gain_factor = ADC_GAIN_FACTOR_DIV2;
config_adc.positive_input = self->pin->adc_input;
- config_adc.resolution = ADC_RESOLUTION_CUSTOM;
- config_adc.accumulate_samples = ADC_ACCUMULATE_SAMPLES_16;
- config_adc.divide_result = ADC_DIVIDE_RESULT_16;
+ config_adc.resolution = ADC_RESOLUTION_16BIT;
config_adc.clock_prescaler = ADC_CLOCK_PRESCALER_DIV128;
adc_init(&self->adc_instance, ADC, &config_adc);
@@ -82,3 +82,7 @@ uint16_t common_hal_nativeio_analogin_get_value(nativeio_analogin_obj_t *self) {
adc_disable(&self->adc_instance);
return data;
}
+
+float common_hal_nativeio_analogin_get_reference_voltage(nativeio_analogin_obj_t *self) {
+ return 3.3f;
+}
diff --git a/atmel-samd/common-hal/nativeio/AnalogOut.c b/atmel-samd/common-hal/nativeio/AnalogOut.c
index 958eb7e6a..df4cc44a2 100644
--- a/atmel-samd/common-hal/nativeio/AnalogOut.c
+++ b/atmel-samd/common-hal/nativeio/AnalogOut.c
@@ -67,5 +67,6 @@ void common_hal_nativeio_analogout_deinit(nativeio_analogout_obj_t *self) {
void common_hal_nativeio_analogout_set_value(nativeio_analogout_obj_t *self,
uint16_t value) {
- dac_chan_write(&self->dac_instance, DAC_CHANNEL_0, value);
+ // Input is 16 bit but we only support 10 bit so we shift the input.
+ dac_chan_write(&self->dac_instance, DAC_CHANNEL_0, value >> 6);
}