mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-05-12 15:35:36 +02:00
8f07d2a464
Build on RHEL9 / build (push) Successful in 3m46s
Run Simulator Tests on local RHEL9 / build (push) Failing after 3m51s
Build on RHEL8 / build (push) Successful in 5m15s
Run Simulator Tests on local RHEL8 / build (push) Failing after 5m31s
Build on local RHEL8 / build (push) Failing after 3m31s
Build on local RHEL9 / build (push) Failing after 1m25s
* wip * wip * wip. xilinx left * wip. xilinx * wip * wip. compiles * fixed eiger test * more fixes * fixed virtual m3 * fix typos and bugs * setting power to 0 * set power fixed * updated server binaries * minor * refactoring * get vchip refactoring * eiger: unnecessary check for setsettings undefined * retval pointer for printout * eiger.wip, mV in boolean * wip. gotthard2 and m3 * wip. jungfrau * moench.wip * compiles.wip * fix eiger * m3 fix vthresh * fix ctband xilinx * default pwr index = pwr_io * minor:fn name and highvoltage to local var * refactor funcs * minor * minor * check dac voltage only for normal dacs and not for power dacs as the dac voltage range is different for ctb and xilinx ctb, also throw for -1 in set for set_dac in client itself. in the server its not clear if its set or get with a -1 * minor * updated versioning * review changes: removing validateDACValue and other minor stuff * binaries in * wip * refactored m3 vth * minor review * minor review * m3 serverdac index fix * minor
113 lines
3.0 KiB
C
113 lines
3.0 KiB
C
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#pragma once
|
|
|
|
#include <inttypes.h>
|
|
|
|
/**
|
|
* Set Defines
|
|
* @param reg spi register
|
|
* @param cmsk chip select mask
|
|
* @param clkmsk clock output mask
|
|
* @param dmsk digital output mask
|
|
* @param dofst digital output offset
|
|
* @param nd total number of dacs for this board (for dac channel and daisy
|
|
* chain chip id)
|
|
* @param minMV minimum voltage determined by hardware
|
|
* @param maxMV maximum voltage determined by hardware
|
|
*/
|
|
void LTC2620_SetDefines(uint32_t reg, uint32_t cmsk, uint32_t clkmsk,
|
|
uint32_t dmsk, int dofst, int nd, int minMV, int maxMV);
|
|
|
|
/**
|
|
* Disable SPI
|
|
*/
|
|
void LTC2620_Disable();
|
|
|
|
/**
|
|
* Get power down value
|
|
*/
|
|
int LTC2620_GetPowerDownValue();
|
|
|
|
/**
|
|
* Get minimum input value for dac
|
|
*/
|
|
int LTC2620_GetMinInput();
|
|
|
|
/**
|
|
* Get maximum input value for dac
|
|
*/
|
|
int LTC2620_GetMaxInput();
|
|
|
|
/**
|
|
* Get max number of steps
|
|
*/
|
|
int LTC2620_GetMaxNumSteps();
|
|
|
|
/**
|
|
* Convert voltage to dac units
|
|
* @param voltage value in mv
|
|
* @param dacval pointer to value converted to dac units
|
|
* @returns FAIL when voltage outside limits, OK if conversion successful
|
|
*/
|
|
int LTC2620_VoltageToDac(int voltage, int *dacval);
|
|
|
|
/**
|
|
* Convert dac units to voltage
|
|
* @param dacval dac units
|
|
* @param voltage pointer to value converted to mV
|
|
* @returns FAIL when voltage outside limits, OK if conversion successful
|
|
*/
|
|
int LTC2620_DacToVoltage(int dacval, int *voltage);
|
|
|
|
/**
|
|
* Set a single chip (all non ctb detectors use this)
|
|
* when max dac is 8
|
|
* @param cmd command
|
|
* @param data dac value to be set
|
|
* @param dacaddr dac channel number in chip
|
|
*/
|
|
void LTC2620_SetSingle(int cmd, int data, int dacaddr);
|
|
|
|
/**
|
|
* bit bang the data into all the chips daisy fashion
|
|
* @param valw current value of register while bit banging
|
|
* @param val data to be sent (data, dac addr and command)
|
|
*/
|
|
void LTC2620_SendDaisyData(uint32_t *valw, uint32_t val);
|
|
|
|
/**
|
|
* Set a single chip (all non ctb detectors use this)
|
|
* when max dac is 8
|
|
* @param cmd command
|
|
* @param data dac value to be set
|
|
* @param dacaddr dac channel number in chip
|
|
* @param chipIndex index of the chip
|
|
*/
|
|
void LTC2620_SetDaisy(int cmd, int data, int dacaddr, int chipIndex);
|
|
|
|
/**
|
|
* Sets a single chip (LTC2620_SetSingle) or multiple chip (LTC2620_SetDaisy)
|
|
* multiple chip is only for ctb where the multiple chips are connected in daisy
|
|
* fashion
|
|
* @param cmd command to send
|
|
* @param data dac value to be set
|
|
* @param dacaddr dac channel number for the chip
|
|
* @param chipIndex the chip to be set
|
|
*/
|
|
void LTC2620_Set(int cmd, int data, int dacaddr, int chipIndex);
|
|
|
|
/**
|
|
* Configure (obtains dacaddr, command and ichip and calls LTC2620_Set)
|
|
*/
|
|
void LTC2620_Configure();
|
|
|
|
/**
|
|
* Sets the ichip, address and command, Calls LTC2620_Set)
|
|
* @param dacnum dac number
|
|
* @param data dac value to set
|
|
*/
|
|
void LTC2620_SetDAC(int dacnum, int data);
|
|
|
|
/** From */
|
|
int LTC2620_SetDacValue(int dacnum, int val, char *dacname, char *mess); |