423 #define numero_ripetizioni 3
424 uint8_t canale, indice , ripetizioni, preamplifier_canali_da_regolare_locale=preamplifier_canali_da_regolare_old,trimmer_per_ini;
426 uint16_t iii,media_prov;
428 int32_t ADC_misura_fatta_prov,ADC_misura_fatta_prov_vet[200],ADC_misura_fatta_[12], *pendenza_trimmer;
431 pendenza_trimmer = preamplifier_coarse_step_trimmer;
434 pendenza_trimmer = preamplifier_fine_step_trimmer;
438 if(scheda_su_scheda_giu==1) scheda_su_scheda_giu=6;
442 for(ripetizioni= 0; ripetizioni < numero_ripetizioni ;ripetizioni++){
445 for(canale=0; canale<6;canale++){
446 indice= canale + scheda_su_scheda_giu;
448 if( (preamplifier_canali_da_regolare_locale >> canale) & 1){
455 for(canale=0; canale<6;canale++){
456 indice= canale + scheda_su_scheda_giu;
458 if( (preamplifier_canali_da_regolare_locale >> canale) & 1){
459 if( (ADC_misura_fatta_[indice]<preamplifier_positive_saturation) && (ADC_misura_fatta_[indice]> preamplifier_negative_saturation)){
461 delta = ( preamplifier_Output_offset_target_at_the_moment[indice] - ADC_misura_fatta_[indice] ) / pendenza_trimmer[indice] ;
462 delta += (( preamplifier_Output_offset_target_at_the_moment[indice] - ADC_misura_fatta_[indice] ) % pendenza_trimmer[indice] ) / (pendenza_trimmer[indice]>>1);
473 termalizzazione_fatta[indice]=1;
478 if ( (delta<3) && (delta>-3)){
479 preamplifier_canali_da_regolare_locale -= 1<<canale ;
482 if (delta<0)delta=-delta;
486 preamplifier_SAR_ini[indice].starting_value=0;
489 preamplifier_SAR_ini[indice].starting_exp_value[ trimmer_per_ini]= 1;
490 }
else if (delta <= 3) {
491 preamplifier_SAR_ini[indice].starting_exp_value[ trimmer_per_ini]= 2;
492 }
else if (delta <= 10){
493 preamplifier_SAR_ini[indice].starting_exp_value[ trimmer_per_ini]= 3;
494 }
else if (delta > 10){
495 preamplifier_SAR_ini[indice].starting_exp_value[ trimmer_per_ini]= 5;
499 preamplifier_canali_da_regolare_locale -= 1<<canale ;
500 preamplifier_SAR_ini[indice].starting_value=0;
505 for(canale=0; canale<6;canale++){
506 indice= canale + scheda_su_scheda_giu;
508 if( (preamplifier_canali_da_regolare_locale >> canale) & 1){
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...
void preamplifier_trova_il_guess(uint8_t trimmer_da_usare)
void preamplifier_determina_trimmer_therma_comp(uint8_t scheda_su_scheda_giu, uint8_t canale, uint8_t valore_previsto_trimmer_offset, uint8_t solo_recupero_default_comp_se_1)
This function determines and set the thermal compensation trimmer.
void Aspetta_tanti_ms(int millisecondi)
The timing function.
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
volatile int8_t vettore_istruzioni[8]
This is a copy of the received 8 bytes from the CAN.