4-14 Agilent B1500 VXIplug&play Driver User’s Guide, Edition 3
Programming Examples for C++ Users
Staircase Sweep Measurement
ret = agb1500_setSwitch(vi, drain, 1); /* 38 */
ret = agb1500_setSwitch(vi, gate, 1);
ret = agb1500_setSwitch(vi, source, 1);
ret = agb1500_setSwitch(vi, bulk, 1);
check_err (vi, ret); /* 42 */
ret = agb1500_resetTimestamp(vi); /* 44 */
ret = agb1500_force(vi, bulk, agb1500_VF_MODE, 0, 0, 0.1, 0);
ret = agb1500_force(vi, source, agb1500_VF_MODE, 0, 0, 0.1, 0);
for (j = 0; j < nop2; j++){ /* 48 */
dvg[j] = (j + 1) * vg / nop2;
ret = agb1500_force(vi, gate, agb1500_VF_MODE, 0, dvg[j], igcomp, 0);
ret = agb1500_setIv(vi, drain, agb1500_SWP_VF_SGLLIN, 0, 0, vd, nop1, hold,
delay, s_delay, idcomp, p_comp);
check_err (vi, ret);
ret = agb1500_sweepIv(vi, drain, agb1500_IM_MODE, 0, &rep, &sc[i], &md[i],
&st[i], &tm[i]);
check_err (vi, ret);
if ( rep = nop1 ) {
i = i + nop1;
}
else {
printf ("%d measurement steps were returned.\nIt must be %d steps.\n", rep,
nop1);
ret = agb1500_zeroOutput(vi, agb1500_CH_ALL);
ret = agb1500_setSwitch(vi, agb1500_CH_ALL, 0);
check_err (vi, ret);
exit (ret);
}
} /* 67 */
ret = agb1500_zeroOutput(vi, agb1500_CH_ALL); /* 69 */
check_err (vi, ret);
Line Description
38 to 41 Enables measurement channels.
44 Resets time stamp.
45 to 46 Applies voltage to device.
48 to 67 Applies dc voltage and sweep voltage, and performs staircase sweep measurement.
After that, disables all ports and stops the program execution if the number of
returned data is not equal to the nop1 value.
69 Sets the specified port to the zero output state.
42 and 70 Calls the check_err subprogram (shown in Table 4-1) to check if an error status is
returned for the previous line.