diff --git a/pypcc/config/RECVTR_HB.yaml b/pypcc/config/RECVTR_HB.yaml index afc65b0a34e7a3acbab00a2bd03c053945325068..3f676c688478ee1307078d487bab1cd3e44d7f97 100644 --- a/pypcc/config/RECVTR_HB.yaml +++ b/pypcc/config/RECVTR_HB.yaml @@ -3,14 +3,14 @@ description: "1234" name: "RECVTR" drivers: - - name: I2C_reset_GPIO - type: gpio - parameters: [15] - name: I2C1 #TCA9548 type: i2c_switch devreg: [0x70,0x71,0x72,0x73] parameters: [1] #I2C port number parent: I2C_reset_GPIO + - name: I2C_reset_GPIO + type: gpio + parameters: [15] - name: I2C_RCU type: i2c_array #An array of similar devices connected to an I2C switch parent: I2C1 @@ -660,7 +660,7 @@ variables: dim: 3072 dim2: [32,96] mask: ANT_mask - wait: PPS + wait: -1 #-1 = PPS # wait: 1000 #ms - name: [RCU_IO4_GPIO1,RCU_IO4_GPIO2] diff --git a/pypcc/i2cserv/hba1.py b/pypcc/i2cserv/hba1.py index cf8a353accfb4f53e4578919db5cc0a03a323d45..85ceb9560326160b78e952fa1bfaa140f76658d3 100644 --- a/pypcc/i2cserv/hba1.py +++ b/pypcc/i2cserv/hba1.py @@ -33,7 +33,7 @@ class hba1(hwdev): # print(RCUmask) #Wait for PPS if required else wait a bit self.conf['parentcls'].SetSwitchMask(RCUmask) - if var1.get('wait')=="PPS": + if var1.get('wait')==-1: #"PPS": logging.info("HBA wait PPS") channel=GPIO.wait_for_edge(self.pin,GPIO.RISING,timeout=1500) self.conf['parentcls'].i2csetget(self.addr,[self.reg]) diff --git a/pypcc/i2cserv/i2c_array.py b/pypcc/i2cserv/i2c_array.py index 92b80194a8c1772ffb0bfdf050091f88b3e17ce4..dd26f65269ca66a9595bd84adb09075589548417 100644 --- a/pypcc/i2cserv/i2c_array.py +++ b/pypcc/i2cserv/i2c_array.py @@ -115,7 +115,7 @@ class i2c_array(i2c_dev): self.SetSwitch(RCUi); self.RCUi=RCUi; res=self.SetVarValue(devreg,width,bitoffset,data[i0:i1]) - if var1.get('wait',0)>0: sleep(var1['wait']/1000) + if getalso and (var1.get('wait',0)>0): sleep(var1['wait']/1000) if not(res): if self.disableI2ConError: self.I2Cmask[RCUi]+=1; if self.I2Cmask[RCUi]>self.I2Ccut: mask[RCUi*Step+Vari]=False; diff --git a/python_scripts/CRC_HBAT1.npy b/python_scripts/CRC_HBAT1.npy new file mode 100644 index 0000000000000000000000000000000000000000..c737267e6ea48a415beb618f8d8abbf5b3050a98 Binary files /dev/null and b/python_scripts/CRC_HBAT1.npy differ diff --git a/python_scripts/HBATtest.py b/python_scripts/HBATtest.py index c597ed0f5d7ff929e90c5b801bc646986af95b39..2b901713a1b645cceb6baccd6aba345ebbb52970 100644 --- a/python_scripts/HBATtest.py +++ b/python_scripts/HBATtest.py @@ -6,17 +6,17 @@ logFile='SetVersion' import logging import argparse -from opcuaserv import opcuaserv -from opcuaserv import i2client -from opcuaserv import yamlreader +from pypcc.opcuaserv import opcuaserv +from pypcc.opcuaserv import i2client +from pypcc.opcuaserv import yamlreader #from opcuaserv import pypcc2 -from i2cserv import i2cthread +from pypcc.i2cserv import i2cthread import threading import time import sys import signal -from yamlconfig import Find; -import yamlconfig as yc +from pypcc.yamlconfig import Find; +import pypcc.yamlconfig as yc from datetime import datetime import numpy as np @@ -68,34 +68,36 @@ if int(ID,16)==0: uCaddr=0x40 HBAaddr=0x41+SINR -i2c=conf.conf['drivers'][0]['obj'] #assume I2C is first device +i2c=conf.conf['drivers'][1]['obj'] #assume I2C is first device v=[0] if True: # print("Set Vref=0x0c"); - i2c.i2csetget(uCaddr,[0x08],reg=13,read=0) + i2c.i2csetget(uCaddr,[0x0c],reg=13,read=0) # print("Set mode=0"); i2c.i2csetget(uCaddr,[0],reg=2,read=0) # print("Set Auto readback=0"); i2c.i2csetget(uCaddr,[0],reg=5,read=0) # print("TX start high=0"); i2c.i2csetget(uCaddr,[4],reg=14,read=0) +if True: + i2c.i2csetget(uCaddr,v,reg=2,read=1) #get mode + print("Current mode=",v[0]) -i2c.i2csetget(uCaddr,v,reg=2,read=1) #get mode -print("Current mode=",v[0]) + i2c.i2csetget(uCaddr,v,reg=12,read=1) #get mode + print("Wait PPS=",v[0]) -i2c.i2csetget(uCaddr,v,reg=12,read=1) #get mode -print("Wait PPS=",v[0]) + i2c.i2csetget(uCaddr,v,reg=13,read=1) #get mode + print("Vref=",v[0]) -i2c.i2csetget(uCaddr,v,reg=13,read=1) #get mode -print("Vref=",v[0]) + i2c.i2csetget(uCaddr,v,reg=5,read=1) #get mode + print("Auto readback=",v[0]) -i2c.i2csetget(uCaddr,v,reg=5,read=1) #get mode -print("Auto readback=",v[0]) + i2c.i2csetget(uCaddr,v,reg=14,read=1) #get mode + print("TX start high=",v[0]) -i2c.i2csetget(uCaddr,v,reg=14,read=1) #get mode -print("TX start high=",v[0]) + time.sleep(0.3) #exit() CRCtab=np.load("CRC_HBAT1.npy") @@ -130,11 +132,56 @@ def RequestRegisters(HBANR,reg,length): # TX2=hb.ManchesterEncode(TX1)\n", # ser.write(bytearray(TX2))\n", # return GetPackets();" +def setreg(reg,value): + TX1=MakeRequest(HBANR,value,func=len(value)*2,reg=reg) + print(TX1) + i2c.i2csetget(HBAaddr,TX1,read=0) + +def calc_delay(val,term=False): + TTDs=[False]*5; + for x in range(5): + TTDs[x]=val//(2**(x))%2==1 + val2=0; + previous=term; +# for x in range(5,-1,-1): + for x in range(5): + val2=val2*2+1*(not(TTDs[x]==previous)) + previous=TTDs[x] + val2=val2*2+1*previous +# print(val,TTDs,val2,bin(val2)) + return val2 +REG_PWR=0x02 +REG_X=0x00 + +setreg(REG_PWR,[0xff]) +#exit() +time.sleep(0.5) + +dab=False +led=False +term=False +val1=calc_delay(15,term=term) +val2=calc_delay(15,term=term) +print("delay reg=",hex(val2)) +setreg(REG_X,[val1+dab*0x80,val2+led*0xc0]) +time.sleep(0.5) +#exit() +for x in range(100000): + print(x) + time.sleep(0.5) + if True: + i2c.i2csetget(uCaddr,[0x0c],reg=13,read=0) + i2c.i2csetget(uCaddr,[0],reg=2,read=0) + i2c.i2csetget(uCaddr,[0],reg=5,read=0) + i2c.i2csetget(uCaddr,[4],reg=14,read=0) + RequestRegisters(HBANR,0,2) +exit() + HBANRs=range(1,17) if HBANR==0 else [HBANR] for HBANR in HBANRs: RequestRegisters(HBANR,0,1) - time.sleep(0.1) - D=[0]*7 + time.sleep(0.2) + D=[0]*8 i2c.i2csetget(HBAaddr,D,read=1) D=D[2:] CRC=CRCcheck(D[:-2]) @@ -142,8 +189,6 @@ for HBANR in HBANRs: print(HBANR,"RX:",[hex(d) for d in D],',CRC error' if CRCerror else '',',wrong addr' if (HBANR+0x80!=D[0]) else '') # if CRCerror: print(' CRC=',hex(CRC & 0xff),hex(CRC//256)) # if (HBANR+0x80!=D[0]): print(' wrong address',D[0],HBANR+0x80) -# time.sleep(0.1) -#print(MakeRequest(HBANR,data #data,var1=GetVal(varSet); #version=bytearray(data).decode("utf-8",errors='ignore')