/*
说明:近期有人问我为什么S3C2410 ADC不好用,于是就随便调试了一下,说明开发板提供的Sample
没有问题。
这主要是对哪些初学者或者将要用用作电压检测的网友,不妨可以借鉴一下。
调试工具是ADS环境
Wince/Linux开发板都是自带好了,打开调作即可。
*/
volatile U32 preScaler;
#define LOOP 10000
#define PCLK (266000000/4)//PCLK=FCLK/4=266Mhz
#define ADC_FREQ 2500000//ADC采样频率
void main(void)
{
int voltage;
//读电压值
voltage=Test_Adc();
}
/*
* function:
* int ReadAdc(int ch)
* description:
* Read 0-7 channel ADC value.
* parameter:
* 0-7 channel
* return:
* 0-7 channel voltage value
*/
int ReadAdc(int ch)
{
int i;
static int prevCh=-1;
rADCCON = (1<<14)|(preScaler<<6)|(ch<<3); //ADC control
if(prevCh!=ch)
{
rADCCON = (1<<14)|(preScaler<<6)|(ch<<3);
for(i=0;i
prevCh=ch;
}
rADCCON|=0x1;
while(rADCCON & 0x1);
while(!(rADCCON & 0x8000));
return ( (int)rADCDAT0 & 0x3ff );
}
/*
* function:
* int Test_Adc(void)
* description:
* Read 0-7 channel ADC value.
* parameter:
* void
* return:
* voltage value
*/
int Test_Adc(void)
{
int i,key,ch_num;
preScaler = ADC_FREQ;
preScaler = PCLK/ADC_FREQ -1;
ch_num=3;//0-7 adc 端口号
return ReadAdc(3);
}
用户1134229 2010-8-3 08:44
用户1277994 2010-6-13 21:02