Ds4830a user’s guide – Maxim Integrated DS4830A Optical Microcontroller User Manual
Page 64
DS4830A User’s Guide
64
ADST_bit.ADCFG = 0;
//set ADDATA to data buffer
ADADDR_bit.ADSTART = 0; //start sequence with ADCFG [0]
ADADDR_bit.ADEND = 15; //end sequence with ADCFG [15]
ADST_bit.ADCONV = 1;
//start the conversions
while (1)
{
while (!ADST_bit.ADDAI); //wait for conversions to complete
ADST_bit.ADDAI = 0;
ADST_bit.ADIDX = 0;
//set ADDATA to data buffer [0]
for (iCount = 0; iCount < 16; iCount++)
ch0 [iCount]= ADDATA; //read and store ch0 voltage to variable
}
7.3.3 – Continuous Conversion of 16 Samples of Ch0 Using ADC Averaging
PINSEL = 0x0003;
//Configure Pins as ADC Ch0 (Diff)
REFAVG_bit.INTREF = 1;
//Enable ADC internal reference
for(iCounter = 0; iCounter < 1000; iCounter++); //Wait ~1ms to settle ADC internal reference
ADCN_bit.ADCONT = 1;
//run a continuous conversion sequence
ADST_bit.ADCFG = 1;
//set ADDATA as configuration (ADCFG)
ADST_bit.ADIDX = 0;
//ADIDX = 0, set to ADCFG [0]
ADDATA = 0x0020;
//ADCFG [0]: Differential voltage, CH0, 1.2 V FS, Right Aligned
ADST_bit.ADCFG = 0;
//set ADDATA to data buffer
ADST_bit.ADCAVG = 1;
//set ADDATA to data buffer
ADDATA = 0x0003;
// Average of 16 samples of Ch0
ADST_bit.ADCAVG
= 0;
ADADDR_bit.ADSTART = 0;
//start sequence with ADCFG[0]
ADADDR_bit.ADEND = 0;
//end sequence with ADCFG[0]
ADST_bit.ADCONV = 1;
//start the conversions
while (1)
{
while (!ADST1_bit.ADDAI);
//wait for conversions to complete
ADST_bit.ADIDX = 0;
//set ADDATA to data buffer [0]
ch0 = ADDATA;
//read and store ch0 voltage to variable
ADST1_bit.ADDAI = 0;
//clear ADDAI flag
}