www.pudn.com > ADS_s3c2440a.rar > Adcts.c


/***************************************** 
  NAME: Adcts.c 
  DESC: ADC & Touch screen test 
  HISTORY: 
  2003.09.23:Leon YH KIM: draft ver 1.0 
 *****************************************/ 
#include  
#include "def.h" 
#include "2440addr.h" 
#include "2440lib.h" 
 
 
#define REQCNT 30 
#define ADCPRS 9	//YH 0627 
#define LOOP 1 
 
int ReadAdc(int ch);    //Return type is int, Declare Prototype function 
void __irq AdcTsAuto(void); 
 
int count=0; 
volatile int xdata, ydata; 
 
void Test_Adc(void) 
{ 
    int a0=0,a1=0,a2=0,a3=0; //Initialize variables 
    int a4=0,a5=0,a6=0,a7=0; //Initialize variables 
 
    Uart_Printf("The ADC_IN are adjusted to the following values.\n");         
    Uart_Printf("Push any key to exit!!!\n");     
    Uart_Printf("ADC conv. freq.=%d(Hz)\n",(int)(PCLK/(ADCPRS+1.))); // ADC Freq. = PCLK/(ADCPSR+1), ADC conversion time = 5CYCLES*(1/(ADC Freq.)) 
     
    while(Uart_GetKey()==0) 
    { 
 
    a0=ReadAdc(0); 
    a1=ReadAdc(1); 
    a2=ReadAdc(2); 
    a3=ReadAdc(3); 
    a4=ReadAdc(4);     
    a5=ReadAdc(5); 
    a6=ReadAdc(6); 
    a7=ReadAdc(7);     
 
 
    Uart_Printf("AIN0: %04d AIN1: %04d AIN2: %04d AIN3: %04d", a0,a1,a2,a3); 
    Uart_Printf("AIN4: %04d AIN5: %04d AIN6: %04d AIN7: %04d \n", a4,a5,a6,a7); 
   } 
     
    rADCCON=(0<<14)+(19<<6)+(7<<3)+(1<<2);     //stand by mode to reduce power consumption  
    Uart_Printf("rADCCON = 0x%x\n", rADCCON); 
} 
 
         
int ReadAdc(int ch) 
{ 
    int i; 
    static int prevCh=-1; 
 
    if(prevCh!=ch) 
        { 
        rADCCON=(1<<14)+(ADCPRS<<6)+(ch<<3);   //setup channel, ADCPRS 
        for(i=0;i