+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)
+
#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)