void ADC_Init(BYTE bCh)
{
//ad6 数字输入检测模式
ATDDIEN = 0xFFFF & (~bCh); //AN6开启输入模式
ATDCTL1 = 0x3F; //选用10位模数转换,放电检测模式
ATDCTL2 = 0x40; //启动A/D转换,快速清零,禁止中断
ATDCTL3 = 0x88; //每次转换1个通道,右对齐模式
ATDCTL4 = (BUS_CLOCK / (ADC_CLK * 2) - 1) | 0x60; //10周期扫描,AD模块时钟频率为2MHz BUS_CLOCK / 4000000 -1 = ATDOCTL4
#ifndef MULTI_CHANNEL
ATDCTL5 = 0x0F & bCh; //转换AD00和AD01,单次转换模式
#else
#endif
}
/*--------------------------------------------------------------------------*/
/* @(p) */
/* NAME : XXXXXXX */
/* FUNCTION : This is the initialization function of the XX module */
/* RETURN : none */
/* ARGUMENT : none */
/* CREATE : XXXX 2013/06/21 */
/* UPDATE : */
/* REMARK : */
/*--------------------------------------------------------------------------*/
void ADC_Close(void)
{
//ATDCTL5 &= 0xCF;
}
SHORT ADC_StartConvert(BYTE bCh)
{
WORD wErrTime = 0;
ATDCTL5 = 0x0F & bCh;
//VOL1 超时故障
for(wErrTime=0; wErrTime<ADC_ERRTIME; wErrTime++)
{
if(ATDSTAT0_SCF==1) //TXREG EMPTY
{
break;
}
}
if(wErrTime < ADC_ERRTIME)
{
m_wADin = (WORD)(*((WORD*)ADC_BASE_ADDR ));
ATDSTAT0_SCF = 1;
}
else
{
//g_stcSYSFaultFlag.bTempSensorFaultFlag = 1;
//counter
//while(1);
return -1;
}
return (m_wADin);
}
|