From 08aa6505581b852964eb72c5a68a11935c76c3d6 Mon Sep 17 00:00:00 2001 From: Gijs Schoonderbeek <schoonderbeek@astron.nl> Date: Fri, 20 Jan 2023 17:50:33 +0100 Subject: [PATCH] update during testing APSPU from production --- APSPU_I2C.py | 3 ++- I2C_serial_pi.py | 28 +++++++++++++++------------- I2C_serial_pi2.py | 17 ++++++++++++++++- apspu_lib.py | 11 +++++++++-- 4 files changed, 42 insertions(+), 17 deletions(-) diff --git a/APSPU_I2C.py b/APSPU_I2C.py index 7d3584d..4362f40 100644 --- a/APSPU_I2C.py +++ b/APSPU_I2C.py @@ -56,7 +56,8 @@ LP_VOUT_UV_LIMIT = 0x44 LP_STORE_USER_ALL = 0x15 LP_ON_OFF_CONFIG = 0x02 LP_OPERATION = 0x01 - +LP_WRITE_PROTECT = 0x10 +LP_STORE_DEFAULT_ALL = 0x12 # # Central I2C Devices # diff --git a/I2C_serial_pi.py b/I2C_serial_pi.py index 6aaa3f5..010041a 100644 --- a/I2C_serial_pi.py +++ b/I2C_serial_pi.py @@ -42,11 +42,11 @@ class I2C: ret_ack = 1 if SLOW: sleep(0.2) - except IOError, err: + except IOError: ret_ack = 0 ret_value = 'ffff' if DEBUG: - print("Reading error") + print("Reading IO-error") return ret_ack, ret_value @@ -60,27 +60,29 @@ class I2C: ret_ack = 1 if SLOW: sleep(0.2) - except IOError, err: + except IOError: ret_ack = 0 rd_value.append(0) if DEBUG: - print("Reading error") + print("IO-Reading error") for cnt in range(bytes_to_read): ret_value += (hex(rd_value[cnt])[2:]) return ret_ack,ret_value def write_bytes(self, register, data): bus = smbus.SMBus(self.bus_nr) + if type(data) is not list: + data = [data] try: - bus.write_i2c_block_data(self.I2C_Address, register, [data]) + bus.write_i2c_block_data(self.I2C_Address, register, data) ret_ack = 1 if SLOW: sleep(0.3) - except IOError, err: + except IOError: ret_ack = 0 ret_value = 0 if DEBUG: - print("Write error") + print("Write IO-error") return ret_ack def write_register(self, register): @@ -90,11 +92,11 @@ class I2C: ret_ack = 1 if SLOW: sleep(0.3) - except IOError, err: + except IOError: ret_ack = 0 ret_value = 0 if DEBUG: - print("Write error") + print("Write IO-error") return ret_ack def write_pointer(self, register): @@ -104,11 +106,11 @@ class I2C: ret_ack = 1 if SLOW: sleep(0.3) - except IOError, err: + except IOError: ret_ack = 0 ret_value = 0 if DEBUG: - print("Write error") + print("Write IO-error") return ret_ack def ack_check(self): @@ -119,11 +121,11 @@ class I2C: ret_ack = 1 if SLOW: sleep(0.3) - except IOError, err: + except IOError: ret_ack = 0 ret_value = 0 if DEBUG: - print("No ACK") + print("No ACK IO-Error") return ret_ack if __name__ == "__main__": diff --git a/I2C_serial_pi2.py b/I2C_serial_pi2.py index 5ae5af3..4da3bf4 100644 --- a/I2C_serial_pi2.py +++ b/I2C_serial_pi2.py @@ -97,7 +97,8 @@ class I2C: def write_pointer(self, register): bus = pi.i2c_open(self.bus_nr, self.I2C_Address) try: - pi.i2c_read_device(bus, 1) +# pi.i2c_read_device(bus, 1) + pi.i2c_read_device(bus, register) ret_ack = 1 if SLOW: sleep(0.3) @@ -109,6 +110,20 @@ class I2C: pi.i2c_close(bus) return ret_ack + def write_register(self, register): + bus = pi.i2c_open(self.bus_nr, self.I2C_Address) + try: + ret_value = pi.i2c_write_device(bus, [register]) + ret_ack = 1 + if SLOW: + sleep(0.3) + except IOError: + ret_ack = 0 + ret_value = 0 + if DEBUG: + print("No ACK") + return ret_ack + def ack_check(self): bus = smbus.SMBus(self.bus_nr) try: diff --git a/apspu_lib.py b/apspu_lib.py index 4cb45a8..57e76c9 100644 --- a/apspu_lib.py +++ b/apspu_lib.py @@ -25,7 +25,7 @@ from APSPU_I2C import * if os.name == "posix": - from I2C_serial_pi2 import * + from I2C_serial_pi import * else: from I2C_serial import * @@ -84,6 +84,7 @@ class ApspuClass: f"set {1.2*VOUT_POLS[pol.name]} read back {ov_out}") exit() pol.set_on_off_config() + pol.on_off(True) pol.write_to_nvm() print("Done") @@ -269,6 +270,7 @@ class PolClass: # ret_ack = False if self.status: + ret_ack = self.pol_dev.write_bytes(LP_WRITE_PROTECT, [0]) set_value = int(value * (2**11)) hex_set_value = hex(set_value) wr_value = (hex_set_value[4:6] + hex_set_value[2:4]) @@ -306,7 +308,12 @@ class PolClass: # # return is always True # - ret_ack = self.pol_dev.write_bytes(LP_STORE_USER_ALL, 0) + ret_ack = self.pol_dev.write_register(0x15) +# command = f"i2cset -y 1 0x{CTR_POLS[self.name]:02X} 0x15 cp" +# print(command) +# os.system(command) +# os.system(command) + sleep(5) return True def read_vin(self): -- GitLab