From: Dan White Date: Sun, 22 Apr 2012 03:43:26 +0000 (-0500) Subject: subclass for ad5242-controlled v-regulators, add calibration data X-Git-Tag: calibrations~103 X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=491931ba2e9dec23580878357dd40928095f7585;p=430.git subclass for ad5242-controlled v-regulators, add calibration data --- diff --git a/python-lib/mpsse-test.py b/python-lib/mpsse-test.py index 202f470..897f0f4 100644 --- a/python-lib/mpsse-test.py +++ b/python-lib/mpsse-test.py @@ -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)