From fde287b0223034f1cd7857de8fa3d34c26c228cb Mon Sep 17 00:00:00 2001 From: kruger <kruger@astron.nl> Date: Thu, 22 Jul 2021 08:50:13 +0200 Subject: [PATCH] APSPU CRC and FAN init, UNB2 I2C setup on startup --- config/APSPUTR.yaml | 66 ++++++++++++++++++++++++++++++++------------- config/UNB2TR.yaml | 2 ++ i2cserv/i2c_dev.py | 3 ++- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/config/APSPUTR.yaml b/config/APSPUTR.yaml index 00ed6d0..fda5a14 100644 --- a/config/APSPUTR.yaml +++ b/config/APSPUTR.yaml @@ -25,20 +25,48 @@ device_registers: - name: Serial address: 0x20 + - name: POL_LBA + address: 0x3C + driver: i2c_smbus + registers: + - { name: "TEMP", address: 0x8D, crc: True} + - { name: "VIN" , address: 0x88, crc: True} + - { name: "VOUT", address: 0x8B, crc: True} + - { name: "IOUT", address: 0x8C, crc: True} + - name: POL_RCU2A + address: 0x3D + driver: i2c_smbus + registers: + - { name: "TEMP", address: 0x8D, crc: True} + - { name: "VIN" , address: 0x88, crc: True} + - { name: "VOUT", address: 0x8B, crc: True} + - { name: "IOUT", address: 0x8C, crc: True} + - name: POL_RCU2D + address: 0x3E + driver: i2c_smbus + registers: + - { name: "TEMP", address: 0x8D, crc: True} + - { name: "VIN" , address: 0x88, crc: True} + - { name: "VOUT", address: 0x8B, crc: True} + - { name: "IOUT", address: 0x8C, crc: True} + - name: MAX description: MAX6620 fan speed controller address: 0x29 driver: I2C_PU registers: - - name: GLOBAL - address: 0x00 - - name: TACH1 - address: 0x10 - - name: TACH2 - address: 0x12 - - name: TACH3 - address: 0x14 + - { name: GLOBAL, address: 0x00} + - { name: TACH1, address: 0x10} + - { name: TACH2, address: 0x12} + - { name: TACH3, address: 0x14} + - { name: r2, address: 0x2} + - { name: r3, address: 0x3} + - { name: r4, address: 0x4} + - { name: r5, address: 0x5} + - { name: r6, address: 0x6} + - { name: r7, address: 0x7} + - { name: r8, address: 0x8} variables: @@ -82,10 +110,9 @@ variables: rw: ro dtype: string - - name: [APSPU_LBA_VOUT,APSPU_RCU2A_VOUT,APSPU_RCU2D_VOUT] driver: I2C_PU - devreg: [0x3C.0x8B,0x3D.0x8B,0x3E.0x8B] + devreg: [POL_LBA.VOUT,POL_RCU2A.VOUT,POL_RCU2D.VOUT] width: 16 rw: ro dtype: double @@ -95,7 +122,7 @@ variables: - name: [APSPU_LBA_IOUT,APSPU_RCU2A_IOUT,APSPU_RCU2D_IOUT] driver: I2C_PU - devreg: [0x3C.0x8C,0x3D.0x8C,0x3E.0x8C] + devreg: [POL_LBA.IOUT,POL_RCU2A.IOUT,POL_RCU2D.IOUT] width: 16 rw: ro dtype: double @@ -104,7 +131,7 @@ variables: - name: [APSPU_LBA_TEMP,APSPU_RCU2A_TEMP,APSPU_RCU2D_TEMP] driver: I2C_PU - devreg: [0x3C.0x8D,0x3D.0x8D,0x3E.0x8D] + devreg: [POL_LBA.TEMP,POL_RCU2A.TEMP,POL_RCU2D.TEMP] width: 16 rw: ro dtype: double @@ -131,15 +158,16 @@ methods: - APSPU_PCB_ID : Update - APSPU_PCB_version : Update - APSPU_PCB_number : Update + - APSPU_FAN_monitor_on : 0 - name: APSPU_FAN_monitor_on description: Setup the FAN monitor to give RPM driver: I2C_PU instructions: - - MAX.GLOBAL : 0x02; #Run monitor - - MAX.0x02 : 0x88; - - MAX.0x06 : 0x80; # int((math.log(TACH_PERIODS{16}) / math.log(2))) << 5, - - MAX.0x03 : 0x88; - - MAX.0x07 : 0x80; - - MAX.0x04 : 0x88; - - MAX.0x08 : 0x80; + - MAX.GLOBAL : 0x02 #Run monitor + - MAX.r2 : 0x88 + - MAX.r6 : 0x80 # int((math.log(TACH_PERIODS{16}) / math.log(2))) << 5, + - MAX.r3 : 0x88 + - MAX.r7 : 0x80 + - MAX.r4 : 0x88 + - MAX.r8 : 0x80 diff --git a/config/UNB2TR.yaml b/config/UNB2TR.yaml index 3dbda4a..bdef91e 100644 --- a/config/UNB2TR.yaml +++ b/config/UNB2TR.yaml @@ -483,9 +483,11 @@ methods: debug: True instructions: - UNB2TR_I2C_error: 0 + - UNB2_I2C_enabled: 1 #Make sure I2C switches are enabled - UNB2_PCB_ID: Update - UNB2_PCB_version: Update - UNB2_PCB_number: Update +# - FP_IO.CONF: 0xf8 #bit 0-2 output for LED - UNB2_Front_Panel_LED_colour: Update - UNB2_PWR_on: Update diff --git a/i2cserv/i2c_dev.py b/i2cserv/i2c_dev.py index 6e6885f..0ba2eb8 100644 --- a/i2cserv/i2c_dev.py +++ b/i2cserv/i2c_dev.py @@ -290,7 +290,8 @@ class i2c_dev(hwdev): callback(0,[devreg['wait']],read=3) if not(callback(devreg['addr'],value2,read=1)): return False; else: - if not(callback(devreg['addr'],value2,reg=reg,read=1)): return False; + rd=(5 if devreg.get('crc') else 1) + if not(callback(devreg['addr'],value2,reg=reg,read=rd)): return False; if value2[0] is None: return False value[:]=value2[:]; if devreg.get('store'): -- GitLab