Skip to content

Commit

Permalink
Merge pull request #1998 from AllenInstitute/bugfix/1998-always-zero-dac
Browse files Browse the repository at this point in the history
MIES_TestPulse_Single.ipf: Zero DAC after stopping acquisition
  • Loading branch information
t-b authored Feb 14, 2024
2 parents 77b2eee + 89c9b6d commit 7abc556
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 2 deletions.
4 changes: 2 additions & 2 deletions Packages/MIES/MIES_TestPulse_Single.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Function TPS_TestPulseFunc(s)
// nothing
while (HW_ITC_MoreData(deviceID, flags=(HARDWARE_ABORT_ON_ERROR)))

HW_StopAcq(HARDWARE_ITC_DAC, deviceID, prepareForDAQ = 1)
HW_StopAcq(HARDWARE_ITC_DAC, deviceID, prepareForDAQ = 1, zeroDAC = 1, flags = HARDWARE_ABORT_ON_ERROR)

SCOPE_UpdateOscilloscopeData(device, TEST_PULSE_MODE)

Expand Down Expand Up @@ -160,7 +160,7 @@ Function TPS_StartTestPulseForeground(device, [elapsedTime])
// nothing
while (HW_ITC_MoreData(deviceID, flags=(HARDWARE_ABORT_ON_ERROR)))

HW_StopAcq(HARDWARE_ITC_DAC, deviceID, prepareForDAQ = 1)
HW_StopAcq(HARDWARE_ITC_DAC, deviceID, prepareForDAQ = 1, zeroDAC = 1, flags = HARDWARE_ABORT_ON_ERROR)
SCOPE_UpdateOscilloscopeData(device, TEST_PULSE_MODE)

SCOPE_UpdateGraph(device, TEST_PULSE_MODE)
Expand Down
47 changes: 47 additions & 0 deletions Packages/tests/HardwareBasic/UTF_BasicHardwareTests.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,53 @@ static Function ChangeStimSetDuringDAQ_REENTRY([str])
CheckDAQStopReason(str, DQ_STOP_REASON_FINISHED, sweepNo = 2)
End

// UTF_TD_GENERATOR v0:SingleMultiDeviceDAQ
// UTF_TD_GENERATOR s0:DeviceNameGenerator
static Function DAQZerosDAC([STRUCT IUTF_MDATA &md])
STRUCT DAQSettings s
InitDAQSettingsFromString(s, "MD" + num2str(md.v0) + "_RA0_I0_L0_BKG1" + \
"__HS0_DA0_AD0_CM:IC:_ST:StimulusSetA_DA_0:")

AcquireData_NG(s, md.s0)
End

static Function DAQZerosDAC_REENTRY([STRUCT IUTF_MDATA &md])

variable deviceID, hardwareType, sweepNo, index, ADC, DAC
string device

device = md.s0

CHECK_EQUAL_VAR(ROVar(GetDataAcqRunMode(device)), DAQ_NOT_RUNNING)
CHECK_EQUAL_VAR(ROVar(GetTestpulseRunMode(device)), TEST_PULSE_NOT_RUNNING)

sweepNo = AFH_GetLastSweepAcquired(device)
CHECK_EQUAL_VAR(sweepNo, 0)

WAVE numericalValues = GetLBNumericalValues(device)

[WAVE settings, index] = GetLastSettingChannel(numericalValues, $"", sweepNo, "ADC", 0, XOP_CHANNEL_TYPE_ADC, DATA_ACQUISITION_MODE)
CHECK_WAVE(settings, NUMERIC_WAVE)
ADC = settings[index]

[WAVE settings, index] = GetLastSettingChannel(numericalValues, $"", sweepNo, "DAC", 0, XOP_CHANNEL_TYPE_DAC, DATA_ACQUISITION_MODE)
CHECK_WAVE(settings, NUMERIC_WAVE)
DAC = settings[index]

DFREF dataDFR = GetDeviceDataPath(device)
DFREF sweepDFR = GetSingleSweepFolder(dataDFR, sweepNo)

// we end the DAC data with high
WAVE/Z DACWave = GetDAQDataSingleColumnWave(sweepDFR, XOP_CHANNEL_TYPE_DAC, DAC)
CHECK_GE_VAR(DACWave[inf], 0.9)

deviceID = ROVar(GetDAQDeviceID(device))
hardwareType = GetHardwareType(device)

// but due to zeroDAC being on we end with around zero
CHECK_LE_VAR(HW_ReadADC(hardwareType, deviceID, ADC), 0.01)
End

// Using unassociated channels works
// UTF_TD_GENERATOR DeviceNameGeneratorMD1
static Function UnassociatedChannelsAndTTLs([str])
Expand Down
37 changes: 37 additions & 0 deletions Packages/tests/HardwareBasic/UTF_TestPulseAndTPDuringDAQ.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -1271,3 +1271,40 @@ static Function TPDuringDAQwithPS_REENTRY([str])

CHECK_EQUAL_WAVES(stimScale, {tpAmp, daGain, NaN, NaN, NaN, NaN, NaN, NaN, NaN}, mode = WAVE_DATA)
End

// UTF_TD_GENERATOR v0:SingleMultiDeviceDAQ
// UTF_TD_GENERATOR s0:DeviceNameGenerator
static Function TPZerosDAC([STRUCT IUTF_MDATA &md])
STRUCT DAQSettings s
InitDAQSettingsFromString(s, "MD" + num2str(md.v0) + "_RA1_I0_L0_BKG1_TP1" + \
"__HS0_DA0_AD0_CM:IC:_ST:StimulusSetA_DA_0:")

AcquireData_NG(s, md.s0)

CtrlNamedBackGround StopTPAfterFiveSeconds, start=(ticks + TP_DURATION_S * 60), period=1, proc=StopTPAfterFiveSeconds_IGNORE
End

static Function TPZerosDAC_REENTRY([STRUCT IUTF_MDATA &md])

variable deviceID, hardwareType, sweepNo, index, ADC
string device

device = md.s0

CHECK_EQUAL_VAR(ROVar(GetDataAcqRunMode(device)), DAQ_NOT_RUNNING)
CHECK_EQUAL_VAR(ROVar(GetTestpulseRunMode(device)), TEST_PULSE_NOT_RUNNING)

sweepNo = AFH_GetLastSweepAcquired(device)
CHECK_EQUAL_VAR(sweepNo, NaN)

WAVE numericalValues = GetLBNumericalValues(device)

[WAVE settings, index] = GetLastSettingChannel(numericalValues, $"", sweepNo, "ADC", 0, XOP_CHANNEL_TYPE_ADC, TEST_PULSE_MODE)
CHECK_WAVE(settings, NUMERIC_WAVE)

deviceID = ROVar(GetDAQDeviceID(device))
hardwareType = GetHardwareType(device)
ADC = settings[index]

CHECK_LE_VAR(HW_ReadADC(hardwareType, deviceID, ADC), 0.01)
End
1 change: 1 addition & 0 deletions ctags.cnf
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
--exclude=tools/installer/*
--exclude=Packages/igortest/internal_dev/*
--exclude=Packages/igortest/docu/*
--exclude=Packages/igortest/tests/*

0 comments on commit 7abc556

Please sign in to comment.