#dp = k*q1*(p1 - p0)/(q1 - q0)
#dp = k*sign(q1)*abs(p1-p0)
- ia = find(abs(dp) > (r * 2**(-niter)))
- dp.flat[ia] = sign(dp.flat[ia]) * (r * 2**(-niter))
+ max_step = r * 2**(-niter + 1)
+ ia = find(abs(dp) > max_step)
+ if len(ia) > 0: print 'limiting max steps:', ia
+ dp.flat[ia] = sign(dp.flat[ia]) * max_step
#force a +-1 step
ismall = find(abs(dp) <= 1.0)
xi = int(x[0])
mux.otaA.offset = xi
mux.write()
+ #sleep(2.0)
adc.read()
values = []
for i in range(N_SAMPLES):
xi = int(x[0])
mux.otaB.offset = xi
mux.write()
+ #sleep(2.0)
adc.read()
values = []
for i in range(N_SAMPLES):
print values[0:N_CHANNELS]
for i,n in enumerate(values[0]):
chain.h[i].otaA.offset = int(n)
+ chain.h[i].otaA.fast = 1
chain.h[i].cal = 1
chain.h[i].otaA.se = 1
chain.h[i].otaA.cint = 0
for i,n in enumerate(values[1]):
chain.h[i].otaB.offset = int(n)
+ chain.h[i].otaB.fast = 1
chain.h[i].otaB.se = 1
chain.h[i].otaB.cint = 0
chain.h[i].otaB.zero = 0
while True:
if 1:
mux.otaA.mode = mux.otaA.CAL_BUF
+ mux.otaA.fast = 1
mux.otaA.gain = 15
- mux.otaB.mode = mux.otaB.CAL_BUF
- mux.otaB.gain = 15
mux.write()
print
print 'Calibrating mux otaA'
if 1:
- mux.otaA.mode = mux.otaA.CAL_BUF
- mux.otaA.gain = 15
mux.otaB.mode = mux.otaB.CAL_BUF
+ mux.otaB.fast = 1
mux.otaB.gain = 15
mux.write()
print
def vdiff(d):
- dac.vina(vcm - d)
- dac.vinb(vcm + d)
+ dac.vina(vos - d - vdos)
+ dac.vinb(vos + d + vdos)
+c0 = chain.h[0]
-vcm = 1.6
+mux.selA = 0
+mux.selB = 0
+mux.otaA.mode = mux.otaA.MUX_BUF
+mux.otaA.fast = 1
+mux.write()
+
+dac.vbias_core(0.05)
+dac.vbias_buf(0.05)
+
+c0.otaA.fast = 1
+c0.otaA.gain = 0
+c0.otaA.se = 1
+c0.otaB.se = 1
+c0.otaA.cint = 1
+c0.otaA.offset = 0
+chain.write()
+
+
+vcm = 1.25
+vos = vcm + 0.000
+vdos = -0.02
dac.vcmi(vcm)
-dac.vina(vcm)
-dac.vinb(vcm)
+dac.vina(vos)
+dac.vinb(vos)
-itime = 0.400
-htime = 0.020
+itime = 0.150
+htime = 0.050
z()
-for vd in arange(-0.08, 0.08001, 0.020):
+for vd in arange(-0.08, 0.08001, 0.010):
print vd
vdiff(vd)
z()