⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.c

📁 嵌入式系统设计与开发实例详解--基于ARM的应用(采用ARM7TDMI内核的、三星公司推出的S3C44B0X) 第一部分包含:ADCtest,ARPscan,ColorLCDtest,EINTtes
💻 C
字号:
#include <string.h>
#include "..\Target\44b.h"
#include "..\Target\44blib.h"
#include "adc.h"

void __irq BDMA1_Done(void);

int ReadAdc(int ch);

void Test_Adc(void)
{
    int a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0;
    int adcpsr;

    Uart_Printf("The ADC_IN are adjusted to the following values.\n");	      
    Uart_Printf("Push any key to exit!!!\n");	 

    rCLKCON=0x7ff8;	
    rADCCON=0x1|(0<<2);		//Enable ADC
    Delay(100);				//delay for 10ms for ADC reference voltage stabilization.

    //Uart_Printf("Input ADCPSR value:");
    //adcpsr=Uart_GetIntNum();
    adcpsr=255;
    rADCPSR=adcpsr;
    Uart_Printf("ADC conv. freq.=%d(Hz)\n",(int)(MCLK/(2.*(adcpsr+1.))/16.) );
    
    while(Uart_GetKey()==0)
    {
	SoftDelay(10000);
	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("0:%04d 1:%04d 2:%04d \n",/*3:%04d 4:%04d 5:%04d 6:%04d 7:%04d\n",*/
		a0,a1,a2,a3,a4,a5,a6,a7);
    }
}

int ReadAdc(int ch)
{
    int i;
    static int prevCh=-1;

    if(prevCh!=ch)
    {
    	rADCCON=0x0|(ch<<2);	//setup channel.
    	for(i=0;i<150;i++);	//min. 15us
    }
    rADCCON=0x1|(ch<<2);	//Start A/D conversion
    while(rADCCON &0x1);	//To avoid The first FLAG error case.
				//(The START bit is cleared in one ADC clock.)
    while(!(rADCCON & 0x40));
    for(i=0;i<rADCPSR;i++); 	//To avoid The second FLAG error case
    prevCh=ch;
    return rADCDAT;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -