diff --git a/rd_unb2c.py b/rd_unb2c.py index 13d2b0e945ba195dab205a1c55222757f6f359db..d64a6313edf4fe4174001ffd0ec631c3d38e7f21 100644 --- a/rd_unb2c.py +++ b/rd_unb2c.py @@ -59,24 +59,44 @@ def front_led(value=0xFF): sleep(0.2) front.write_bytes(0x01, 0xf) -def read_pol(i2c_addr): - LOC_PWR = I2C(i2c_addr) - LOC_PWR.bus = I2CBUSNR - ret_ack, ret_value = LOC_PWR.read_bytes(0) +def read_pol(node_nr, i2c_addr): + main_switch = I2C(0x71) + main_switch.bus = I2CBUSNR + ret_ack = main_switch.write_bytes(0x0, 0x01<<node_nr) #select Node if ret_ack < 1: - print("no device found") + print("Main I2C switch not found") else: - pr_stri = "Found device at address 0x{:02x}".format(LOC_PWR.I2C_Address) - print(pr_stri) - ret_ack,ret_value = LOC_PWR.read_bytes(LP_VOUT, 2) - vout = calc_lin_3bytes(ret_value, vout_mod) - print("read = ", vout_mod) - ret_ack,ret_value = LOC_PWR.read_bytes(LP_IOUT, 2) - iout = calc_lin_2bytes(ret_value) - print("Output Current :",iout) - ret_ack,ret_value = LOC_PWR.read_bytes(LP_temp, 2) - temp = calc_lin_2bytes(ret_value) - print("temperature :",temp) + node_switch = I2C(0x72) + node_switch.bus = I2CBUSNR + ret_ack = node_switch.write_bytes(0x0, 0x20) #select DDR4 + if ret_ack < 1: + print("Node I2C switch not found") + else: + LOC_PWR = I2C(i2c_addr) + LOC_PWR.bus = I2CBUSNR + ret_ack, ret_value = LOC_PWR.read_bytes(0) + if ret_ack < 1: + print("no device found") + else: + # pr_stri = "Found device at address 0x{:02x}".format(LOC_PWR.I2C_Address) + # print(pr_stri) + ret_ack, vout_mod = LOC_PWR.read_bytes(LP_VOUT, 2) + # vout_mod = int(vout_mod,16) + # vout = calc_lin_3bytes(ret_value, vout_mod) + ret_ack,raw_value = LOC_PWR.read_bytes(LP_IOUT, 2) + ret_value=[] + ret_value.append(int(raw_value[:2],16)) + ret_value.append(int(raw_value[2:],16)) + iout = calc_lin_2bytes(ret_value) + stri="Output Current :{0:2.2f} A".format(iout) + print(stri) + ret_ack,raw_value = LOC_PWR.read_bytes(LP_temp, 2) + ret_value=[] + ret_value.append(int(raw_value[:2],16)) + ret_value.append(int(raw_value[2:],16)) + temp = calc_lin_2bytes(ret_value) + stri="temperature :{0:2.2f} Deg C".format(temp) + print(stri) def read_ddr(node_nr = 0, module=0): main_switch = I2C(0x71) @@ -140,10 +160,9 @@ def read_qsfp(node_nr = 0, module=0): stri = "Voltage QSFP in slot {0} node {1} is {2:3.2f} V".format(module, node_nr, Power_in_mod) print(stri) -if 0: +if 1: rw_eeprom(0xCD) front_led() -else: for node_cnt in range(4): for module_cnt in range(2): read_ddr(node_nr=node_cnt,module=module_cnt) @@ -151,4 +170,4 @@ else: for qsfp_cnt in range(6): read_qsfp(node_nr = node_cnt, module=qsfp_cnt) for node_cnt in range(4): - read_pol(LOC_POWER_CORE) + read_pol(node_cnt, LOC_POWER_CORE)