2.8.2.1.2 Code
Add to the main application source file, outside of any functions:
structadc_module adc_instance;
Callback function:#define ADC_SAMPLES 128uint16_t adc_result_buffer[ADC_SAMPLES];
Copy-paste the following setup code to your user application:volatilebooladc_read_done =false;voidadc_complete_callback(structadc_module *constmodule){adc_read_done =true;}
Add to user application initialization (typically the start of main()):voidconfigure_adc(void){structadc_config config_adc;adc_get_config_defaults(&config_adc);#if (!SAML21) && (!SAML22) && (!SAMC21)config_adc.gain_factor = ADC_GAIN_FACTOR_DIV2;#endifconfig_adc.clock_prescaler = ADC_CLOCK_PRESCALER_DIV8;config_adc.reference = ADC_REFERENCE_INTVCC1;#if (SAMC21)config_adc.positive_input = ADC_POSITIVE_INPUT_PIN5;#elseconfig_adc.positive_input = ADC_POSITIVE_INPUT_PIN6;#endifconfig_adc.resolution = ADC_RESOLUTION_12BIT;#if (SAMC21)adc_init(&adc_instance, ADC1, &config_adc);#elseadc_init(&adc_instance, ADC, &config_adc);#endifadc_enable(&adc_instance);}voidconfigure_adc_callbacks(void){adc_register_callback(&adc_instance,adc_complete_callback, ADC_CALLBACK_READ_BUFFER);adc_enable_callback(&adc_instance, ADC_CALLBACK_READ_BUFFER);}
configure_adc();configure_adc_callbacks();
