![]() |
CROSS Technical Documentation User Manual and Technical Doc.
INFN Milano Bicocca
|
Errors Managing
Here you can find informations about the follwoing topics:
A large number of flags are available to take account of the presence of errors or not adequate performances of both the hw and fw. The errors are in a vector of unsigned int. Every element of the vector cotains 32 flags of information. A flag in true state means that the corresponding error has been verified. The vector with the errors is Post_frontend_errors:
its registers are addressed according to the enum ERROR_CROSS_address_ whose list follows. Note that the length of the half vector is error_number_of_errors_registers, the last element of the list for board down. A similar number of elements with the same name offset by error_offset_for_board_up account for board up. The number on left of the list is the register address whithin Post_frontend_errors:
The first regsiters, from address 0 to error_number_of_errors_registers, are for the lower board. The registers whose address starts from error_offset_for_board_up registers, are for board up and are a replica in meaning of the first ones. So, for instance, a fail in reading power supply for board down is found at address error_address_Power_Supply_in_General, or 2, while the same fail on board up is found at address error_offset_for_board_up registers + error_address_Power_Supply_in_General.
Every register of the Post_frontend_errors vector is a set of 32 homogenous flags, that summmmarize the behaviour of some subjects, ADC, I2, SPI, etc. The signature of an error is the value of 1 of a flag and every flag. As an instance, to consult the error during I2C0 communication one has to look at the register Post_frontend_errors[error_address_I2C0]. Each flag of that registers that is 1 marks the verification of any not expected bahaviour.
Now, to manage the flags a few function are available, described below.
Let's start to interpet the flags. To each register an enum is built that lists the flags. They are all listed below. The number on the left of the lists are the position of the flag in the register. As an instance, if the error Vbol_neg_large_for_switching happens, than a 1 is stored at 1 << Vbol_neg_large_for_switching in the error_address_Power_Supply_in_General register.
Here is the list:
Register name: error_address_reg_ADC0 and error_address_reg_ADC1 (ADC's errors) | |
ADC errors flags | Da implementare
|
Register name: error_address_Power_Supply_in_General (eorrors with any Power Supply) | |
Errors flags for Vbol for switching | Da implementare
|
Errors flags for Vbol limiting values | Da implementare
|
Errors flags for VREF_POS_PRE | Da implementare
|
Errors flags for VREF_NEG_PRE | Da implementare
|
Errors flags for VCC_PRE | Da implementare
|
Errors flags for VEE_PRE | Da implementare
|
Errors flags rotation for VCC_PGA | Da implementare
|
Errors flags rotation for VEE_PGA | Da implementare
|
Errors flags for V__dig_5V | Da implementare
|
Errors flags for V__dig_3e3V | Da implementare
|
Register name: error_address_I2C0 and error_address_I2C1 (errors with any I2C) | |
Trouble with I2C communication | parziale
|
I2C Mux0 settings | parziale
|
I2C to parallel conversion PCA9554 |
|
Preamplifier trimmer |
|
EPROM |
|
Register name: error_address_I2C0_B and error_address_I2C1_B (errors with any I2C) | |
Trouble with preamplifier thermometer | parziale
|
Bias trimmer |
|
Register name: error_address_SPI | |
Trouble with SPI communication | parziale
|
Register name: error_address_CAN (errors with CAN bus communication) | |
Trouble with CAN communication | Da implementare
|
Register name: error_preamplifier_down and error_preamplifier_up | |
Trouble in temperature reading | Da implementare
|
Troubles with reading preamplifier trimmer | Da implementare
|
Troubles with writing preamplifier trimmer | Da implementare
|
Troubles in writing the preamplifier EEPROMs | parziale
|
Register name: error_address_CAN (errors with CAN bus communication) | |
Trouble with CAN communication | Da implementare
|
Register name: error_address_PGA_DetectorTrimmer_down and error_address_PGA_DetectorTrimmer_up | |
Troubles with detector trimmer ommunication | Da implementare
|
Troubles with PGA settings | Da implementare
|
Register name: error_address_Bias_adjustment (detector bias errors) | |
Final differential bias out of tolerance | Da implementare
|
Final positive bias out of tolerance | Da implementare
|
Final negative bias out of tolerance | Da implementare
|
Slopes not available |
|
The user makes use of the function instr_ERROR_inspection_function() which is passed a parameter, via Byte6 of the CAN instruction, tha can take one of the following 4 values:
As an example, to verify the presence of negative bias adjustment error for CH2 we test true:
There are 4 functions that are used in the fw to manage the errors: