/** * \brief Application entry point for adcife example. * * \return Unused (ANSI-C compatibility). */ int main(void) { uint32_t uc_key = 0; /* Initialize the SAM system */ sysclk_init(); board_init(); /* Initialize the UART console */ configure_console(); /* Output example information */ puts(STRING_HEADER); /* Set default ADCIFE test mode. */ g_adc_test_mode.uc_trigger_mode = TRIGGER_MODE_SOFTWARE; g_adc_test_mode.uc_pdc_en = 1; g_adc_test_mode.uc_gain_en = 0; display_menu(); start_dac(); start_adc(); while (1) { /* ADCIFE software trigger per 1s */ if (g_adc_test_mode.uc_trigger_mode == TRIGGER_MODE_SOFTWARE) { adc_start_software_conversion(&g_adc_inst); } if (!usart_read(CONF_UART, &uc_key)) { adc_disable_interrupt(&g_adc_inst, ADC_SEQ_SEOC); display_menu(); set_adc_test_mode(); start_adc(); puts("Press any key to display configuration menu.\r"); } delay_ms(1000); if (g_uc_condone_flag == 1) { if(g_adc_test_mode.uc_pdc_en == 0) { printf("Internal DAC Voltage = %4d mv \r\n", (int)(g_adc_sample_data[0] * VOLT_REF / MAX_DIGITAL)); } else { printf("Internal DAC Voltage = %4d mv \r\n", (int)(g_adc_sample_data[0] * VOLT_REF / MAX_DIGITAL)); printf("Scaled VCC Voltage = %4d mv \r\n", (int)(g_adc_sample_data[1] * VOLT_REF / MAX_DIGITAL)); } g_uc_condone_flag = 0; } } }
/** * \brief adc12 Application entry point. * * \return Unused (ANSI-C compatibility). */ int main(void) { uint32_t i; uint8_t uc_key; /* Initialize the SAM system. */ sysclk_init(); board_init(); configure_console(); /* Output example information. */ puts(STRING_HEADER); puts("Configure system tick to get 1ms tick period.\r"); if (SysTick_Config(sysclk_get_cpu_hz() / 1000)) { puts("-F- Systick configuration error\r"); while (1); } /* Set default ADC test mode. */ memset((void *)&g_adc_test_mode, 0, sizeof(g_adc_test_mode)); g_adc_test_mode.uc_trigger_mode = TRIGGER_MODE_SOFTWARE; g_adc_test_mode.uc_pdc_en = 1; g_adc_test_mode.uc_sequence_en = 0; g_adc_test_mode.uc_gain_en = 0; g_adc_test_mode.uc_offset_en = 0; display_menu(); start_adc(); puts("Press any key to display configuration menu.\r"); while (1) { /* ADC software trigger per 1s */ if (g_adc_test_mode.uc_trigger_mode == TRIGGER_MODE_SOFTWARE) { mdelay(1000); #if SAM3S || SAM3N || SAM3XA || SAM4S || SAM4C adc_start(ADC); #elif SAM3U #ifdef ADC_12B adc12b_start(ADC12B); #else adc_start(ADC); #endif #endif } /* Check if the user enters a key. */ if (!uart_read(CONSOLE_UART, &uc_key)) { #if SAM3S || SAM3N || SAM3XA || SAM4S || SAM4C adc_disable_interrupt(ADC, 0xFFFFFFFF); /* Disable all adc interrupt. */ #elif SAM3U #ifdef ADC_12B adc12b_disable_interrupt(ADC12B, 0xFFFFFFFF); /* Disable all adc interrupt. */ #else adc_disable_interrupt(ADC, 0xFFFFFFFF); /* Disable all adc interrupt. */ #endif #endif tc_start(TC0, 0); /* Stop the Timer. */ #if SAM3S || SAM3U || SAM3XA || SAM4S pwm_channel_disable(PWM, 0); #endif display_menu(); set_adc_test_mode(); start_adc(); puts("Press any key to display configuration menu.\r"); } /* Check if ADC sample is done. */ if (g_adc_sample_data.us_done == ADC_DONE_MASK) { for (i = 0; i < NUM_CHANNELS; i++) { printf("CH%02d: %04d mv. ", (int)g_adc_sample_data.uc_ch_num[i], (int)(g_adc_sample_data. us_value[i] * VOLT_REF / MAX_DIGITAL)); } puts("\r"); g_adc_sample_data.us_done = 0; } } }