diff --git a/I2C_serial_pi.py b/I2C_serial_pi.py index 64a3f3f5af19d4134e0f9b9f36c58fbe889b98c4..6aaa3f5e84e50025927e29e38035072ea98e9328 100644 --- a/I2C_serial_pi.py +++ b/I2C_serial_pi.py @@ -83,6 +83,20 @@ class I2C: print("Write error") return ret_ack + def write_register(self, register): + bus = smbus.SMBus(self.bus_nr) + try: + bus.write_i2c_block_data(self.I2C_Address, register, []) + ret_ack = 1 + if SLOW: + sleep(0.3) + except IOError, err: + ret_ack = 0 + ret_value = 0 + if DEBUG: + print("Write error") + return ret_ack + def write_pointer(self, register): bus = smbus.SMBus(self.bus_nr) try: diff --git a/Setserial.sh b/Setserial.sh new file mode 100644 index 0000000000000000000000000000000000000000..74a73fb92d54dc5a75660d474a0367845269fb87 --- /dev/null +++ b/Setserial.sh @@ -0,0 +1,5 @@ +python set_serial.py 5 "APSCT-1.0" 0 +python set_serial.py 5 "467" 32 + +python set_serial.py 4 "APSPU-1.0" 0 +python set_serial.py 4 "467" 32 diff --git a/set_rcu2_via_PCC_serial.py b/set_rcu2_via_PCC_serial.py new file mode 100644 index 0000000000000000000000000000000000000000..8f5b8ebadd07252bed7db35190d157d5011ac695 --- /dev/null +++ b/set_rcu2_via_PCC_serial.py @@ -0,0 +1,60 @@ +''' +Set RCU2 version via PCC. RCU number from commandline + +''' +import sys +import time +sys.path.insert(0,'.') +import os +if os.name == "posix": + from I2C_serial_pi import * +else: + from I2C_serial import * + +sleep_time=0.05 + +Nrcu=int(sys.argv[1]) if len(sys.argv)>1 else 0 +version=sys.argv[2] if len(sys.argv)>2 else "" + + +EEPROM_ADDR = 0x50 +SWITCH_ADDR = 0x70 +I2CBUSNR = 1 +LEN=16 +REGISTER=0x20 + + +def set_switch(addr_switch, RCU_nr): + I2C_device = I2C(addr_switch, BUSNR=I2CBUSNR) + I2C_device.write_register(1 << RCU_nr) + ret_ack, ret_value = I2C_device.read_last_reg(1) + print(ret_value) + + +def rw_eeprom(value): + I2C_eeprom = I2C(EEPROM_ADDR, BUSNR=I2CBUSNR) + if len(value)>0: + for i,v in enumerate(bytearray(value)): + print(i,hex(v)) + I2C_eeprom.write_bytes(i+REGISTER,v) + sleep(0.1) + for i in range(len(value),LEN): + I2C_eeprom.write_bytes(i+REGISTER,0xff) + sleep(0.1) + v2=[] + sleep(0.1) + I2C_eeprom.write_register(REGISTER) + sleep(0.1) + ret_ack, ret_value = I2C_eeprom.read_last_reg(LEN) + if ret_ack: + stri = "EEPROM readback : {} ".format(ret_value) + print(stri) + else: + print("READBACK failed") + +if len(version)>LEN: version=version[:LEN] +print("Set RCU number %i version to '%s'" % (Nrcu,version)); + +set_switch(SWITCH_ADDR, Nrcu) +rw_eeprom(version) + diff --git a/set_rcu2_via_PCC_version.py b/set_rcu2_via_PCC_version.py new file mode 100644 index 0000000000000000000000000000000000000000..7fbdfde46f902e3d853af4bde6a924770b2e1b2a --- /dev/null +++ b/set_rcu2_via_PCC_version.py @@ -0,0 +1,60 @@ +''' +Set RCU2 version via PCC. RCU number from commandline + +''' +import sys +import time +sys.path.insert(0,'.') +import os +if os.name == "posix": + from I2C_serial_pi import * +else: + from I2C_serial import * + +sleep_time=0.05 + +Nrcu=int(sys.argv[1]) if len(sys.argv)>1 else 0 +version=sys.argv[2] if len(sys.argv)>2 else "" + + +EEPROM_ADDR = 0x50 +SWITCH_ADDR = 0x70 +I2CBUSNR = 1 +LEN=16 + + + +def set_switch(addr_switch, RCU_nr): + I2C_device = I2C(addr_switch, BUSNR=I2CBUSNR) + I2C_device.write_register(1 << RCU_nr) + ret_ack, ret_value = I2C_device.read_last_reg(1) + print(ret_value) + + +def rw_eeprom(value): + I2C_eeprom = I2C(EEPROM_ADDR, BUSNR=I2CBUSNR) + if len(value)>0: + for i,v in enumerate(bytearray(value)): + print(i,hex(v)) + I2C_eeprom.write_bytes(i,v) + sleep(0.1) + for i in range(len(value),LEN): + I2C_eeprom.write_bytes(i,0xff) + sleep(0.1) + v2=[] + sleep(0.1) + I2C_eeprom.write_register(0) + sleep(0.1) + ret_ack, ret_value = I2C_eeprom.read_last_reg(LEN) + if ret_ack: + stri = "EEPROM readback : {} ".format(ret_value) + print(stri) + else: + print("READBACK failed") + +if len(version)>LEN: version=version[:LEN] +print("Set RCU number %i version to '%s'" % (Nrcu,version)); + +set_switch(SWITCH_ADDR, Nrcu) +rw_eeprom(version) + diff --git a/set_serial.py b/set_serial.py new file mode 100644 index 0000000000000000000000000000000000000000..c4b96b18935fe15fb2f7fe0429aa2cb7a935d3dd --- /dev/null +++ b/set_serial.py @@ -0,0 +1,53 @@ +''' +Set RCU2 version via PCC. RCU number from commandline + +''' +import sys +import time +sys.path.insert(0,'.') +import os +if os.name == "posix": + from I2C_serial_pi import * +else: + from I2C_serial import * + +sleep_time=0.05 + +I2CBUSNR=int(sys.argv[1]) if len(sys.argv)>1 else 0 +version=sys.argv[2] if len(sys.argv)>2 else "" + +REGISTER=int(sys.argv[3]) if len(sys.argv)>3 else 0 + +EEPROM_ADDR = 0x50 +#I2CBUSNR = 1 +LEN=16 +#REGISTER=0x20 + + + +def rw_eeprom(value): + I2C_eeprom = I2C(EEPROM_ADDR, BUSNR=I2CBUSNR) + if len(value)>0: + for i,v in enumerate(bytearray(value)): + print(i,hex(v)) + I2C_eeprom.write_bytes(i+REGISTER,v) + sleep(0.1) + for i in range(len(value),LEN): + I2C_eeprom.write_bytes(i+REGISTER,0xff) + sleep(0.1) + v2=[] + sleep(0.1) + I2C_eeprom.write_register(REGISTER) + sleep(0.1) + ret_ack, ret_value = I2C_eeprom.read_last_reg(LEN) + if ret_ack: + stri = "EEPROM readback : {} ".format(ret_value) + print(stri) + else: + print("READBACK failed") + +if len(version)>LEN: version=version[:LEN] +print("Set I2C bus %i: version= '%s'" % (I2CBUSNR,version)); + +rw_eeprom(version) +