From 0f99dd141e588af560eafff496cdbbc251e870a7 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 1 Oct 2019 17:34:52 +0200 Subject: [PATCH] gotthard 2 server test bus --- .../gotthard2DetectorServer/RegisterDefs.h | 17 ++++++++++------- .../bin/gotthard2DetectorServer_developer | Bin 92968 -> 92968 bytes .../slsDetectorFunctionList.c | 4 ++-- .../include/slsDetectorFunctionList.h | 2 -- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h b/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h index a47e5c92a..dab12d79c 100644 --- a/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h +++ b/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h @@ -1,15 +1,16 @@ #pragma once /* Definitions for FPGA*/ +#define REG_OFFSET (4) #define BASE_CONTROL (0x000) #define BASE_ACQUISITION (0x200) #define BASE_UDP_RAM (0x1000) /* Module Control Board Serial Number register */ -#define MCB_SERIAL_NO_REG (0x00 + BASE_CONTROL) +#define MCB_SERIAL_NO_REG (0x000 * REG_OFFSET + BASE_CONTROL) /* FPGA Version register */ -#define FPGA_VERSION_REG (0x04 + BASE_CONTROL) +#define FPGA_VERSION_REG (0x001 * REG_OFFSET + BASE_CONTROL) #define FPGA_COMPILATION_DATE_OFST (0) #define FPGA_COMPILATION_DATE_MSK (0x00FFFFFF << FPGA_COMPILATION_DATE_OFST) @@ -17,7 +18,7 @@ #define DETECTOR_TYPE_MSK (0x000000FF << DETECTOR_TYPE_OFST) /* API Version register */ -#define API_VERSION_REG (0x08 + BASE_CONTROL) +#define API_VERSION_REG (0x002 * REG_OFFSET + BASE_CONTROL) #define API_VERSION_OFST (0) #define API_VERSION_MSK (0x00FFFFFF << API_VERSION_OFST) @@ -25,20 +26,22 @@ #define API_VERSION_DETECTOR_TYPE_MSK (0x000000FF << API_VERSION_DETECTOR_TYPE_OFST) //Not used in software /* Fix pattern register */ -#define FIX_PATT_REG (0x0D + BASE_CONTROL) +#define FIX_PATT_REG (0x003 * REG_OFFSET + BASE_CONTROL) #define FIX_PATT_VAL (0xACDC2019) /* Status register */ -#define STATUS_REG (0x12 + BASE_CONTROL) +#define STATUS_REG (0x004 * REG_OFFSET + BASE_CONTROL) #ifdef VIRTUAL #define RUN_BUSY_OFST (0) #define RUN_BUSY_MSK (0x00000001 << RUN_BUSY_OFST) #endif -/* Look at me register */ -#define LOOK_AT_ME_REG (0x16 + BASE_CONTROL) +/* Look at me read only register */ +#define LOOK_AT_ME_REG (0x005 * REG_OFFSET + BASE_CONTROL) +/** DTA Offset Register */ +#define DTA_OFFSET_REG (0x104 * REG_OFFSET + BASE_CONTROL) /* Pattern Control FPGA registers TODO --------------------------------------------------*/ diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer index 714924ac24da1034ccb162f9177fa8aa0ba1eb28..bfd2b0ccf307c6858b23b43b878fec89ee503b35 100755 GIT binary patch delta 21083 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 yhkg5jwV+3Bez&J|!G