Class Contact
- Namespace
- CsraTestMethods.Resistance
- Assembly
- CsraTestMethods.dll
[TestClass(Creation.TestInstance)]
[Serializable]
public class Contact : TestCodeBase
- Inheritance
-
TestCodeBaseContact
- Inherited Members
-
TestCodeBase.AbortTest()TestCodeBase.DebugBreak()TestCodeBase.TheExecTestCodeBase.TheHdwTestCodeBase.TheProgramTestCodeBase.FlowDomainsTestCodeBase.ShouldRunPreBodyTestCodeBase.ShouldRunBodyTestCodeBase.ShouldRunPostBody
Methods
Baseline(PinList, string, double, double, double, double, double, double, string)
Performs a resistance measurement by forcing two values of voltage or current and measuring two currents or voltages.
[TestMethod]
[Steppable]
[CustomValidation]
public void Baseline(PinList forcePin, string forceMode, double forceFirstValue, double forceSecondValue, double clampValueOfForcePin, double measureFirstRange, double measureSecondRange, double waitTime = 0, string setup = "")
Parameters
forcePinPinListPin to force and measure.
forceModestringThe mode for forcing (e.g., Voltage or Current).
forceFirstValuedoubleFirst value to force.
forceSecondValuedoubleSecond value to force.
clampValueOfForcePindoubleClamp Value of the force pin. May also set its range.
measureFirstRangedoubleThe range for first measurement.
measureSecondRangedoubleThe range for second measurement.
waitTimedoubleOptional. The wait time after forcing.
setupstringOptional. The name of the setup set to be applied through the setup service.
Details
Test Technique
- to be added
Implementation
The PreBody section applies levels and timing from the test instance context. Optionally, applies the specified config. For all pins specified in the forcePin it disconnects any pin electronics, connects the dc path and turns on the gate.
The Body section applies a force current or voltage depending on the forceMode, sets the meter block and performs a voltage or current measurement on all pins specified in the forcePin in parallel after the specified waitTime. Settings are applied twice serially to achieve the delta between measurements. Finally, the resistance is calculated according to the forced values and the measured values.
The PostBody section restores the pin electronics connection for digital pins after gating off and disconnecting the dc path. Finally, a parametric datalog is logged.
Platform Specifics
Supports stepping capability for PreBody/Body/PostBody.
Pre Conditions
- none
Post Conditions
- any dc paths from pins in
forcePinare disconnected
Limitations
- support for non-uniform (mixed) instrument types in pinList not yet available
Code Reference
[TestMethod, Steppable, CustomValidation]
public void Baseline(PinList forcePin, string forceMode, double forceFirstValue, double forceSecondValue, double clampValueOfForcePin,
double measureFirstRange, double measureSecondRange, double waitTime = 0.0, string setup = "") {
if (TheExec.Flow.IsValidating) {
TheLib.Validate.Pins(forcePin, nameof(forcePin), out _pinsFirst);
TheLib.Validate.Enum(forceMode.ToLower(), nameof(forceMode), out _outputMode);
_measureMode = _outputMode == DcOutputMode.ForceVoltage ? DcMeterMode.Current : DcMeterMode.Voltage;
_forceFirst = new PinSite<double>(forcePin, forceFirstValue);
_forceSecond = new PinSite<double>(forcePin, forceSecondValue);
_containsDigitalPins = _pinsFirst.ContainsFeature(InstrumentFeature.Digital);
}
if (ShouldRunPreBody) {
TheLib.Setup.LevelsAndTiming.Apply(true);
Services.Setup.Apply(setup);
if (_containsDigitalPins) TheLib.Setup.Digital.Disconnect(_pinsFirst);
TheLib.Setup.Dc.Connect(_pinsFirst);
}
if (ShouldRunBody) {
TheLib.Setup.Dc.SetForceAndMeter(_pinsFirst, _outputMode, forceFirstValue, forceFirstValue, clampValueOfForcePin, _measureMode,
measureFirstRange);
TheLib.Execute.Wait(waitTime);
_measFirst = TheLib.Acquire.Dc.Measure(_pinsFirst);
TheLib.Setup.Dc.SetForceAndMeter(_pinsFirst, _outputMode, forceSecondValue, forceSecondValue, clampValueOfForcePin, _measureMode,
measureSecondRange, false);
TheLib.Execute.Wait(waitTime);
_measSecond = TheLib.Acquire.Dc.Measure(_pinsFirst);
_resistanceValue = (_outputMode == DcOutputMode.ForceVoltage) ? (_forceFirst - _forceSecond) / (_measFirst - _measSecond) :
(_measFirst - _measSecond) / (_forceFirst - _forceSecond);
}
if (ShouldRunPostBody) {
TheLib.Setup.Dc.Disconnect(_pinsFirst);
if (_containsDigitalPins) TheLib.Setup.Digital.Connect(_pinsFirst);
TheLib.Datalog.TestParametric(_resistanceValue);
}
}