热度 24
2010-6-13 21:02
2874 次阅读|
2 个评论
/* 说明:近期有人问我为什么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 = (114)|(preScaler6)|(ch3); //ADC control if(prevCh!=ch) { rADCCON = (114)|(preScaler6)|(ch3); 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); }