我是想掃描四個通道,AN15,AN14,AN9,AN8,但是每次只能讀取到一個數據,那就是AN8的。程序在下面,請大神指導,調了兩天了。芯片是PIC32MX564
void __ADC10SCAN()
{
uint a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;
uint i = 0;
AD1PCFG &= 0x3CFF; // All PORTB = Digital; RB15、14、9、8 = analog
AD1CON1 = 0x00E4; // SSRC bit = 111 implies internal(自動轉換)
AD1CHS &= (~BIT(23)); // 選擇VR- 作為MUX A 反相輸入
// In this example RB12/AN12 is the input
AD1CSSL |= BIT(15) | BIT(14) | BIT(9) | BIT(8); //掃描AN15、14、9、8
AD1CON3 = 0x0F00; // Sample time = 15 TAD
AD1CON2 &= 0x03E; //四次產生中斷,總是使用MUX A多路開關,一個16字緩沖區
AD1CON2 |= BIT(10); //掃描輸入
AD1CON1SET = 0x8000; // Turn ON the ADC
while (1) // Repeat continuously
{
// AD1CON1 |= 0x0002; // 啟動采樣
// while ( ! mAD1GetIntFlag() ) { }
while (!(AD1CON1 & 0x0001)); // Conversion done?轉換是否完成
a = ADC1BUF0; // Yes, get ADC value
b = ADC1BUF1; // Yes, get ADC value
c = ADC1BUF2; // Yes, get ADC value
d = ADC1BUF3; // Yes, get ADC value
e = ADC1BUF4; // Yes, get ADC value
f = ADC1BUF5; // Yes, get ADC value
g = ADC1BUF6; // Yes, get ADC value
h = ADC1BUF7; // Yes, get ADC value
a = ADC1BUF0; // Yes, get ADC value
b = ADC1BUF1; // Yes, get ADC value
c = ADC1BUF2; // Yes, get ADC value
d = ADC1BUF3; // Yes, get ADC value
e = ADC1BUF4; // Yes, get ADC value
f = ADC1BUF5; // Yes, get ADC value
g = ADC1BUF6; // Yes, get ADC value
h = ADC1BUF7; // Yes, get ADC value
a = ADC1BUF8; // Yes, get ADC value
b = ADC1BUF9; // Yes, get ADC value
c = ADC1BUFA; // Yes, get ADC value
d = ADC1BUFB; // Yes, get ADC value
e = ADC1BUFC; // Yes, get ADC value
f = ADC1BUFD; // Yes, get ADC value
g = ADC1BUFE; // Yes, get ADC value
h = ADC1BUFF; // Yes, get ADC value
i++;
AD1CON1 & (~0x0001);
}
}
|