Performing an AD Scan

Universal Driver Documentation

Description

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;
...


This page was last modified 15:48, 12 Feb 2004.
Copyright (c) 2004 Diamond Systems. All Rights Reserved.