This function provides the guess values and the error about the detector trimmers. This function is static.
554 uint8_t canali_da_regolare, uint8_t trimmer_da_scrivere){
555uint8_t canale,indice=0,iii;
556 int32_t delta, delto, EPROM_detector_slope_pos[6],EPROM_detector_slope_neg[6],ADC_misura_fatta_neg,ADC_misura_fatta_pos,risul_vof;
557 uint8_t misura_da_fare_pos[6], misura_da_fare_neg[6];
558 if(scheda_su_scheda_giu_) scheda_su_scheda_giu_=6;
559 for( canale=0;canale<6;canale++){
560 if( (canali_da_regolare >> canale) & 1){
561 indice= canale + scheda_su_scheda_giu_;
562 misura_da_fare_pos[canale] = Detector_SAR_ini[indice].target_non_raggiunto_pos;
563 misura_da_fare_neg[canale] = Detector_SAR_ini[indice].target_non_raggiunto_neg;
567 EPROM_detector_slope_pos[canale] = EPROM_detector[canale].slope_coarse_positiva;
568 EPROM_detector_slope_neg[canale] = EPROM_detector[canale].slope_coarse_negativa;
570 EPROM_detector_slope_pos[canale] = EPROM_detector[canale].slope_fine_positiva;
571 EPROM_detector_slope_neg[canale] = EPROM_detector[canale].slope_fine_negativa ;
577 for( canale=0;canale<6;canale++){
578 if( (canali_da_regolare >> canale) & 1){
586 canali_da_regolare=0;
592 for( canale=0;canale<12;canale++){
593 Detector_SAR_ini[canale].starting_value_pos =128;
594 Detector_SAR_ini[canale].starting_value_neg =128;
599for( canale=0;canale<6;canale++){
600 if( (canali_da_regolare >> canale) & 1){
601 if( Detector_externalADC_1_onboardADC_0){
603 if(misura_da_fare_pos[canale]){
607 if(misura_da_fare_neg[canale]){
613 if(misura_da_fare_pos[canale]){
619 if(misura_da_fare_neg[canale]){
625 if(misura_da_fare_pos[canale]){
626 delta = Detector_SAR_ini[canale + scheda_su_scheda_giu_].starting_value_pos + ( (
Detector_bias_target[canale + scheda_su_scheda_giu_]\
627 - ADC_misura_fatta_pos) / EPROM_detector_slope_pos[canale ] ) ;
629 EPROM_detector_slope_pos[canale ] )\
630 / (EPROM_detector_slope_pos[canale]>>1);
631 if (delta <0) delta=0;
632 if (delta >0xff) delta=0xff;
633 Detector_SAR_ini[canale + scheda_su_scheda_giu_].starting_value_pos = delta;
638 if(misura_da_fare_neg[canale]){
639 delta =Detector_SAR_ini[canale+scheda_su_scheda_giu_ ].starting_value_neg + ( (-
Detector_bias_target[canale + scheda_su_scheda_giu_] -\
640 ADC_misura_fatta_neg) / EPROM_detector_slope_neg[canale ] ) ;
642 EPROM_detector_slope_neg[canale + scheda_su_scheda_giu_] )\
643 / (EPROM_detector_slope_neg[canale + scheda_su_scheda_giu_] >> 1);
644 if (delta <0) delta=0;
645 if (delta >0xff) delta=0xff;
646 Detector_SAR_ini[canale+scheda_su_scheda_giu_ ].starting_value_neg = delta;
654for( canale=0;canale<6;canale++){
655 if( (canali_da_regolare >> canale) & 1){
656 if( Detector_externalADC_1_onboardADC_0){
658 if(misura_da_fare_pos[canale]){
664 if(misura_da_fare_neg[canale]){
670 if(misura_da_fare_pos[canale]){
676 if(misura_da_fare_neg[canale]){
682 if(misura_da_fare_pos[canale]){
683 delta = ( (
Detector_bias_target[canale + scheda_su_scheda_giu_] - ADC_misura_fatta_pos) / EPROM_detector_slope_pos[canale ] ) ;
684 delta += ( (
Detector_bias_target[canale + scheda_su_scheda_giu_] - ADC_misura_fatta_pos) % EPROM_detector_slope_pos[canale ] )\
685 /(EPROM_detector_slope_pos[canale]>>1);
687 if( delto < 0) delto=-1*delto;
689 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_exp_value_pos=1;
690 }
else if (delto <=2){
691 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_exp_value_pos=2;
693 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_exp_value_pos=3;
695 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_exp_value_pos=7;
698 if(delta==0) delta =1;
699 delta = Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_value_pos - delto;
700 if(delta<0) Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_value_pos=0;
701 if( delta > 255) Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_value_pos=0xff;
702 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_value_pos =delta;
708if(misura_da_fare_neg[canale]){
709 delta =( (-
Detector_bias_target[canale + scheda_su_scheda_giu_] - ADC_misura_fatta_neg) / EPROM_detector_slope_neg[canale] ) ;
710 delta +=( (-
Detector_bias_target[canale + scheda_su_scheda_giu_] - ADC_misura_fatta_neg) % EPROM_detector_slope_neg[canale] )\
711 / (EPROM_detector_slope_neg[canale]>>1);
713 if( delto < 0) delto=-1*delto;
715 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_exp_value_neg=1;
716 }
else if (delto <=2){
717 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_exp_value_neg=2;
719 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_exp_value_neg=3;
721 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_exp_value_neg=7;
723 if(delta==0) delta=1;
724 delta = Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_value_neg - delto;
725 if(delta<0) Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_value_neg=0;
726 if( delta > 255) Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_value_neg=0xff;
727 Detector_SAR_ini[canale +scheda_su_scheda_giu_].starting_value_neg = delta;
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...
static void misura_il_valore_trimmer_detector(EPROM_detector__ *EPROM_detector, uint8_t scheda_su_scheda_giu_, uint8_t canali_da_regolare, uint8_t trimmer_da_scrivere)
int32_t Detector_bias_target[12]
Detector bias target values.
#define Detector_trimmer_fine_bias_pos
#define Detector_trimmer_coarse_bias_pos
#define Detector_trimmer_fine_bias_neg
#define Detector_trimmer_coarse_bias_neg
#define Detector_scrivi_il_trimmer
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.
@ error_address_PGA_DetectorTrimmer_down
Error register for on board PGA/detector trimmer
@ DetectorTrimmer_error_0
detector trimmer setting error for CH0
@ 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.
void detector_scrittura_lettura_trimmer_bias(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 detector biasing, the contents of the trimmers are stored in the...