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.

getting adc result of 8 bit values instead of 10 bit values in lpc2129 programming

Status
Not open for further replies.

rangerskm

Full Member level 4
Joined
Jan 23, 2013
Messages
199
Helped
0
Reputation
2
Reaction score
0
Trophy points
1,296
Activity points
2,663
i had attached the code for lpc2129 which is compiled sucessfully in keil uvision 4 .but getting adc output of only 8 bits instead of 10 bits.checked with adc debugger in keil and also in terminal in isis proteus.kindly help me in this.



Code:
#include "lpc21xx.h"
#define Fosc 12000000
#define Fcclk (Fosc*5)
#define Fcco (Fcclk*4)
#define Fpclk (Fcclk/4)
#define UART_BPS 9600     //SET BAUD RATE
//function prototype

void DECtoASCII(unsigned int data);
void Delay(unsigned char Ticks);
void init_UART0(void);
void UART0_Sendbyte(unsigned char data);
void UART0_Sendstr(unsigned char *str);
void ADC_init(void);
unsigned char ADC_Conversion(unsigned char channel);
////////////////

unsigned int ADC_Data1=0;
unsigned int ADC_Data2=0;
unsigned char TEMP[5];
double data;

///////////////

void DECtoASCII(unsigned int data)
{ 
	signed int i,local[5]={0,0,0,0,0};
	for(i=0;i<4;i++)
	 { local[i]=data%10;
		data= data/10;
	 }
	for(i=4;i>=0;i--)
	 { 
		 UART0_Sendbyte(local[i]+48);
		 
		 	 }
	 
	 
}
void Delay(unsigned char Ticks)
{
	unsigned int i;
  	if(Ticks==0)
		{
   		Ticks=1;
		}
	for(;Ticks>0;Ticks--)
	   {
      for(i=0;i<60000;i++);
	   }
	
}
void init_UART0(void)
{
	unsigned int Baud16;
	U0LCR=0X83;
	Baud16=(Fpclk/16)/9600;
	U0DLM=Baud16/256;
	U0DLL=Baud16%256;
	U0LCR=0X03;
	
}
 
void UART0_Sendbyte(unsigned char data)
{
	U0THR=data;
	while((U0LSR&0X40)==0);
}


void UART0_Sendstr(unsigned char *str)
{
	while(*str)
	{
		UART0_Sendbyte(*str++);
	}
		
}
void ADC_init(void)
  { 
		//PINSEL0=0X01000000; //AD0.1 PIN SELECTED
		ADCR&=0X00000000;
		ADCR|=0X00000E00;   //CLKDIV=PCLK/(ADCCLK-1) =15/1000000-1   ADCCLK=E
		ADCR&=0XFFF1FFFF;   //NO BURST IE BURST=0; SOFTWARE CONTROLLED

		ADCR&=0XFF3FFFFF;   //TEST 1:0 00 NORMAL MODE
		ADCR&=0XF7FFFFFF;   //EDGE =0 CONVERSION ON FALLING EDGE
		ADCR|=0X00200000;   //PDN=1 ACTIVE ADC MODULE
	}
	

unsigned char ADC_Conversion(unsigned char channel)
{
	unsigned int temp=0;
	ADCR=((ADCR&0XFFFFFF00)|channel);
	
	ADCR|=(1<<24);
	while((ADDR&0X80000000)==0);//wait for the conversion to complete
	//temp=ADDR;
	temp=(unsigned int)(ADDR>>6)&0x03ff;
	return temp;
}

int main()
{ unsigned int val;
	PINSEL0=0X05 ;// enable UART0 RX AND TX PINS
	PINSEL1=0X05; //ENABLE AD0.1 AND AD0.2
	PINSEL2=0;
	VPBDIV=0X01;//15 MHZ
	init_UART0();
	ADC_init();
	  while(1)
		{
			UART0_Sendstr("ADC");
			val=ADC_Conversion(1);
			DECtoASCII(val);
		}
	   
	
}
 

Hi!

In your code you are sending the data in a 8 bits format (char) so you will loose the 2 bits
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top