Hello,
I am newbie. I can sucessfully scan one channel but dont know hot to scan multiple ADC channels ? Can some one please help me with some examples ?
I will really appreciate the help.
Cheers,
unsigned int val; // ADC Result (HEX)
float volt; // ADC Result Volt
int main(void)
{
init_serial0(); // Initial UART0 = 9600,N,8,1
printf(“ET-ARM7 BASE LPC2103…TEST ADC-0(P0.22)\n”); // Call prinff Function
// Initial ADC0 (GPIO-0.22) By Set PINSEL1[13:12=11]
// xxxx xxxx xxxx xxxx xx11 xxxx xxxx xxxx
PINSEL1 &= 0xFFFFCFFF; // Select ADC0 Pin Connect P0.22
PINSEL1 |= 0x00003000;
// Initial ADC0 (ADCR=0x01210601)
ADINTEN = 0; // Disable ADC Interrupt
ADCR &= 0x00000000; // Clear All Bit Control
ADCR |= 0x00000001; // Select ADC = AIN0
ADCR |= 0x00000600; // ADC Clock = VBP(PCLK) / 7
ADCR |= 0x00010000; // Busrt = 1 = Conversion Continue
ADCR &= 0xFFF1FFFF; // CLKS = 000 = 10Bit : 11 Cycle Clock Conversion
ADCR |= 0x00200000; // PDN = 1 = Active ADC Module
ADCR &= 0xFF3FFFFF; // TEST[1:0] = 00 = Normal Mode
ADCR &= 0xF7FFFFFF; // EDGE = 0 = Conversion on Falling Edge
ADCR |= 0x01000000; // START = 001 = Start Conversion Now
// Start Test Read ADC0 and Display on UART0 //
while(1) // Loop Continue
{
do // Loop Read ADC0
{
val = ADDR0; // Read A/D Data Register
}
while ((val & 0x80000000) == 0); // Wait ADC Conversion Complete
val = (val >> 6) & 0x03FF; // Shift ADC Result to Integer
volt = val * 3.3 / 1023.0; // Volt = ADC Result x [3.3V / 1024]
printf(“\rADC0 Result = %1.1f Volt.”,volt); // Display 3-Digit Result(0-3.3V)
delay(10000);
}
}