3.2 Performing an AD Scan


An A/D scan is similar to an A/D sample except that it performs several conversions on a specified range of input channels with each function call. The Universal Driver function for performing an A/D scan is dscADScan.

Step-By-Step Instructions

Create and initialize an A/D settings structure (DSCADSETTINGS).
Call dscADSetSettings and pass it a pointer to this structure in order to setup the driver for A/D operations.
Create and initialize an A/D scan structure (DSCADSCAN).
Create and initialize a sample buffer of type DSCSAMPLE.
Call dscADScan() and pass it a pointer to your scan structure - this will generate an A/D conversion for each channel in your scan range and the results will be stored in the sample_values element of your DSCADSCAN structure.
NOTE: You must always remember to allocate enough memory for your sample buffer (in this case, the WORD sample_values). The driver assumes that your application has allocated at least the amount of memory given in the following formula:
Memory = sizeof(WORD) * ( high_channel - low_channel + 1 )

Example of Usage for A/D Scan

DSCB dscb;
DSCADSETTINGS dscadsettings;
DSCADSCAN dscadscan;
/* Step 1 */
dscadsettings.current_channel = 0;
dscadsettings.gain = 0;
dscadsettings.range = 0;
dscadsettings.polarity = 0;
dscadsettings.load_cal = 0;
/* Step 2 */
if ((result = dscADSetSettings(dscb, &dscadsettings)) != DE_NONE)
return result;
/* Step 3 */
dscadscan.low_channel = 0;
dscadscan.high_channel = 3;
/* Step 4 */
dscadscan.sample_values = (DSCSAMPLE*)malloc(sizeof(DSCSAMPLE) * (dscadscan.high_channel - dscadscan.low_channel + 1));
memset(dscadscan.sample_values, 0, sizeof(DSCSAMPLE) *(dscadscan.high_channel - dscadscan.low_channel + 1));
/* Step 5 */
if ((result = dscADScan(dscb, &dscadscan, dscadscan.sample_values)) != DE_NONE)
return result;