From 0ef795d4e4e2c053de0bc1ab8cf94e2c0963a16d Mon Sep 17 00:00:00 2001
From: kruger <kruger@astron.nl>
Date: Fri, 28 Feb 2025 16:22:12 +0100
Subject: [PATCH] fix bug in AHBAFE analog trigger

---
 pypcc/config/RECVTR_HB.yaml | 12 ++++++++++++
 pypcc/i2cserv/hba2.py       |  2 +-
 scripts/AHBAT_test.py       | 16 +++++++++++-----
 3 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/pypcc/config/RECVTR_HB.yaml b/pypcc/config/RECVTR_HB.yaml
index c930a92..c55e1af 100644
--- a/pypcc/config/RECVTR_HB.yaml
+++ b/pypcc/config/RECVTR_HB.yaml
@@ -198,6 +198,7 @@ device_registers:
    - {name: PCB_version,address: 0x24}
    - {name: PCB_number,address: 0x32}
    - {name: ADC,address: 0x50}
+   - {name: Vref,address: 0x1c}
 
  - name: ADC
    dim: 3
@@ -905,6 +906,17 @@ variables:
      dim: 96
      dim2: [3,32]
 
+   - name: AHBAT_Vref
+     description: 0..16
+     driver: I2C_AHBAT
+     devreg:  [AHBAT1.Vref,AHBAT2.Vref,AHBAT3.Vref]
+     width: 8
+     rw:  rw
+     dtype: uint8
+     dim: 96
+     dim2: [1,96]
+     mask: AHBAT_mask
+     wait: 700 #ms 
 
 methods:
   - name: RECVTR_Init #Called after startup to load. Should have all stored registers  
diff --git a/pypcc/i2cserv/hba2.py b/pypcc/i2cserv/hba2.py
index be12945..a01d78a 100644
--- a/pypcc/i2cserv/hba2.py
+++ b/pypcc/i2cserv/hba2.py
@@ -43,7 +43,7 @@ class hba2(hwdev):
 #      logging.warning("SetHba2 not implemented")
       logging.info("setHba2 addr=0x%x reg=0x%x len=%i",addr,reg,len(data))
       I2Ccallback=self.conf['parentcls'].i2csetget
-      if not(I2Ccallback(addr,[reg,1,data[0]],reg=0x0e)): return False;
+      if not(I2Ccallback(addr,[reg,2,data[0]],reg=0x0e)): return False; #only len=2 (BF) implemented
       return True
 
   def gethba(self,addr,reg,data):
diff --git a/scripts/AHBAT_test.py b/scripts/AHBAT_test.py
index b3bf6de..3e2a1a6 100644
--- a/scripts/AHBAT_test.py
+++ b/scripts/AHBAT_test.py
@@ -16,11 +16,13 @@ setAntmask([RCU],AntMask)
 wait_not_busy(busy,timeout_sec=4)
 
 #val,tp=get_value_type(name+"_R")
-#set_value("HBAT_PWR_on_RW",[False]*(32*96))
-#set_value("HBAT_PWR_LNA_on_RW",[False]*(32*96))
 if False:
-    print("LEDs on")
+    print("LEDs & PWR on")
+    set_value("HBAT_PWR_on_RW",[True]*(32*96))
+    set_value("HBAT_PWR_LNA_on_RW",[True]*(32*96))
     set_value("HBAT_LED_on_RW",[True]*(32*96))
+    val,tp=get_value_type("HBAT_BF_delay_steps_R")
+    set_value("HBAT_BF_delay_steps_RW",val,tp)
     wait_not_busy(busy,timeout_sec=4)
 
 setAntmask([RCU],AntMask,name="AHBAT_mask_RW")
@@ -28,7 +30,11 @@ wait_not_busy(busy,timeout_sec=4)
 
 sinr=1
 
-if True:
+if False:
+    set_value("AHBAT_Vref_RW",[0x04]*96)
+    wait_not_busy(busy,timeout_sec=4)
+
+if False:
   print("Configuration:")
   callmethod("AHBAT_update")
   wait_not_busy(busy,timeout_sec=8)
@@ -56,7 +62,7 @@ if True:
 
   uid=get_value("AHBAT_ADC_R")[16*sinr:16*(sinr+1)]
   for cnt,val in enumerate(uid):
-    print('%2i %6i %6i %6i %6i'%(cnt+1,val&0xfff,(val>>16)&0xfff,(val>>32)&0xfff,(val>>48)&0xfff))
+    print('%2i %6i %6i %6i %6i %6i'%(cnt+1,val&0xffff,(val>>16)&0xffff,(val>>32)&0xffff,(val>>48)&0xffff,((val>>16)&0xffff)-((val)&0xffff)))
 #  print("ADC",['%016x'%x for x in uid])
 
 disconnect()
-- 
GitLab