110 lines
2.9 KiB
Tcl
110 lines
2.9 KiB
Tcl
|
|
proc SetVoltPosStep {steps} {
|
|
|
|
# set llen 16384
|
|
# set steplen [expr{int($llen/(2*$steps))}]
|
|
# set phaselen
|
|
|
|
set l {}
|
|
for {set i 0} {$i < $steps} {incr i} {
|
|
lappend l [expr {($i*2.0/$steps)-1.0}]
|
|
}
|
|
for {set i $steps} {$i > 0} {incr i -1} {
|
|
lappend l [expr {($i*2.0/$steps)-1.0}]
|
|
}
|
|
set s "DATA VOLATILE, "
|
|
for {set i 0} {$i < [expr {[llength $l] -1}]} {incr i} {
|
|
append s [format "%1.3f" [lindex $l $i]] ","
|
|
}
|
|
append s [format "%1.3f" [lindex $l [expr {[llength $l] -1}]]]
|
|
sct_pulser send $s
|
|
broadcast $s
|
|
|
|
}
|
|
|
|
proc SetVoltBiStep {steps} {
|
|
set l {}
|
|
for {set i 0} {$i < $steps} {incr i} {
|
|
lappend l [expr {$i*1.0/$steps}]
|
|
}
|
|
for {set i $steps} {$i > [expr {$steps * -1}]} {incr i -1} {
|
|
lappend l [expr {$i*1.0/$steps}]
|
|
}
|
|
for {set i [expr {$steps * -1}]} {$i < 0} {incr i} {
|
|
lappend l [expr {$i*1.0/$steps}]
|
|
}
|
|
|
|
set s "DATA VOLATILE, "
|
|
for {set i 0} {$i < [expr {[llength $l] -1}]} {incr i} {
|
|
append s [format "%1.3f" [lindex $l $i]] ","
|
|
}
|
|
append s [format "%1.3f" [lindex $l [expr {[llength $l] -1}]]]
|
|
sct_pulser send $s
|
|
broadcast $s
|
|
|
|
|
|
}
|
|
|
|
proc VoltPosStep {volt freq voltsteps} {
|
|
PulserOff
|
|
newfile HISTOGRAM_XYT
|
|
|
|
SetVoltPosStep $voltsteps
|
|
sct_pulser send "VOLT:LOW [VoltScale 0.0]; LOW?"
|
|
sct_pulser send "VOLT:HIGH [VoltScale [expr {$volt*1.0}]]; HIGH?"
|
|
sct_pulser send "FREQ $freq;:FREQ?"
|
|
sct_pulser send "FUNC: USER VOLATILE"
|
|
sct_pulser send "FUNC USER"
|
|
|
|
}
|
|
|
|
|
|
proc UniZigTexture {motor mstart mstep mnum volt freq vstep binmult oscno} {
|
|
histmem mode unlimited
|
|
newfile HISTOGRAM_XYT
|
|
set bins [expr {$vstep * 2 * $binmult}]
|
|
histmem_period_strobo $freq $bins
|
|
wait 3
|
|
# set pulservolt [VoltScale [expr {$volt*1.0}]]
|
|
# set pulseroffs [VoltScale [expr {$volt*0.5}]]
|
|
VoltPosStep $volt $freq $vstep
|
|
|
|
PulserOn
|
|
|
|
for {set i 0} {$i < $mnum} {incr i} {
|
|
drive $motor [expr $i*$mstep+$mstart]
|
|
oct oscillate_count $oscno
|
|
oct oscillate start
|
|
hmm countblock
|
|
save $i
|
|
}
|
|
PulserOff
|
|
}
|
|
|
|
|
|
proc VoltBiStep {volt freq steps} {
|
|
PulserOff
|
|
newfile HISTOGRAM_XYT
|
|
|
|
SetVoltBiStep $steps
|
|
sct_pulser send "VOLT:LOW [VoltScale [expr {$volt*-1.0}]; LOW?"
|
|
sct_pulser send "VOLT:HIGH [VoltScale [expr {$volt*1.0}]; HIGH?"
|
|
sct_pulser send "FREQ $freq;:FREQ?"
|
|
sct_pulser send "FUNC: USER VOLATILE"
|
|
sct_pulser send "FUNC USER"
|
|
set bins [expr {$steps * 4}]
|
|
histmem_period_strobo $freq $bins
|
|
wait 3
|
|
|
|
PulserOn
|
|
oct oscillate_count $oscno
|
|
oct oscillate start
|
|
save 0
|
|
}
|
|
|
|
publish SetVoltPosStep user
|
|
publish SetVoltBiStep user
|
|
publish UniZigTexture user
|
|
publish VoltPosStep user
|
|
publish VoltBiStep user
|