Tektronix Technical Forums are maintained by community involvement. Feel free to post questions or respond to questions by other members. Should you require a time-sensitive answer, please contact your local Tektronix support center here.

Sweep of trains of current pulses

Models 2601, 2602, 2611, 2612, 2635, 2636
Models 2601A, 2602A, 2611A, 2612A, 2635A, 2636A
Models 2601B, 2602B, 2604B, 2611B, 2612B, 2614B, 2634B, 2635B, 2636B
Post Reply
Posts: 2
Joined: October 13th, 2020, 2:30 am
Country: Italy

Sweep of trains of current pulses

Post by AndreaOtto » October 13th, 2020, 6:28 am

Dear all,

My goal is to create a TSB code for consecutive trains (n repetition) of square current pulses in which the current level is increased step by step (i.e. a sweep of current pulses, not single but train).

I am currently using the code reported below which is able to produce a train (finite or infinite) of square current pulses at a fixed value of current, but I am not able to implement it to generate a sweep of trains without going into conflict with the following step of the sweep.

Thanks in advance for any kind answer to solve this issue.

This is the actual code I am using:


--set current to 1 mA
iLevel = 1e-3

smua.sense = smua.SENSE_LOCAL -- 4-wire sense; change to SENSE_LOCAL for 2-wire sense
smua.source.rangei = 0.1
smua.source.leveli = 0 -- Idle source level
smua.source.limitv = 50 -- Idle compliance limit
smua.measure.rangev =20 -- Set based on max pulse or sweep level and load resistance
smua.source.delay = 100e-6
trigger.timer[1].delay = 0.05 -- Period Timer 50 msec.
trigger.timer[1].stimulus = smua.trigger.ARMED_EVENT_ID
trigger.timer[1].count = 1
trigger.timer[1].passthrough = true
trigger.timer[2].delay = 0.025 -- Pulse Width Timer 2.5 msec.
trigger.timer[2].stimulus = trigger.timer[1].EVENT_ID
trigger.timer[2].count = 1
trigger.timer[2].passthrough = false
--smua.trigger.source.lineari(iLevel,stop,PulseCount) -- linearX (start, stop, points); generates pulse train if stop=start 5 pulse at 1 volt
--smua.trigger.source.levelv(Vpulse) --Set pulse voltage level
smua.trigger.source.limiti = 0.1 --5 -- Use this attribute to perform EOA pulse mode sweeps.
smua.trigger.arm.stimulus = 0 -- Equivalent of IMMEDIATE
smua.trigger.arm.count = 0 -- 0 for infinite
smua.trigger.source.action = smua.ENABLE -- Enable source action in smua trigger model
smua.trigger.source.stimulus = trigger.timer[1].EVENT_ID -- Source stimulus is Period Timer
smua.trigger.count = 1 --PulseCount
smua.trigger.endpulse.action = smua.SOURCE_IDLE -- SOURCE_IDLE for Pulse or SOURCE_HOLD for staircase
smua.trigger.endpulse.stimulus = trigger.timer[2].EVENT_ID -- Endpulse controlled by Pulse Width Timer
smua.trigger.endsweep.action = smua.SOURCE_HOLD -- Controls source action at end of sweep
-- Stay at last set level (HOLD) or go to idle level (IDLE)
--smua.trigger.measure.iv(smua.nvbuffer1,smua.nvbuffer2) --Configures measurements to be made in subsequent sweep
--smua.trigger.measure.action = smua.ENABLE -- Disable/Enable measure action in smua trigger model
smua.source.output = smua.OUTPUT_ON



Andrea C
Keithley Applications
Keithley Applications
Posts: 1490
Joined: October 15th, 2010, 10:35 am
Country: United States

Re: Sweep of trains of current pulses

Post by Andrea C » October 21st, 2020, 5:31 am

Once you start the smua.trigger.initiate(), the trigger model will not look for any new source values to output.
I'm assuming you are using this commmand to program what level of current is sourced: --smua.trigger.source.listi({iLevel})

Running it with an arm count of zero/infinite running, you'd have to abort the operation and then restart it with new iLevel.

Can your experiment deal with interruption?

If you know ahead of time all the values, you could build a list:

iLevel = {level1, level1, level1, level2, level2, level2, etc.}

In this case the trigger count and timer1 count would be equal to the number of values in iLevel and the arm count goes to 1 (unless you want to repeat the entire list.

Posts: 2
Joined: October 13th, 2020, 2:30 am
Country: Italy

Re: Sweep of trains of current pulses

Post by AndreaOtto » October 27th, 2020, 4:34 am

Dear Andrea C,

Thanks a lot for your reply. I think the solution you suggest is practicable.
Nevertheless, when I insert the list of fixed values and I run the code a 104 error (data type error) appears. In this case I have also changed the pulse train from infinite to a finite number of pulses.

How I should further modify the code?

Is it possible to implement a cycle using for example the "repeat" or "for" syntax? For the moment, trying to implement this, I still find the same problem as before (error 5042, overlapped operations).

Best regards

Post Reply

Return to “2600 Series SourceMeter”

Who is online

Users browsing this forum: No registered users and 0 guests