int main(void) { const usart_serial_options_t usart_serial_options = { .baudrate = CONF_TEST_BAUDRATE, .charlength = CONF_TEST_CHARLENGTH, .paritytype = CONF_TEST_PARITY, .stopbits = CONF_TEST_STOPBITS, }; uint16_t volts_values[3][NB_VALUE]; int16_t volt_output; uint8_t i; /* Usual initializations */ board_init(); sysclk_init(); sleepmgr_init(); irq_initialize_vectors(); cpu_irq_enable(); stdio_serial_init(CONF_TEST_USART, &usart_serial_options); printf("\x0C\n\r-- ADC Calibration and averaging example"); printf(" (Compiled: %s %s)\n\r", __DATE__, __TIME__); /* ADC and DAC initializations */ main_dac_init(); main_adc_init(); /* Conversions without averaging and without corrections */ main_conversions(volts_values[0]); /* Enable averaging */ main_adc_averaging(); /* Conversions with averaging and without corrections */ main_conversions(volts_values[1]); /* Measure and enable corrections */ main_adc_correction(); /* Conversions with averaging and with corrections */ main_conversions(volts_values[2]); /* Display values */ printf("| ADC input | ADC res. | Delta | Averaging | Delta | Aver.+Corr. | Delta |\n\r"); volt_output = -CONV_MAX_VOLTAGE; for (i = 0; i < NB_VALUE; i++) { printf("| %5d mV | %5d mV | %4d mV | %5d mV | %4d mV | %5d mV | %4d mV |\n\r", volt_output, volts_values[0][i], volts_values[0][i] - volt_output, volts_values[1][i], volts_values[1][i] - volt_output, volts_values[2][i], volts_values[2][i] - volt_output); volt_output += CONV_VOLTAGE_STEP; } while (1) { } }
int main(void) { const usart_serial_options_t usart_serial_options = { .baudrate = CONF_TEST_BAUDRATE, .charlength = CONF_TEST_CHARLENGTH, .paritytype = CONF_TEST_PARITY, .stopbits = CONF_TEST_STOPBITS, }; /* Usual initializations */ board_init(); sysclk_init(); sleepmgr_init(); stdio_serial_init(CONF_TEST_USART, &usart_serial_options); /* ADC and DAC initializations */ main_dac_init(); main_adc_init(); DEFINE_TEST_CASE(standard_conversion_test, NULL, run_standard_conversion_test, NULL, "Standard conversion with 12-bit result"); DEFINE_TEST_CASE(averaging_conversion_test, NULL, run_averaging_conversion_test, NULL, "Averaging conversion with 12-bit result"); DEFINE_TEST_CASE(correction_conversion_test, NULL, run_correction_conversion_test, NULL, "Correction conversion with 12-bit result"); /* Put test case addresses in an array */ DEFINE_TEST_ARRAY(adc_tests) = { &standard_conversion_test, &averaging_conversion_test, &correction_conversion_test, }; /* Define the test suite */ DEFINE_TEST_SUITE(adc_suite, adc_tests, "XMEGA E ADC driver test suite"); /* Run all tests in the suite */ test_suite_run(&adc_suite); while (1) { /* Intentionally left empty. */ } }
int main(void) { const usart_serial_options_t usart_serial_options = { .baudrate = CONF_TEST_BAUDRATE, .charlength = CONF_TEST_CHARLENGTH, .paritytype = CONF_TEST_PARITY, .stopbits = CONF_TEST_STOPBITS, }; /* Usual initializations */ board_init(); sysclk_init(); sleepmgr_init(); irq_initialize_vectors(); cpu_irq_enable(); stdio_serial_init(CONF_TEST_USART, &usart_serial_options); printf("\x0C\n\r-- ADC Averaging Example --\n\r"); printf("-- Compiled: %s %s --\n\r\n\r", __DATE__, __TIME__); printf("Commands:\n\r"); printf("- key 'a' to enable averaging\n\r"); printf("- key 'd' to disable averaging\n\r"); /* ADC initialization */ main_adc_init(); main_adc_averaging_stop(); while (1) { if (usart_rx_is_complete(CONF_TEST_USART)) { char key = getchar(); if (key == 'a') { main_adc_averaging_start(); } if (key == 'd') { main_adc_averaging_stop(); } } /* Wait sample with or without average */ uint16_t sample; adc_wait_for_interrupt_flag(&ADCA, ADC_CH0); sample = adc_get_unsigned_result(&ADCA, ADC_CH0); printf("ADC Value: %4u\r", sample); } }
int main(void) { const usart_serial_options_t usart_serial_options = { .baudrate = CONF_TEST_BAUDRATE, .charlength = CONF_TEST_CHARLENGTH, .paritytype = CONF_TEST_PARITY, .stopbits = CONF_TEST_STOPBITS, }; /* Usual initializations */ board_init(); sysclk_init(); sleepmgr_init(); irq_initialize_vectors(); cpu_irq_enable(); stdio_serial_init(CONF_TEST_USART, &usart_serial_options); printf("\x0C\n\r-- ADC Calibration Example --\n\r"); printf("-- Compiled: %s %s --\n\r\n\r", __DATE__, __TIME__); /* ADC initializations */ main_adc_init(); printf("Commands:\n\r"); printf("- key 'c' to enable correction\n\r"); printf("- key 'd' to disable correction\n\r"); main_adc_correction_stop(); while (1) { if (usart_rx_is_complete(CONF_TEST_USART)) { char key = getchar(); if (key == 'c') { main_adc_correction_start(); } if (key == 'd') { main_adc_correction_stop(); } } printf(" %4d mV\r", main_adc_input()); } }
int main(void) { const usart_serial_options_t usart_serial_options = { .baudrate = CONF_TEST_BAUDRATE, .charlength = CONF_TEST_CHARLENGTH, .paritytype = CONF_TEST_PARITY, .stopbits = CONF_TEST_STOPBITS, }; /* Usual initializations */ board_init(); sysclk_init(); sleepmgr_init(); irq_initialize_vectors(); cpu_irq_enable(); stdio_serial_init(CONF_TEST_USART, &usart_serial_options); printf("\x0C\n\r-- ADC Calibration Example"); printf(" (Compiled: %s %s)\n\r", __DATE__, __TIME__); /* ADC and DAC initializations */ main_dac_init(); main_adc_init(); printf("\n\rConversion samples without correction:\n\r"); main_conversions(); /* Measure and enable corrections */ main_adc_correction(); printf("Conversion samples with correction:\n\r"); main_conversions(); while (1) { } }
int main(void) { const usart_serial_options_t usart_serial_options = { .baudrate = CONF_TEST_BAUDRATE, .charlength = CONF_TEST_CHARLENGTH, .paritytype = CONF_TEST_PARITY, .stopbits = CONF_TEST_STOPBITS, }; char binary[16 + 1]; uint8_t i; bool oversampling_is_enabled; /* Usual initializations */ board_init(); sysclk_init(); sleepmgr_init(); irq_initialize_vectors(); cpu_irq_enable(); stdio_serial_init(CONF_TEST_USART, &usart_serial_options); printf("\x0C\n\r-- ADC Over-sampling Example --\n\r"); printf("-- Compiled: %s %s --\n\r\n\r", __DATE__, __TIME__); printf("Commands:\n\r"); printf("- key 'o' to enable over-sampling\n\r"); printf("- key 'd' to disable over-sampling\n\r"); /* ADC initializations */ main_adc_init(); main_adc_oversampling_stop(); oversampling_is_enabled = false; while (1) { if (usart_rx_is_complete(CONF_TEST_USART)) { char key = getchar(); if (key == 'o') { main_adc_oversampling_start(); oversampling_is_enabled = true; } if (key == 'd') { main_adc_oversampling_stop(); oversampling_is_enabled = false; } } /* Wait sample with or without over-sampling */ uint16_t sample; adc_wait_for_interrupt_flag(&ADCA, ADC_CH0); sample = adc_get_unsigned_result(&ADCA, ADC_CH0); if (!oversampling_is_enabled) { sample <<= 4; } i = 15; do { binary[i] = '0' + (sample & 1); sample >>= 1; } while (i--); binary[16] = 0; printf("ADC Value: %sb\r", binary); } }