CROSS Technical Documentation User Manual and Technical Doc.
INFN Milano Bicocca
Loading...
Searching...
No Matches

◆ preamplifier_ADC_external_measured_node_function()

int32_t preamplifier_ADC_external_measured_node_function ( uint8_t  scheda_su_scheda_giu,
uint8_t  indice 
)

This function provide node reading from an external ADC.

Returns
No Parameters, the actual result is sent to the CAN bus output throught tx_data.
712int32_t preamplifier_ADC_external_measured_node_function(uint8_t scheda_su_scheda_giu, uint8_t indice){
713 //richiedere sul CAN la misura
714 //In questo caso scheda su o gi\'u non ha importanza perch\'e l'ADC esterno sar\'a connesso direttamente ad una sola scheda
715 uint8_t ii=0;
716 int32_t valore_mis;
717 evento_CAN=10;
718 uint8_t buffer_istruzione[8],iii;
719 for(iii=0;iii<8;iii++){
720 buffer_istruzione[iii]=tx_data[iii];
721 }
722 if ( (indice >= node_voltage_Analog_Mux_0_offset ) ){
723 //Misura su uno dei 2 nodi dei mux
724 Analog_mux_line_to_select_deselect(scheda_su_scheda_giu, indice , 1);
725 }
726 tx_data[5]= indice; //The node to be measured, the code includes also the selected board
727 tx_data[6]= 1; //This must be "1" and says that the node voltage read must be returned here
728 tx_data[7]= instr_readback_node_voltages ; //instr code
729 tx_msg_info.id = ARM_CAN_EXTENDED_ID(indirizzo_CAN_della_scheda);
730 CANdrv->MessageSend(tx_obj_idx, &tx_msg_info, tx_data, 8U);//msg to CAN back to the control room
731 Aspetta_tanti_ms(100); //From here we wait the answer or generate an error
732 //Aspettare che la misura sia fatta, o generare errore
733 //! [CAN error marker]
734 //Before here a CAN message has been sent with success, we hope
735 while( (ii <50) && ( evento_CAN != ARM_CAN_EVENT_RECEIVE ) ){
736 Aspetta_tanti_ms(200);
737 ii++;
738 }
740 //! [CAN error marker]
741 if( (indice >= node_voltage_Analog_Mux_0_offset ) ){
742 //Reset di uno dei 2 mux usati per la misura
743 Analog_mux_line_to_select_deselect(scheda_su_scheda_giu, indice , 0);
744 }
745
746 valore_mis= ( ( ( *(int32_t *)rx_data ) & 0xFFFFFFFF ) ) ;
747 //Convertiamo in funzione del nodo dal leggere
748 valore_mis = (valore_mis * ADC_coefficiente[indice / ADC_molteplicita_node_to_read].numeratore )\
749 / ADC_coefficiente[indice / ADC_molteplicita_node_to_read].denominatore ;
750 for(iii=0;iii<8;iii++){
751 tx_data[iii]=buffer_istruzione[iii];
752 }
753 return valore_mis; //The value returned is the voltage in microV
754}
const struct ADC_coefficiente_type ADC_coefficiente[]
Node normalizing coeficinets used in ADC_lettura_24bit()
Definition: Adc.c:210
#define ADC_molteplicita_node_to_read
Definition: Adc.h:64
@ instr_readback_node_voltages
Nodes voltage read from external ADC.
uint8_t tx_data[8]
Transmission data vector.
Definition: Can.c:321
uint32_t volatile evento_CAN
This is the variable which resembles the flags from the communication.
Definition: Can.c:326
uint32_t tx_obj_idx
This is the variable which resembles the flags from the communication.
Definition: Can.c:323
unsigned int indirizzo_CAN_della_scheda
Per ora lo assegnamo cos\i l'indirizzo della scheda.
Definition: Can.c:335
volatile uint8_t rx_data[8]
Received data vector.
Definition: Can.c:318
ARM_DRIVER_CAN * CANdrv
Definition: Can.c:333
void ERROR_codifica_errore(uint8_t scheda_su_scheda_giu, unsigned char error_addres, unsigned char code_to_shift, uint8_t reset_count_se_0)
If an error is found its flag is codified here.
@ CAN_error_comunichiamo_qualche_dato_timeout_on_transmission
Transmission CAN error.
@ error_address_CAN
Error register for CAN bus
void Analog_mux_line_to_select_deselect(uint8_t scheda_su_scheda_giu, uint8_t line_to_select, uint8_t select_1_deselect_0)
Selection of the line to mesure with the analog MUX of the mainboard, driven by the I2C->parallel mux...
@ node_voltage_Analog_Mux_0_offset
Starting Offset for this set of nodes, 32.
int32_t preamplifier_ADC_external_measured_node_function(uint8_t scheda_su_scheda_giu, uint8_t indice)
This function provide node reading from an external ADC.
void Aspetta_tanti_ms(int millisecondi)
The timing function.
Definition: Timer.c:52

Definition at line 712 of file Preamplifier_Offset_Drift_Correcttion.c.