Необходимо мерить напругу на каналах: ad0.6, ad0.3, ad0.2, ad0.1.
Инициализация АЦП:
Код
AD0CR_bit.SEL = 0x4E;
AD0CR_bit.CLKDIV = 0x1F;
AD0CR_bit.PDN = 1;
AD0CR_bit.BURST = 1;
AD0CR_bit.CLKDIV = 0x1F;
AD0CR_bit.PDN = 1;
AD0CR_bit.BURST = 1;
Обработчик прерываний:
Код
void ADC0_ISR(void){
unsigned int ch;
for(;;){
if(AD0DR_bit.DONE==1)break;
}
ch = AD0DR_bit.CHN;
ADCresult[ch] = AD0DR_bit.VVDDA;
VICVectAddr=0;
}
unsigned int ch;
for(;;){
if(AD0DR_bit.DONE==1)break;
}
ch = AD0DR_bit.CHN;
ADCresult[ch] = AD0DR_bit.VVDDA;
VICVectAddr=0;
}
Проблема в том что вместо данных собирается какой-то мусор...
Если при инициализации указывать конкретно по одному каналу
Код
AD0CR_bit.SEL = 0x40;
например, то проблем не возникает.