I am not getting first ADC reading when I select first chip using AN0-AN4, I am getting its value when I select 2nd one only, samething for 2nd one also, it is getting offset by one, do I need delay. current;y I have printf, may be printf adding that delay. Here I get volt1_buf correct value at curr1_buf, also curr1_buf correct val at curr2_buf and so on. Here I am using AN0-4 as GPIO inputs to select chipset and AN7 as ADC input.
VOLT1_READ; (macro selects first chipset by AN0-2 are low, AN3 and 4 are high)
for(i=0;i<0x22;i++) {}
volt1_buf = (int) ((MCF_ADC_ADRSLT7 & 0x7FF8) >> 3);
printf("VOLT1 ADC val: %d\n", volt1_buf);
CURR1_READ;
for(i=0;i<0x22;i++) {}
curr1_buf = (int) ((MCF_ADC_ADRSLT7 & 0x7FF8) >> 3);
printf("CURR1 ADC val: %d\n", curr1_buf);
CURR2_READ;
for(i=0;i<0x22;i++) {}
curr2_buf = (int) ((MCF_ADC_ADRSLT7 & 0x7FF8) >> 3);
printf("CURR2 ADC val: %d\n", curr2_buf);
......
.....
CURR8_READ;
for(i=0;i<0x22;i++) {}
curr8_buf = (int) ((MCF_ADC_ADRSLT7 & 0x7FF8) >> 3);
printf("CURR8 ADC val: %d\n", curr8_buf);
VOLT2_READ; (macro selects first chipset by AN0-2 are low, AN3 and 4 are high)
for(i=0;i<0x22;i++) {}
volt2_buf = (int) ((MCF_ADC_ADRSLT7 & 0x7FF8) >> 3);
printf("VOLT2 ADC val: %d\n", volt2_buf);
CURR9_READ;
for(i=0;i<0x22;i++) {}
curr9_buf = (int) ((MCF_ADC_ADRSLT7 & 0x7FF8) >> 3);
printf("CURR9 ADC val: %d\n", curr9_buf);
CURR10_READ;
for(i=0;i<0x22;i++) {}
curr10_buf = (int) ((MCF_ADC_ADRSLT7 & 0x7FF8) >> 3);
printf("CURR10 ADC val: %d\n", curr10_buf);
......
.....
CURR16_READ;
for(i=0;i<0x22;i++) {}
curr16_buf = (int) ((MCF_ADC_ADRSLT7 & 0x7FF8) >> 3);
printf("CURR16 ADC val: %d\n", curr16_buf);