Skip to content
Snippets Groups Projects
Commit 5031533e authored by Paulus Kruger's avatar Paulus Kruger
Browse files

HBAT wait PPS bug fixed

parent 047f605a
No related branches found
No related tags found
No related merge requests found
Pipeline #53092 passed
...@@ -3,14 +3,14 @@ description: "1234" ...@@ -3,14 +3,14 @@ description: "1234"
name: "RECVTR" name: "RECVTR"
drivers: drivers:
- name: I2C_reset_GPIO
type: gpio
parameters: [15]
- name: I2C1 #TCA9548 - name: I2C1 #TCA9548
type: i2c_switch type: i2c_switch
devreg: [0x70,0x71,0x72,0x73] devreg: [0x70,0x71,0x72,0x73]
parameters: [1] #I2C port number parameters: [1] #I2C port number
parent: I2C_reset_GPIO parent: I2C_reset_GPIO
- name: I2C_reset_GPIO
type: gpio
parameters: [15]
- name: I2C_RCU - name: I2C_RCU
type: i2c_array #An array of similar devices connected to an I2C switch type: i2c_array #An array of similar devices connected to an I2C switch
parent: I2C1 parent: I2C1
...@@ -660,7 +660,7 @@ variables: ...@@ -660,7 +660,7 @@ variables:
dim: 3072 dim: 3072
dim2: [32,96] dim2: [32,96]
mask: ANT_mask mask: ANT_mask
wait: PPS wait: -1 #-1 = PPS
# wait: 1000 #ms # wait: 1000 #ms
- name: [RCU_IO4_GPIO1,RCU_IO4_GPIO2] - name: [RCU_IO4_GPIO1,RCU_IO4_GPIO2]
......
...@@ -33,7 +33,7 @@ class hba1(hwdev): ...@@ -33,7 +33,7 @@ class hba1(hwdev):
# print(RCUmask) # print(RCUmask)
#Wait for PPS if required else wait a bit #Wait for PPS if required else wait a bit
self.conf['parentcls'].SetSwitchMask(RCUmask) self.conf['parentcls'].SetSwitchMask(RCUmask)
if var1.get('wait')=="PPS": if var1.get('wait')==-1: #"PPS":
logging.info("HBA wait PPS") logging.info("HBA wait PPS")
channel=GPIO.wait_for_edge(self.pin,GPIO.RISING,timeout=1500) channel=GPIO.wait_for_edge(self.pin,GPIO.RISING,timeout=1500)
self.conf['parentcls'].i2csetget(self.addr,[self.reg]) self.conf['parentcls'].i2csetget(self.addr,[self.reg])
......
...@@ -115,7 +115,7 @@ class i2c_array(i2c_dev): ...@@ -115,7 +115,7 @@ class i2c_array(i2c_dev):
self.SetSwitch(RCUi); self.SetSwitch(RCUi);
self.RCUi=RCUi; self.RCUi=RCUi;
res=self.SetVarValue(devreg,width,bitoffset,data[i0:i1]) 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 not(res):
if self.disableI2ConError: self.I2Cmask[RCUi]+=1; if self.disableI2ConError: self.I2Cmask[RCUi]+=1;
if self.I2Cmask[RCUi]>self.I2Ccut: mask[RCUi*Step+Vari]=False; if self.I2Cmask[RCUi]>self.I2Ccut: mask[RCUi*Step+Vari]=False;
......
File added
...@@ -6,17 +6,17 @@ logFile='SetVersion' ...@@ -6,17 +6,17 @@ logFile='SetVersion'
import logging import logging
import argparse import argparse
from opcuaserv import opcuaserv from pypcc.opcuaserv import opcuaserv
from opcuaserv import i2client from pypcc.opcuaserv import i2client
from opcuaserv import yamlreader from pypcc.opcuaserv import yamlreader
#from opcuaserv import pypcc2 #from opcuaserv import pypcc2
from i2cserv import i2cthread from pypcc.i2cserv import i2cthread
import threading import threading
import time import time
import sys import sys
import signal import signal
from yamlconfig import Find; from pypcc.yamlconfig import Find;
import yamlconfig as yc import pypcc.yamlconfig as yc
from datetime import datetime from datetime import datetime
import numpy as np import numpy as np
...@@ -68,34 +68,36 @@ if int(ID,16)==0: ...@@ -68,34 +68,36 @@ if int(ID,16)==0:
uCaddr=0x40 uCaddr=0x40
HBAaddr=0x41+SINR 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] v=[0]
if True: if True:
# print("Set Vref=0x0c"); # print("Set Vref=0x0c");
i2c.i2csetget(uCaddr,[0x08],reg=13,read=0) i2c.i2csetget(uCaddr,[0x0c],reg=13,read=0)
# print("Set mode=0"); # print("Set mode=0");
i2c.i2csetget(uCaddr,[0],reg=2,read=0) i2c.i2csetget(uCaddr,[0],reg=2,read=0)
# print("Set Auto readback=0"); # print("Set Auto readback=0");
i2c.i2csetget(uCaddr,[0],reg=5,read=0) i2c.i2csetget(uCaddr,[0],reg=5,read=0)
# print("TX start high=0"); # print("TX start high=0");
i2c.i2csetget(uCaddr,[4],reg=14,read=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 i2c.i2csetget(uCaddr,v,reg=12,read=1) #get mode
print("Current mode=",v[0]) print("Wait PPS=",v[0])
i2c.i2csetget(uCaddr,v,reg=12,read=1) #get mode i2c.i2csetget(uCaddr,v,reg=13,read=1) #get mode
print("Wait PPS=",v[0]) print("Vref=",v[0])
i2c.i2csetget(uCaddr,v,reg=13,read=1) #get mode i2c.i2csetget(uCaddr,v,reg=5,read=1) #get mode
print("Vref=",v[0]) print("Auto readback=",v[0])
i2c.i2csetget(uCaddr,v,reg=5,read=1) #get mode i2c.i2csetget(uCaddr,v,reg=14,read=1) #get mode
print("Auto readback=",v[0]) print("TX start high=",v[0])
i2c.i2csetget(uCaddr,v,reg=14,read=1) #get mode time.sleep(0.3)
print("TX start high=",v[0])
#exit() #exit()
CRCtab=np.load("CRC_HBAT1.npy") CRCtab=np.load("CRC_HBAT1.npy")
...@@ -130,11 +132,56 @@ def RequestRegisters(HBANR,reg,length): ...@@ -130,11 +132,56 @@ def RequestRegisters(HBANR,reg,length):
# TX2=hb.ManchesterEncode(TX1)\n", # TX2=hb.ManchesterEncode(TX1)\n",
# ser.write(bytearray(TX2))\n", # ser.write(bytearray(TX2))\n",
# return GetPackets();" # 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] HBANRs=range(1,17) if HBANR==0 else [HBANR]
for HBANR in HBANRs: for HBANR in HBANRs:
RequestRegisters(HBANR,0,1) RequestRegisters(HBANR,0,1)
time.sleep(0.1) time.sleep(0.2)
D=[0]*7 D=[0]*8
i2c.i2csetget(HBAaddr,D,read=1) i2c.i2csetget(HBAaddr,D,read=1)
D=D[2:] D=D[2:]
CRC=CRCcheck(D[:-2]) CRC=CRCcheck(D[:-2])
...@@ -142,8 +189,6 @@ for HBANR in HBANRs: ...@@ -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 '') 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 CRCerror: print(' CRC=',hex(CRC & 0xff),hex(CRC//256))
# if (HBANR+0x80!=D[0]): print(' wrong address',D[0],HBANR+0x80) # if (HBANR+0x80!=D[0]): print(' wrong address',D[0],HBANR+0x80)
# time.sleep(0.1)
#print(MakeRequest(HBANR,data
#data,var1=GetVal(varSet); #data,var1=GetVal(varSet);
#version=bytearray(data).decode("utf-8",errors='ignore') #version=bytearray(data).decode("utf-8",errors='ignore')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment