From 4293a31e99b5dfc1dc8668c156c29e56a43b156e Mon Sep 17 00:00:00 2001 From: Gijs Schoonderbeek <schoonderbeek@astron.nl> Date: Tue, 11 May 2021 14:18:59 +0200 Subject: [PATCH] rb_unb2c.py first step classification tested on the HW --- rd_unb2c.py | 98 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 36 deletions(-) diff --git a/rd_unb2c.py b/rd_unb2c.py index b553765..50dccb8 100644 --- a/rd_unb2c.py +++ b/rd_unb2c.py @@ -18,42 +18,55 @@ I2CBUSNR=3 class c_pol: def __init__(self, name): self.name = name - self.vout - self.iout - self.temp - self.pol_dev = I2C(LOC_POLS[name]) + self.vout=0 + self.iout=0 + self.tem=0 + self.pol_dev = I2C(LOC_POLS[self.name]) self.pol_dev.bus = I2CBUSNR + sleep(0.1) ret_ack, ret_value = self.pol_dev.read_bytes(0) if ret_ack < 1: - print("no device found") + stri = " Device {0} at address 0x{1:X} not found".format(self.name, LOC_POLS[self.name]) + print(stri) + self.status=False else: + self.status=True def read_vout(self): - sleep(0.1) - ret_ack, vout_mod = self.pol_dev.read_bytes(LP_VOUT_MODE, 1) - sleep(0.1) - ret_ack, raw_value = self.pol_dev.read_bytes(LP_VOUT, 2) - vout_mod = int(vout_mod,16) - ret_value = [] - ret_value.append(int(raw_value[:2], 16)) - ret_value.append(int(raw_value[2:], 16)) - self.vout = calc_lin_3bytes(ret_value, [vout_mod]) - + if self.status: + sleep(0.1) + ret_ack, vout_mod = self.pol_dev.read_bytes(LP_VOUT_MODE, 1) + sleep(0.1) + ret_ack, raw_value = self.pol_dev.read_bytes(LP_VOUT, 2) + vout_mod = int(vout_mod,16) + ret_value = [] + ret_value.append(int(raw_value[:2], 16)) + ret_value.append(int(raw_value[2:], 16)) + self.vout = calc_lin_3bytes(ret_value, [vout_mod]) + else: + self.vout=999 + def read_iout(self): - sleep(0.1) - ret_ack, raw_value = self.pol_dev.read_bytes(LP_IOUT, 2) - ret_value=[] - ret_value.append(int(raw_value[:2],16)) - ret_value.append(int(raw_value[2:],16)) - self.iout = calc_lin_2bytes(ret_value) + if self.status: + sleep(0.1) + ret_ack, raw_value = self.pol_dev.read_bytes(LP_IOUT, 2) + ret_value=[] + ret_value.append(int(raw_value[:2],16)) + ret_value.append(int(raw_value[2:],16)) + self.iout = calc_lin_2bytes(ret_value) + else: + self.iout=999 def read_temp(self): - sleep(0.1) - ret_ack,raw_value = self.pol_dev.read_bytes(LP_temp, 2) - ret_value=[] - ret_value.append(int(raw_value[:2],16)) - ret_value.append(int(raw_value[2:],16)) - self.temp = calc_lin_2bytes(ret_value) + if self.status: + sleep(0.1) + ret_ack,raw_value = self.pol_dev.read_bytes(LP_temp, 2) + ret_value=[] + ret_value.append(int(raw_value[:2],16)) + ret_value.append(int(raw_value[2:],16)) + self.temp = calc_lin_2bytes(ret_value) + else: + self.temp=999 def read_all(self): self.read_vout() @@ -61,12 +74,13 @@ class c_pol: self.read_temp() def print_status(self): - self.read_all() - stri = "POL: " + self.name + " " - stri += "Output voltage :{0: <5.2f} V ".format(self.vout) - stri += "Output Current :{0: <5.2f} A ".format(self.iout) - stri += "temperature :{0: <5.2f} Deg C".format(self.temp) - print(stri) + if self.status: + self.read_all() + stri = "POL: " + self.name + " " + stri += "Output voltage :{0: <5.2f} V ".format(self.vout) + stri += "Output Current :{0: <5.2f} A ".format(self.iout) + stri += "temperature :{0: <5.2f} Deg C".format(self.temp) + print(stri) def rw_eeprom(value=0xAB): @@ -231,7 +245,19 @@ if 0: else: for node_cnt in range(4): read_pol(node_cnt, LOC_POWER_CORE) - read_pol(-1,0x01) +# read_pol(-1,0x01) -polletje = c_pol(LOC_POWER_CORE) -polletje.print_status() \ No newline at end of file +main_switch = I2C(MAIN_I2C_SWITCH) +main_switch.bus = I2CBUSNR +ret_ack = main_switch.write_bytes(0x0, 0x01) #select Node +if ret_ack < 1: + print("Main I2C switch not found") +else: + node_switch = I2C(NODE_I2C_SWITCH) + node_switch.bus = I2CBUSNR + ret_ack = node_switch.write_bytes(0x0, 0x20) #select DDR4 + if ret_ack < 1: + print("Node I2C switch not found") +for pol in list(LOC_POLS.keys()): + polletje = c_pol(pol) + polletje.print_status() -- GitLab