📄 adc.c
字号:
#include "2410addr.h"
#include "def.h"
#define ADC_FREQ 2500000
volatile U32 preScaler;
int ReadAdc(int ch){
rADCCON = (1<<14)|(preScaler<<6)|((ch&0x7)<<3); //setup channel
rADCCON |= 0x1; //start ADC
while (rADCCON & 0x1); //check if Enable_start is low
while (!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high
return ( (int)rADCDAT0 & 0x3ff );
}
void Main(void){
int Val, i;
ChangeClockDivider(1,1); // 1:2:4
ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz
Port_Init();
Uart_Init(0,115200);
Uart_Select(0);
Delay(0); // calibrate Delay()
Uart_Printf("\nAN2410SSB ADC test\n");
preScaler = ADC_FREQ;
Uart_Printf("ADC conv. freq. = %dHz\n",preScaler);
preScaler = PCLK/ADC_FREQ -1; //PCLK:50.7MHz
Uart_Printf("PCLK/ADC_FREQ - 1 = %d\n",preScaler);
while (1){
for (Val = 0,i = 0; i < 10; i++)
Val += ReadAdc(0);
Uart_Printf("AIN0 is %d mV\n",Val*330/1024);
Delay(10000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -