00001
00059 #include "avr_compiler.h"
00060 #include "adc_driver.h"
00061
00063 #define SAMPLE_COUNT 10
00064
00066 int16_t adcSamples[4][SAMPLE_COUNT];
00067
00068 volatile int8_t offset;
00069
00070 int main(void)
00071 {
00072
00073 ADC_CalibrationValues_Load(&ADCA);
00074
00075
00076 ADC_ConvMode_and_Resolution_Config(&ADCA, ADC_ConvMode_Signed, ADC_RESOLUTION_12BIT_gc);
00077
00078
00079 ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV32_gc);
00080
00081
00082 ADC_Reference_Config(&ADCA, ADC_REFSEL_VCC_gc);
00083
00084
00085 ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH0,
00086 ADC_CH_INPUTMODE_DIFF_gc,
00087 ADC_DRIVER_CH_GAIN_NONE);
00088
00089 ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH1,
00090 ADC_CH_INPUTMODE_INTERNAL_gc,
00091 ADC_DRIVER_CH_GAIN_NONE);
00092
00093 ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH2,
00094 ADC_CH_INPUTMODE_SINGLEENDED_gc,
00095 ADC_DRIVER_CH_GAIN_NONE);
00096
00097 ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH3,
00098 ADC_CH_INPUTMODE_SINGLEENDED_gc,
00099 ADC_DRIVER_CH_GAIN_NONE);
00100
00101
00102 ADC_Ch_InputMux_Config(&ADCA.CH0, ADC_CH_MUXPOS_PIN1_gc, ADC_CH_MUXNEG_PIN1_gc);
00103
00104 ADC_Enable(&ADCA);
00105
00106
00107 ADC_Wait_8MHz(&ADCA);
00108 offset = ADC_Offset_Get_Signed(&ADCA, &ADCA.CH0, false);
00109 ADC_Disable(&ADCA);
00110
00111
00112 ADC_Ch_InputMux_Config(&ADCA.CH0, ADC_CH_MUXPOS_PIN2_gc, ADC_CH_MUXNEG_PIN3_gc);
00113 ADC_Ch_InputMux_Config(&ADCA.CH1, ADC_CH_MUXINT_SCALEDVCC_gc, 0);
00114 ADC_Ch_InputMux_Config(&ADCA.CH2, ADC_CH_MUXPOS_PIN3_gc, 0);
00115 ADC_Ch_InputMux_Config(&ADCA.CH3, ADC_CH_MUXPOS_PIN4_gc, 0);
00116
00117
00118 ADC_SweepChannels_Config(&ADCA, ADC_SWEEP_0123_gc);
00119
00120
00121 ADC_Enable(&ADCA);
00122
00123
00124
00125 ADC_Wait_8MHz(&ADCA);
00126
00127
00128 ADC_FreeRunning_Enable(&ADCA);
00129
00130
00131 for (uint16_t i = 0; i < SAMPLE_COUNT; ++i) {
00132
00133 do{
00134
00135
00136 }while(!ADC_Ch_Conversion_Complete(&ADCA.CH0));
00137 adcSamples[0][i] = ADC_ResultCh_GetWord_Signed(&ADCA.CH0, offset);
00138
00139 do{
00140
00141
00142 }while(!ADC_Ch_Conversion_Complete(&ADCA.CH1));
00143 adcSamples[1][i] = ADC_ResultCh_GetWord_Signed(&ADCA.CH1, offset);
00144
00145 do{
00146
00147
00148 }while(!ADC_Ch_Conversion_Complete(&ADCA.CH2));
00149 adcSamples[2][i] = ADC_ResultCh_GetWord_Signed(&ADCA.CH2, offset);
00150
00151 do{
00152
00153
00154 }while(!ADC_Ch_Conversion_Complete(&ADCA.CH3));
00155 adcSamples[3][i] = ADC_ResultCh_GetWord_Signed(&ADCA.CH3, offset);
00156 }
00157
00158
00159 ADC_FreeRunning_Disable(&ADCA);
00160 ADC_Disable(&ADCA);
00161
00162
00163 while (true){
00164 }
00165 }
00166
00167