@@ -1,6 +1,6 @@
Some processing thoughts:
Some processing thoughts:
grep ^1 log | tail -n +125 > log-locked
zcat log.gz | grep ^1 | tail -n +200000 > log-locked
octave:
octave:
@@ -9,20 +9,20 @@ octave:
t=1:10000;
t=1:10000;
keith=a(:,3);
keith=a(:,3);
calib=a(1,4)
calib=a(1,4)
dac=a(:,5);
dac=a(:,5);
adc=a(:,6);
adc=a(:,6);
meas=-(dac - calib * adc);
meas=-(dac - calib * adc);
plot(keith(t),meas(t))
plot(keith(t),meas(t)) # should be linear
p = polyfit(keith, meas, 1)
p = polyfit(keith, meas, 1)
plot(t,keith(t) * p(1) + p(2),t,meas(t)) # should match
plot(t,keith(t) * p(1) + p(2),t,meas(t))
t=1:len;
t=1:len;
plot(t,keith(t) * p(1) + p(2) - meas(t))
plot(t,keith(t) * p(1) + p(2) - meas(t)) # absolute error (units=dac)
axis([0 len -1 1])
axis([0 len -1 1])
Range is something like +- 0.5 over the entire range (of "DAC values")
Range is something like +- 0.5 over the entire range (of "DAC values")
This gives log(1024 / 0.5) / log(2) = 11 bits
This gives log(1024 / 1.0) / log(2) = 10 bits
No good!
No good!
Now let's convert the DAC values to their more-accurate value using the lookup table
Now let's convert the DAC values to their more-accurate value using the lookup table
@@ -31,10 +31,11 @@ Now let's convert the DAC values to their more-accurate value using the lookup t
meas=-(lookup(dac + 1)/64 - calib * adc);
meas=-(lookup(dac + 1)/64 - calib * adc);
p = polyfit(keith, meas, 1)
p = polyfit(keith, meas, 1)
t=1:len;
t=1:len;
plot(t,keith(t) * p(1) + p(2) - meas(t))
plot(t,keith(t) * p(1) + p(2) - meas(t)) # absolute error (units=dac)
axis([0 len -0.3 0.3])
axis([0 len -0.3 0.3])
Now closer to +- 0.1
Now closer to +- 0.05
This gives log(1024 / 0.1) / log(2) = 13.3 bits
This gives log(1024 / 0.1) / log(2) = 13.3 bits