Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

lpc2148 analog to digital conversion help ?

Status
Not open for further replies.

kodi.sudar

Member level 5
Joined
Dec 21, 2009
Messages
92
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Location
india
Activity points
1,849
Hi
I have written the code for adc conversion for adc 0 channel 1 . it works well but i also wanted to use channel 2 for another input .I tried by changing the value in control register but i dont kow to extract the data for adc channel 2. here with i am enclosing the code for one channel .

Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <LPC213X.H>
#include <stdio.h>
#include "lcd.h"
 
 
        
//VBC CLOCK 12MHZ
void delay();
void adc_data();
void adc_ini();
 
 
unsigned long val,adc_val;
unsigned char buffer [21];  // Set size to LCD width plus one null
 
 
int main(void)
{
        
 
            while(1)
                
            {
                    adc_ini(); //initializing adc
                    adc_data();//extracting data
    
            
                /*code for lcd print*/
                    PINSEL0=0X00000000; // gpio pin 0.0 to 0.15
                    PINSEL2=0X00000000; // gpio pin 1.16 to 1.31
                    IODIR0=0X00000007; //p0.0 rs p0.1 r/w p0.2 e    
                    IODIR1=0X00ff0000; //p1.16 to p1.24 output
                    lcdinit();
                    sprintf (buffer, "ADC Value: %x", adc_val);
                    lcdputs(buffer);
                        
 
    }
}
 
void adc_ini(void)
{
        
    
        PINSEL1 = 0X01000000; //pin 13 p0.28 adc 0 channel 1
        PCONP |=  0X00001000;   //select adc 0 bit 12
        AD0CR &=  0X00000000;
        AD0CR |=  0X00200202; // WITH PCLK 12/(2+1)=4MHZ ADC0 CHANNEL 1 PIN 13
        AD0INTEN &= 0x00000000; //Completion of a conversion on ADC channel 0 will not generate an interrupt.
 
 
}
void adc_data(void)
{
                    AD0CR  |= 0x01000000;                   /* Start A/D Conversion               */
                    while((AD0DR & 0x80000000)==0); //until bit 31 is high (DONE)
                    val = AD0DR; //read a/d data register
                    adc_val = ((val >> 6) & 0x3FF);    // Extract AD result
}



How to use multiple channel adc ?
modified code .

Code:
void adc_ini(void)
{
		
	
		PINSEL1 = 0X05000000; //pin 13 p0.28 and p0.29 adc 0 channel 1 and 2
		PCONP |=  0X00001000;	//select adc 0 bit 12
		AD0CR &=  0X00000000;
		AD0CR |=  0X00200206; // WITH PCLK 12/(2+1)=4MHZ ADC0 CHANNEL 1 and 2 PIN 13 and 14
		AD0INTEN &= 0x00000000; //Completion of a conversion on ADC channel 0 will not generate an interrupt.


}
How to use multiple channel and how to extract the data ?


Thanks in advance .
 
Last edited by a moderator:

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top