321 uint8_t canale,internalADC_0_externalADC_1=(
tx_data[4] & 1), canale_selezionato=10;
322 uint8_t trimmer_old[4], PGA_Gain_old[12], trimmer_fine_test, trimmer_coarse_test;
323 uint8_t *dati_da_scrivere,dati_da_leggere[]={0,0,0,0};
325 int32_t pendenza_fine=0,pendenza_coarse=0,trimmer_riferimento_fine = (*(uint16_t *)&
tx_data[0]);
326 int32_t ADC_misura_fatta_first,ADC_misura_fatta_last,trimmer_riferimento_coarse= (*(uint16_t *)&
tx_data[2] ) *10;
329 scheda_su_scheda_giu = ((
tx_data[6] >> 7) & 1)*6;
331 for(canale=0;canale<6;canale++){
333 canale_selezionato=canale;
338 for(canale=0;canale<4;canale++){
342 for(canale=0;canale<6;canale++){
360 if( (ADC_misura_fatta_first > trimmer_max_voltage_per_trimmer_calibration) || \
361 (ADC_misura_fatta_first <-trimmer_max_voltage_per_trimmer_calibration)){
370 trimmer_fine_test= 0;
372 trimmer_fine_test =255;
385 pendenza_fine = (ADC_misura_fatta_first - ADC_misura_fatta_last) \
387 if( (pendenza_fine > ((trimmer_riferimento_fine *12)/10)) \
388 || (pendenza_fine <((trimmer_riferimento_fine *10)/12) )){
390 pendenza_fine = trimmer_riferimento_fine;
394 dati_da_scrivere= (uint8_t *)&pendenza_fine;
396 ADC_misura_fatta_first = ADC_misura_fatta_last;
398 if(dati_da_leggere[0]>3){
399 dati_da_leggere[0]=1;
401 dati_da_leggere[0] |=1;
403 dati_da_leggere[1]=0;dati_da_leggere[2]=0;dati_da_leggere[3]=0;
424 pendenza_coarse = (ADC_misura_fatta_first - ADC_misura_fatta_last) \
426 if( (pendenza_coarse > ((trimmer_riferimento_coarse *12)/10)) \
427 || (pendenza_coarse <((trimmer_riferimento_coarse *10)/12) )){
429 pendenza_coarse = trimmer_riferimento_coarse;
433 dati_da_scrivere= (uint8_t *)&pendenza_coarse;
437 if(dati_da_leggere[0]>3){
438 dati_da_leggere[0]=2;
440 dati_da_leggere[0] |=2;
442 dati_da_leggere[1]=0;dati_da_leggere[2]=0;dati_da_leggere[3]=0;
447 if(dati_da_leggere[0]==3){
448 dati_da_leggere[0]=0;
449 dati_da_leggere[1]=0;dati_da_leggere[2]=0;dati_da_leggere[3]=0;
453 pendenza_fine = pendenza_fine;
454 tx_data[0]= pendenza_fine & 0xff;
455 tx_data[1] =(pendenza_fine >> 8) & 0xff;
456 pendenza_coarse = pendenza_coarse /10 ;
457 tx_data[2]= pendenza_coarse & 0xff;
458 tx_data[3]= ( pendenza_coarse >> 8) & 0xff;
460 for(canale=0;canale<4;canale++){
465 for(canale=0;canale<6;canale++){
466 PGA_GAIN_CROSS( scheda_su_scheda_giu, canale, PGA_Gain_old[canale] );
int32_t ADC_misura_differenziale_con_media_generico(uint8_t scheda_su_scheda_giu_, uint8_t preamplifier_externalADC_1_onboardADC_0, uint8_t nodo_da_misurare, uint8_t differenziale_1_single_0)
This function sets the original gain when a few LSb have to be determined. The umber of bits is bit_t...
volatile uint16_t ADC_medie_per_misura
the number of ADC readings to average, the maximum is 400
uint8_t tx_data[8]
Transmission data vector.
void PGA_GAIN_CROSS(uint8_t scheda_su_scheda_giu, uint8_t canale, uint8_t PGA_gain_to_set)
Here the 2 digital signals from the trimmer are exploited to set the gain of the input stage of the P...
uint8_t PGA_settled_gain[12]
PGA set gain.
void Error_imposta_la_istruzione(void)
Function to be located at the end of every instruction to mark the error, if any.
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.
@ node_voltage_PGA_ch_0
Node voltage selection of PGA differential or positive.
void EPROM_lettura_M24C32_64(uint8_t scheda_su_scheda_giu_, uint8_t mainboard_postmainboard, uint8_t canale, short indirizzo_memoria, uint8_t *dati_letti)
Read from preamplifier and on-board flashes.
void EPROM_scrittura_M24C32_64(uint8_t scheda_su_scheda_giu, uint8_t mainboard_postmainboard, uint8_t canale, short indirizzo_memoria, uint8_t *dati_da_scrivere)
Wriring the EEPROM.
@ Memory_preamplifier_slope_calibration_ON_0_OFF_ff
slope trimmer active if zero
@ Memory_preamplifier_address_fine_trimmer_slope_offset
fine slope for trimmer offset
@ Memory_preamplifier_address_coarse_trimmer_slope_offset
coarse slope for trimmer offset
#define preamplifier_scrivi_il_trimmer
void Aspetta_tanti_ms(int millisecondi)
The timing function.
void instr_offset_trimmer_calibration_function(void)
The fine and coarse trimmers for offset adjustment are calibrated here
uint8_t volatile contenuto_trimmer_preamplifier[12][4]
void preamplifier_scrittura_lettura_trimmer(uint8_t scheda_su_scheda_giu, uint8_t canale, uint8_t trimmer, uint8_t valore, uint8_t scrivi_1_leggi_0)
Setting the value of any trimmer for preamplifier trimmer, the contents of the trimmers are stored in...
#define trimmer_fine_offset
#define trimmer_coarse_offset