ctb: power regulators (set dac, get dac, get adc of voltage and current) works

This commit is contained in:
2019-02-20 08:45:34 +01:00
parent c93f88b7e5
commit 69f361468e
10 changed files with 286 additions and 104 deletions

View File

@ -1,6 +1,6 @@
CROSS = bfin-uclinux-
CC = $(CROSS)gcc
CFLAGS += -Wall -DCHIPTESTBOARDD -DSTOP_SERVER -DDEBUG1 #-DJCTB -DVERBOSEI #-DVERBOSE
CFLAGS += -Wall -DCHIPTESTBOARDD -DSTOP_SERVER #-DDEBUG1 #-DJCTB -DVERBOSEI #-DVERBOSE
LDLIBS += -lm -lstdc++
PROGS = ctbDetectorServer

View File

@ -523,7 +523,9 @@
/** I2C Control register */
#define I2C_TRANSFER_COMMAND_FIFO_REG (0x100 << MEM_MAP_SHIFT)
#define I2C_RX_DATA_FIFO_REG (0x101 << MEM_MAP_SHIFT)
#define I2C_CONTROL_REG (0x102 << MEM_MAP_SHIFT)
#define I2C_STATUS_REG (0x105 << MEM_MAP_SHIFT)
#define I2C_RX_DATA_FIFO_LEVEL_REG (0x107 << MEM_MAP_SHIFT)
#define I2C_SCL_LOW_COUNT_REG (0x108 << MEM_MAP_SHIFT)
#define I2C_SCL_HIGH_COUNT_REG (0x109 << MEM_MAP_SHIFT)

View File

@ -1,9 +1,9 @@
Path: slsDetectorPackage/slsDetectorServers/ctbDetectorServer
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repsitory UUID: 501c579f6b5d63ceee66cd10285890bf65e44e8e
Revision: 17
Repsitory UUID: c93f88b7e5afe231ec43c47d60278c6acdb520af
Revision: 19
Branch: refactor
Last Changed Author: Dhanya_Thattil
Last Changed Rev: 4331
Last Changed Date: 2019-02-14 09:37:20.000000002 +0100 ./RegisterDefs.h
Last Changed Rev: 4333
Last Changed Date: 2019-02-20 08:12:50.000000002 +0100 ./RegisterDefs.h

View File

@ -1,6 +1,6 @@
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
#define GITREPUUID "501c579f6b5d63ceee66cd10285890bf65e44e8e"
#define GITREPUUID "c93f88b7e5afe231ec43c47d60278c6acdb520af"
#define GITAUTH "Dhanya_Thattil"
#define GITREV 0x4331
#define GITDATE 0x20190214
#define GITREV 0x4333
#define GITDATE 0x20190220
#define GITBRANCH "refactor"

View File

@ -515,7 +515,7 @@ void setupDetector() {
// power regulators
// I2C
INA226_ConfigureI2CCore(I2C_SHUNT_RESISTER_OHMS, I2C_CONTROL_REG, I2C_RX_DATA_FIFO_LEVEL_REG, I2C_SCL_LOW_COUNT_REG, I2C_SCL_HIGH_COUNT_REG, I2C_SDA_HOLD_REG, I2C_TRANSFER_COMMAND_FIFO_REG);
INA226_ConfigureI2CCore(I2C_SHUNT_RESISTER_OHMS, I2C_CONTROL_REG, I2C_STATUS_REG, I2C_RX_DATA_FIFO_REG, I2C_RX_DATA_FIFO_LEVEL_REG, I2C_SCL_LOW_COUNT_REG, I2C_SCL_HIGH_COUNT_REG, I2C_SDA_HOLD_REG, I2C_TRANSFER_COMMAND_FIFO_REG);
INA226_CalibrateCurrentRegister(I2C_POWER_VIO_DEVICE_ID);
INA226_CalibrateCurrentRegister(I2C_POWER_VA_DEVICE_ID);
INA226_CalibrateCurrentRegister(I2C_POWER_VB_DEVICE_ID);
@ -1138,6 +1138,7 @@ void setVchip(int val) {
}
int getVChipToSet(enum DACINDEX ind, int val) {
FILE_LOG(logDEBUG1, ("Calculating vchip to set\n"));
// validate index & get adc index
int adcIndex = getADCIndexFromDACIndex(ind);
if (adcIndex == -1) {
@ -1286,15 +1287,17 @@ void setPower(enum DACINDEX ind, int val) {
// get vchip to set vchip (calculated now before switching off power enable)
int vchip = getVChipToSet(ind, val);
FILE_LOG(logDEBUG1, ("Vchip to set: %d\n", vchip));
// index problem of vchip calculation problem
if (vchip == -1)
return;
// Switch off power enable
FILE_LOG(logDEBUG1, ("Switching off power enable\n"));
bus_w(addr, bus_r(addr) & ~(mask));
// power down dac
FILE_LOG(logINFO, ("Powering off P%d (DAC %d)\n", adcIndex, ind));
FILE_LOG(logDEBUG1, ("Powering off P%d (DAC %d)\n", adcIndex, ind));
setDAC(ind, LTC2620_PWR_DOWN_VAL, 0);
// set vchip
@ -1310,6 +1313,11 @@ void setPower(enum DACINDEX ind, int val) {
// convert it to dac (power off is anyway done with power enable)
if (val != LTC2620_PWR_DOWN_VAL) {
FILE_LOG(logDEBUG1, ("Convert Power of %d mV to dac units\n", val));
/*
val = (double)val * 0.95;
FILE_LOG(logDEBUG1, ("Convert new Power of %d mV to dac units\n", val));
*/
int dacval = -1;
// convert voltage to dac
if (ConvertToDifferentRange(POWER_RGLTR_MIN, POWER_RGLTR_MAX, LTC2620_MAX_VAL, LTC2620_MIN_VAL,
@ -1318,14 +1326,20 @@ void setPower(enum DACINDEX ind, int val) {
ind, val, POWER_RGLTR_MIN, vchip - VCHIP_POWER_INCRMNT));
return;
}
/*
if (dacval > LTC2620_MAX_VAL)
dacval = LTC2620_MAX_VAL;
FILE_LOG(logDEBUG1, ("Converted new dac val: %d\n", dacval));
*/
// set and power on/ update dac
FILE_LOG(logINFO, ("Setting P%d (DAC %d): %d dac (%d mV)\n", adcIndex, ind, dacval, val));
setDAC(ind, dacval, 0);
// to be sure of valid conversion
if (dacval >= 0)
if (dacval >= 0) {
FILE_LOG(logDEBUG1, ("Switching on power enable\n"));
bus_w(addr, bus_r(addr) | mask);
}
}
}
}