update
authorDan White <dan@whiteaudio.com>
Tue, 9 Oct 2012 20:36:14 +0000 (15:36 -0500)
committerDan White <dan@whiteaudio.com>
Tue, 9 Oct 2012 20:36:14 +0000 (15:36 -0500)
python-lib/calibrate.py
python-lib/slope-test.py

index d8400611f14f9c339f7830ab3d91f6a18c55d9f3..66cfa3c41db3af5328dff3b00f377f26e0035280 100644 (file)
@@ -102,8 +102,10 @@ def secant_opt(func, x0, limits, x1scale=0.1, maxiter=50, k=1.0):
         #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)
@@ -157,6 +159,7 @@ def mux_a_offset(x, c):
     xi = int(x[0])
     mux.otaA.offset = xi
     mux.write()
+    #sleep(2.0)
     adc.read()
     values = []
     for i in range(N_SAMPLES):
@@ -170,6 +173,7 @@ def mux_b_offset(x, c):
     xi = int(x[0])
     mux.otaB.offset = xi
     mux.write()
+    #sleep(2.0)
     adc.read()
     values = []
     for i in range(N_SAMPLES):
@@ -253,6 +257,7 @@ def chain_offsets(values, converged, mux_offset):
     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
@@ -260,6 +265,7 @@ def chain_offsets(values, converged, mux_offset):
 
     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
@@ -299,9 +305,8 @@ import datetime as dt
 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'
@@ -315,9 +320,8 @@ while True:
 
 
     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
index b369a73316da1c315950dcca7e66094ed38abfc8..9722725cbb009bcfe99ad71ea43bd414892d1f5a 100644 (file)
@@ -8,21 +8,42 @@ def z():
 
 
 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()