Skip to content
Snippets Groups Projects
Commit b3ab62be authored by Gijs Schoonderbeek's avatar Gijs Schoonderbeek
Browse files
parents a03e2e0f 578e1525
No related branches found
No related tags found
No related merge requests found
...@@ -83,6 +83,20 @@ class I2C: ...@@ -83,6 +83,20 @@ class I2C:
print("Write error") print("Write error")
return ret_ack 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): def write_pointer(self, register):
bus = smbus.SMBus(self.bus_nr) bus = smbus.SMBus(self.bus_nr)
try: try:
......
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
'''
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)
'''
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)
'''
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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment