3#include "tutti_gli_header.h"
79void termometro_lettura( uint8_t scheda_su_scheda_giu, uint8_t canale, uint32_t *temperatura_in_microK ){
82 #define reg_temperatura 0
83 #define reg_configuration 1
84 #define reg_control_status 4
86 #define Shut_down_and_one_shot_command_for_config_reg 0x84
87 #define Max_accuracy_command_for_control_reg 0x60
88 #define maschera_DAV 1
90 uint8_t comando1[]={reg_control_status,Max_accuracy_command_for_control_reg};
91 uint8_t comando2[]={reg_configuration, Shut_down_and_one_shot_command_for_config_reg};
93 uint8_t comando3[]={reg_temperatura};
94 uint8_t comando4[]={reg_control_status};
101 I2C_mux -> MasterTransmit(
termometro_adrress[canale].indirizzo_I2C, comando1, 2,
false);
102 while( I2C_mux -> GetStatus().busy);
104 I2C_mux -> MasterTransmit(
termometro_adrress[canale].indirizzo_I2C, comando2, 2,
false);
105 while( I2C_mux -> GetStatus().busy);
111 while( ((lettura[0] & maschera_DAV) == 0) && (conta_err<10) ){
112 I2C_mux -> MasterTransmit(
termometro_adrress[canale].indirizzo_I2C, comando4 , 1,
false);
113 while( I2C_mux -> GetStatus().busy);
116 I2C_mux -> MasterReceive(
termometro_adrress[canale].indirizzo_I2C, lettura, 2,
false);
117 while( I2C_mux -> GetStatus().busy);
122 I2C_mux -> MasterTransmit(
termometro_adrress[canale].indirizzo_I2C, comando3, 1,
false);
123 while( I2C_mux -> GetStatus().busy);
126 I2C_mux -> MasterReceive(
termometro_adrress[canale].indirizzo_I2C, lettura, 2,
false);
127 while( I2C_mux -> GetStatus().busy);
129 *temperatura_in_microK = ((uint32_t)lettura[0] <<8 ) + (uint32_t) lettura[1] ;
130 *temperatura_in_microK = *temperatura_in_microK & 0x7FFF ;
131 *temperatura_in_microK = (*temperatura_in_microK >> 2 ) *31250;
151 #define reg_temperatura 0
152 #define reg_configuration 1
153 #define reg_control_status 4
155 #define Shut_down_and_one_shot_command_for_config_reg 0x84
156 #define Shut_down_config_reg 0x80
157 #define Max_accuracy_command_for_control_reg 0x60
158 #define maschera_DAV 1
160 uint8_t comando1[]={reg_control_status,Max_accuracy_command_for_control_reg};
161 uint8_t comando2[]={reg_configuration, Shut_down_config_reg};
163 uint8_t comando3[]={reg_temperatura};
164 uint8_t comando4[]={reg_control_status};
171 I2C_mux -> MasterTransmit(
termometro_adrress[canale].indirizzo_I2C, comando1, 2,
false);
172 while( I2C_mux -> GetStatus().busy);
174 I2C_mux -> MasterTransmit(
termometro_adrress[canale].indirizzo_I2C, comando2, 2,
false);
175 while( I2C_mux -> GetStatus().busy);
195void I2C_termometro_SignalEvent_t (uint32_t event)
197 if(event==ARM_I2C_EVENT_TRANSFER_DONE)
201 if(event==ARM_I2C_EVENT_SLAVE_TRANSMIT)
205 if(event==ARM_I2C_EVENT_SLAVE_RECEIVE)
217void I2C_termometro_Initialize (
void)
volatile uint32_t Error_bad_operation
exploited to mark the errors
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.
@ I2C_error_termometro_0
termometro ch0
@ error_address_I2C0_B
Error register B for I2C0
void I2C_mux_select_ch(uint8_t scheda_su_scheda_giu, uint8_t mainboard_postmainboard, uint8_t canale_da_abilitare)
The I2C mux.
#define I2C_mux_disabilita_tutto
i2C transmission/reception was bad
#define I2C_mux_abilita_2
Enable channel 2.
#define I2C_mux_abilita_1
Enable channel 1.
#define I2C_mux_abilita_0
Enable channel 0.
const struct address_detector_bias_trimmer_type termometro_adrress[6]
Thermometer selection structure.
void termometro_sht_down(uint8_t scheda_su_scheda_giu, uint8_t canale)
void termometro_lettura(uint8_t scheda_su_scheda_giu, uint8_t canale, uint32_t *temperatura_in_microK)
Read the termometer on preamplifier.
ARM_DRIVER_I2C Driver_I2C2
#define termometro_I2C_Address_dispari
I2C address of termometer in preamplifiers 1, 3 and 5.
#define termometro_I2C_Address_pari
I2C address of termometer in preamplifiers 0, 2 and 4.
static ARM_DRIVER_I2C * I2C_termometro_drv
Puntatore alla periferica I2C2.
void Aspetta_tanti_ms(int millisecondi)
The timing function.
Coordinates for the preamplifier and onboard EPROMs.