CESR-CLEO HV Interlock Software
All software is being developed in the HV module of the CVS
HVInterlockServer.cxx defines a class to represent the Interlock board. The following files contain all of the necessary definitions, etc.:
HVInterlockServer.h
HVInterlockServer.hxx
HVInterlockServer.cxx
List of defines contained in HVServerInterlock.h
#define TOCLEAR (unsigned short) 0x1
#define TOSET (unsigned short) 0x2
#define INHIBIT (unsigned short) 0x4
#define FAIL (unsigned short) 0x8
#define HVEN (unsigned short) 0x10
#define TO_MASK (unsigned short) 0xc
#define TOC_SHIFT 0
#define TOS_SHIFT 1
#define INH_SHIFT 2
#define FAIL_SHIFT 3
#define HVEN_SHIFT 4
#define INTERLOCK_ID (int)46
#define ZERO 0x0
#define CLK_RATE (float) 16000000.0
Define a struct called HVInterlockCSR
typedef struct
{
unsigned short INTERLOCK; /* 0x0 CESR-CLEO HV Interlock Base Address */
unsigned short ID; /* 0x2 CESR-CLEO HV Interlock ID */
unsigned short CSR; /* 0x4 Clears counter; CSR */
unsigned short TMO; /* 0x8 Watchdog Timeout */
} HVInterlockCSR;
List of public accessor functions
unsigned short getID();
boolean compareID();
void reset();
unsigned short getCSR();
void clearCSR();
int getTimeoutClear();
int getTimeoutClear();
void setTimeoutClear();
void clearTimeoutClear();
int getTimeoutSet();
void setTimeoutSet();
void clearTimeoutSet();
int getInhibit();
void setInhibit();
void clearInhibit();
int getFail();
int getHVEnable();
unsigned short getTimeoutRaw();
void setTimeoutRaw(unsigned short ValueInHex);
float getTimeoutInSeconds();
void setTimeoutInSeconds(float ValueInSeconds);
int hitwd();
Description of public accessor functions
unsigned short getID():
Input Parameters: None
Returns: Board ID (in decimal – should be 46)
Description: This reads address 0 of the board which returns the board
ID. This value is set by LPM_CONSTANT inside the
Altera chip.
unsigned int compareID():
Input Parameters: None
Returns: 1 if ID’s match
0 if ID’s do not match
Description: The ID on the board is a constant value set by LPM_CONSTANT inside the Altera chip. This value is currently set to 46. This function is meant to be a check to make sure that the board we’re talking to is really a CESR-CLEO HV Interlock VME Board.
void reset():
Input Parameters: None
Returns: Nothing
Description: This function is used to recover from a FAIL condition
after a timeout. It calls setTimeoutClear() followed by
clearCSR(). This will clear the FAIL, reset the watchdog,
and start the timer counting up again.
unsigned short getCSR():
Input Parameters: None
Returns: Current value of CSR in hex.
Description: Reads CSR.
Example: If getCSR() returns 0x18, that means
HVEnable = 1
FAIL = 1
All other bits are zero.
void clearCSR():
Input Parameters: None
Returns: Nothing
Description: Writes the value 0x0 to the CSR. This will clear the TOS,
TOC, and INHIBIT bits and allow the counter to start
counting up again. (It cannot clear the FAIL, nor does it
touch the value of HVENABLE).
int getTimeoutClear():
Input Parameters: None
Returns: Value of Timeout Clear bit
1 if Timeout Clear is active
0 if Timeout Clear is not active
Description: Reads the CSR and masks off the Timeout Clear bit.
void setTimeoutClear():
Input Parameters: None
Returns: Nothing
Description: Writes D[2..0] = 2 to CSR. Sets Timeout Clear bit. If
Timeout Set bit is already set, this function will clear the
TOS bit and set the TOC bit.
void clearTimeoutClear():
Input Parameters: None
Returns: Nothing
Description: Writes to CSR. Clears Timeout Clear bit without changing
any of the other bit values in the CSR.
int getTimeoutSet():
Input Parameters: None
Returns: Value of Timeout Set bit
1 if Timeout Set is active
0 if Timeout Set is not active
Description: Reads the CSR and masks off the Timeout Set bit.
void setTimeoutSet():
Input Parameters: None
Returns: Nothing
Description: Writes D[2..0] = 1 to CSR. Sets Timeout Set bit. If
Timeout Clear bit is set, this function will clear the
TOC bit and set the TOS bit.
void clearTimeoutSet():
Input Parameters: None
Returns: Nothing
Description: Writes to CSR. Clears Timeout Set bit without changing
any of the other bit values in the CSR.
int getInhibit():
Input Parameters: None
1 if INHIBIT relay is open
0 if INHIBIT relay is closed
Description: Reads the CSR and masks off the INHIBIT bit.
void setInhibit():
Input Parameters: None
Returns: Nothing
Description: Sets the INHIBIT bit, provided FAIL is not active. When
FAIL is active, the INHIBIT bit is automatically cleared.
void clearInhibit():
Input Parameters: None
Returns: Nothing
Description: Clears the INHIBIT bit without affecting any of the other
CSR values.
int getFail():
Input Parameters: None
Returns: 1 if FAIL is active (CESR HVEnable controls CLEO HV)
0 if FAIL is inactive (CLEO controls its own HV)
Description: Reads the CSR and masks off the FAIL bit and returns it.
int getHVEnable():
Input Parameters: None
Returns: Status of CESR HV ENABLE
Description: Reads the CSR and masks off the HVEnable bit; returns it.
unsigned short getTimeoutRaw():
Input Parameters: None
Returns: Value of watchdog timeout register in hex
Description: Reads A = 3 and returns the value found there. This is the
value that the watchdog timer will count up to. Once
this value is reached, the watchdog will time out and FAIL
will be asserted.
void setTimeoutRaw(unsigned short ValueInHex):
Input Parameters: Value of watchdog timeout register in hex
Returns: Nothing
Description: Writes the number ValueInHex to A = 3.
float getTimeoutInSeconds():
Input Parameters: None
Returns: Value of watchdog timeout register converted to seconds.
Description: Reads A = 3, converts the value found there from hex to
seconds using the value of the SYSTEM CLOCK that
clocks the watchdog timer. This is the value that the
watchdog timer will count up to. Once this value is
reached, the watchdog will time out and FAIL will be
asserted.
void setTimeoutInSeconds(float ValueInSeconds):
Input Parameters: The value the timer will count up to in seconds
Returns: Nothing
Description: Converts ValueInSeconds to the corresponding value in
hex. Then, it writes the hex value to A = 3. This is the
value that the watchdog timer will count up to (in seconds).
int hitwd():
Input Parameters: None
Returns: Status of CESR HV ENABLE
Description: Hits watchdog timer by reading CSR.