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"
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]
......
......@@ -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])
......
......@@ -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;
......
File added
......@@ -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,20 +68,20 @@ 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])
......@@ -97,6 +97,8 @@ print("Auto readback=",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")
CRCtabl=[d%256 for d in CRCtab]
......@@ -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')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment