?? drv_adc.c
字號:
#include "config_60_61.h"
#include "config_GD60.h"
#include "include_GD60.h"
#include "include_GD61.h"
////
#define MAX_ADCHANNEL 8
#define ADC_MAX_POINT 20
uint16 ADC[MAX_ADCHANNEL][ADC_MAX_POINT];
extern volatile uint8 DispSecondTick; // for display of time
///////////////////////////////////////////////////////////////////////
uint16 Start_ADC(uint8 adc_chan);
void ADC_TestPrn(void);
///////////////////////////////////////////////////////////////////////
//***************** FETCH ONE CHANNEL DATA ****************************
///////////////////////////////////////////////////////////////////////
uint16 Start_ADC(uint8 adc_chan)
{
uint32 ad_result;
static uint8 data_pt=0;
// TimeElapseStart();
if(adc_chan>=MAX_ADCHANNEL) return 0; // invalid ad channel
IRQDisable();
AD0CR =(1 << adc_chan) | // SEL 選擇通道
((LPC_FPCLK / 4000000 - 1) << 8)| // CLKDIV=LPC_FPCLK/4000000-1,轉換時鐘為4MHz
(0 << 16) | // BURST=0,軟件控制轉換操作
(0 << 17) | // CLKS=0, 使用11clock轉換
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
// (1 << 24) | // START=1,直接啟動ADC轉換
(0 << 27); // 直接啟動ADC轉換時,此位無效
AD0CR |= 1 << 24 ; // 進行第一次轉換
while((AD0DR & 0x80000000) == 0); // 等待轉換結束
AD0CR |= 1 << 24; // 再次啟動轉換
while((AD0DR & 0x80000000) == 0); // 等待轉換結束
ad_result= AD0DR; // 讀取ADC結果
ad_result=(ad_result>>6)&0x3ff; // 10 bits A/D
ad_result= ad_result*3000; // 參考電壓3000 mV
ad_result= ad_result>>10;
ADC[adc_chan][data_pt]=(uint16)ad_result;
// data_pt++; if(data_pt>=ADC_MAX_POINT) data_pt=0;
IRQEnable(); // 使能IRQ中斷
// TimeElapseStop("Start_ADC_2()");
return ad_result;
}
////////////////////////////////////////////////////////////////////////
void ADC_TestPrn(void)
{
char buffer[200];
static uint8 SecondTick;
if(SecondTick!=DispSecondTick){
SecondTick =DispSecondTick;
sprintf(buffer,"ADC[0]=%d,ADC[1]=%d,ADC[2]=%d,ADC[3]=%d,ADC[4]=%d,ADC[5]=%d,ADC[6]=%d,ADC[7]=%d",
ADC[0][0],ADC[1][0],ADC[2][0],ADC[3][0],ADC[4][0],ADC[5][0],ADC[6][0],ADC[7][0]);
DB_SendString(buffer);
}
}
////////////////////////////////////////////////////////////////////////
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -