ADC: adapt to new libopencm3 + added calibration

This commit is contained in:
Thomas Kolb 2016-10-02 23:43:44 +02:00
parent 63fdc2797b
commit f698413f8d

View file

@ -194,9 +194,9 @@ static void init_timer(void)
static void init_adc(void) static void init_adc(void)
{ {
uint8_t channels[ADC_NUM_CHANNELS] = { uint8_t channels[ADC_NUM_CHANNELS] = {
ADC_CHANNEL0, // VInSense 0, // VInSense
ADC_CHANNEL1, // VOutSense 1, // VOutSense
ADC_CHANNEL2 // CurrentSense 2 // CurrentSense
}; };
adc_power_off(ADC1); adc_power_off(ADC1);
@ -205,7 +205,7 @@ static void init_adc(void)
//adc_enable_scan_mode(ADC1); //adc_enable_scan_mode(ADC1);
adc_set_single_conversion_mode(ADC1); adc_set_single_conversion_mode(ADC1);
adc_set_resolution(ADC1, ADC_RESOLUTION_12BIT); adc_set_resolution(ADC1, ADC_RESOLUTION_12BIT);
adc_set_sample_time_on_all_channels(ADC1, ADC_SMPR_SMP_071DOT5); adc_set_sample_time_on_all_channels(ADC1, ADC_SMPR_SMP_239DOT5);
adc_disable_external_trigger_regular(ADC1); adc_disable_external_trigger_regular(ADC1);
adc_set_right_aligned(ADC1); adc_set_right_aligned(ADC1);
adc_set_regular_sequence(ADC1, ADC_NUM_CHANNELS, channels); adc_set_regular_sequence(ADC1, ADC_NUM_CHANNELS, channels);
@ -229,9 +229,7 @@ static void init_adc(void)
adc_enable_dma(ADC1); adc_enable_dma(ADC1);
// GO!
adc_power_on(ADC1); adc_power_on(ADC1);
} }
static void deepsleep(uint32_t duration_secs) static void deepsleep(uint32_t duration_secs)
@ -595,6 +593,12 @@ int main(void)
// triggered every 1 ms // triggered every 1 ms
while (1) { while (1) {
if(timebase_ms == 900) {
adc_power_off(ADC1);
adc_calibrate(ADC1);
adc_power_on(ADC1);
}
// let the ADC+DMA do its work // let the ADC+DMA do its work
adc_start_conversion_regular(ADC1); adc_start_conversion_regular(ADC1);