subclass for ad5242-controlled v-regulators, add calibration data
authorDan White <dan@whiteaudio.com>
Sun, 22 Apr 2012 03:43:26 +0000 (22:43 -0500)
committerDan White <dan@whiteaudio.com>
Sun, 22 Apr 2012 03:43:26 +0000 (22:43 -0500)
python-lib/mpsse-test.py

index 202f470796be4807238f1e5f7d4841d43f14bd76..897f0f498f166edeb834360c72da2b0475afbe9e 100644 (file)
@@ -80,6 +80,52 @@ class AtoiI2C(mpsse.MPSSE):
 
 
 
+class DigiReg(usbio.AD524x):
+    def __init__(self, i2cbus, addr, va=[0.0,1.0], vb=[0.0, 1.0]):
+        super(DigiReg, self).__init__(i2cbus, addr)
+        self.va_min = min(va)
+        self.va_max = max(va)
+        self.vb_min = min(vb)
+        self.vb_max = max(vb)
+        self.posA = 128
+        self.posB = 128
+
+    def _va_getter(self):
+        return ((float(self.posA) / 255) * (self.va_max - self.va_min)
+                + self.va_min)
+
+    def _va_setter(self, value):
+        v = max(value, self.va_min)
+        v = min(v, self.va_max)
+        n = int(round(255 * (v - self.va_min) / (self.va_max - self.va_min)))
+        self.posA = n
+
+    va = property(_va_getter, _va_setter)
+
+    def _vb_getter(self):
+        return ((float(self.posB) / 255) * (self.vb_max - self.vb_min)
+                + self.vb_min)
+
+    def _vb_setter(self, value):
+        v = max(value, self.vb_min)
+        v = min(v, self.vb_max)
+        n = int(round(255 * (v - self.vb_min) / (self.vb_max - self.vb_min)))
+        self.posB = n
+
+    vb = property(_vb_getter, _vb_setter)
+
+    def alias(self, source, dest):
+        if source == 'va':
+            setattr(DigiReg, dest,
+                    property(lambda s: s.va, lambda s,v: s._va_setter(v)))
+            setattr(DigiReg, dest+'_min', self.va_min)
+            setattr(DigiReg, dest+'_max', self.va_max)
+        elif source == 'vb':
+            setattr(DigiReg, dest,
+                    property(lambda s: s.vb, lambda s,v: s._vb_setter(v)))
+            setattr(DigiReg, dest+'_min', self.vb_min)
+            setattr(DigiReg, dest+'_max', self.vb_max)
+
 
 
 
@@ -101,18 +147,24 @@ spi = AtoiSPI0(100e3)
 #spi.SetLoopback(0)
 
 
-i2c = AtoiI2C(100e3)
+i2c = AtoiI2C(10e3)
 
 
 ibias = usbio.AD524x(i2c, 0)
-vatoi = usbio.AD524x(i2c, 2)
-v430 = usbio.AD524x(i2c, 3)
+
+vatoi = DigiReg(i2c, 2, (0.5011, 1.2972), (1.9544, 2.7503))
+vatoi.alias('va', 'vdd')
+vatoi.alias('vb', 'avdd')
+
+v430 = DigiReg(i2c, 3, (1.9539, 2.7325), (0.5006, 1.2776))
+v430.alias('va', 'dvdd')
+v430.alias('vb', 'vdd')
 
 
 #
 # Power supply testing
 #
-if 1:
+if 0:
     v430.posA = 0
     v430.update(True)
     sleep(1)