main
Default mainpagebasic-adc-projectmain
Description Source Call Graph
Start Line: 235
int main(void)
{
    unsigned int id_channel;    

    TRACE_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK);
    printf("-- Basic ADC Project %s --\n\r", SOFTPACK_VERSION);
    printf("-- %s\n\r", BOARD_NAME);
    printf("-- Compiled: %s %s --\n\r", __DATE__, __TIME__);

#ifdef PINS_ADC
    PIO_Configure(pinsADC, PIO_LISTSIZE(pinsADC));
#endif

    ADC_Initialize( AT91C_BASE_ADC,
                    AT91C_ID_ADC,
                    AT91C_ADC_TRGEN_DIS,
                    0,
                    AT91C_ADC_SLEEP_NORMAL_MODE,
                    AT91C_ADC_LOWRES_10_BIT,
                    BOARD_MCK,
                    BOARD_ADC_FREQ,
                    10,
                    1200);

    ADC_EnableChannel(AT91C_BASE_ADC, ADC_NUM_1);
    ADC_EnableChannel(AT91C_BASE_ADC, ADC_NUM_2);
    ADC_EnableChannel(AT91C_BASE_ADC, ADC_NUM_3);
    ADC_EnableChannel(AT91C_BASE_ADC, ADC_NUM_4);

    AIC_ConfigureIT(AT91C_ID_ADC, 0, ISR_Adc);
    AIC_EnableIT(AT91C_ID_ADC);

    printf("-I- Press any key to perform a measurement on the ADC ...\n\r");

    // Infinite loop
    while (1) {

        // Wait for user input
        DBGU_GetChar();

        conversionDone = 0;

        ADC_EnableIt(AT91C_BASE_ADC, ADC_NUM_1);
        ADC_EnableIt(AT91C_BASE_ADC, ADC_NUM_2);
        ADC_EnableIt(AT91C_BASE_ADC, ADC_NUM_3);
        ADC_EnableIt(AT91C_BASE_ADC, ADC_NUM_4);

        // Start measurement
        ADC_StartConversion(AT91C_BASE_ADC);

        while( conversionDone != ((1<<ADC_NUM_1)|(1<<ADC_NUM_2)|(1<<ADC_NUM_3)|(1<<ADC_NUM_4)) );

        for(id_channel=ADC_NUM_1;id_channel<=ADC_NUM_4;id_channel++) {

            printf("Channel %d : %d mV\n\r",
                id_channel,
                ConvHex2mV(ADC_GetConvertedData(AT91C_BASE_ADC, id_channel))
                );
        }

        printf("\n\r");
    }
}