This function provide the output offset with the fast SAR method: only a few LS bits are left for this.
749 uint8_t canale, non_misuro;
751 int32_t variabile_ponte,ADC_misura_fatta_pos,ADC_misura_fatta_neg,mezzo_bit;
753 uint8_t target_raggiunto_1_non_raggiunto_0[]={0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0};
757 if(scheda_su_scheda_giu_>=1) scheda_su_scheda_giu_=6;
761 for (canale=0;canale<6;canale++){
762 if( (Detector_canali_da_regolare >> canale ) & 1) {
765 mezzo_bit = mezzo_bit - EPROM_detector_sar[canale].slope_coarse_positiva - EPROM_detector_sar[canale].slope_coarse_negativa;
772 Detector_canali_da_regolare=0;
776 mezzo_bit = mezzo_bit / (4*iii) ;
782 for(indice_trimmer=0; indice_trimmer<2;indice_trimmer++){
785 for(canale=0;canale<6;canale++){
786 if( (Detector_canali_da_regolare >> canale ) & 1){
787 Detector_SAR_ini[canale + scheda_su_scheda_giu_].target_non_raggiunto_neg=
true;
788 Detector_SAR_ini[canale +scheda_su_scheda_giu_].target_non_raggiunto_pos=
true;
794 for (canale=0;canale<6;canale++){
795 if( (Detector_canali_da_regolare >> canale ) & 1) {
796 indice= canale + scheda_su_scheda_giu_;
798 mezzo_bit = mezzo_bit + EPROM_detector_sar[canale].slope_fine_negativa + EPROM_detector_sar[canale].slope_fine_positiva;
808 mezzo_bit = mezzo_bit / (4*iii) ;
809 if( Detector_error_voltage > mezzo_bit) mezzo_bit = Detector_error_voltage;
817 for(scalata=0; scalata<8; scalata++){
818 confronto= 1 << (7-scalata);
820 for(canale=0; canale<6;canale++){
821 indice= canale + scheda_su_scheda_giu_;
822 if( (Detector_canali_da_regolare >> canale) & 1){
823 if( ((Detector_SAR_ini[indice].starting_exp_value_pos >= (7-scalata))) &&\
824 Detector_SAR_ini[indice].target_non_raggiunto_pos){
830 if( ((Detector_SAR_ini[indice].starting_exp_value_neg >= (7-scalata))) && \
831 Detector_SAR_ini[indice].target_non_raggiunto_neg){
842 for(canale=0; canale<6;canale++){
843 indice= canale + scheda_su_scheda_giu_;
844 if( (Detector_canali_da_regolare >> canale) & 1){
865 if( (Detector_SAR_ini[indice].target_non_raggiunto_pos) && \
866 (Detector_SAR_ini[indice].starting_exp_value_pos >= (7-scalata))){
876 if( (Detector_SAR_ini[indice].target_non_raggiunto_neg) && \
877 (Detector_SAR_ini[indice].starting_exp_value_neg >= (7-scalata))){
887 Detector_canali_da_regolare=0;
891 if( (Detector_SAR_ini[indice].target_non_raggiunto_pos) && (Detector_SAR_ini[indice].starting_exp_value_pos >= (7-scalata))){
902 Detector_SAR_ini[indice].target_non_raggiunto_pos =
false;
920 Detector_SAR_ini[indice].target_non_raggiunto_pos =
false;
926 if( (Detector_SAR_ini[indice].target_non_raggiunto_neg) && \
927 (Detector_SAR_ini[indice].starting_exp_value_neg >= (7-scalata))){
946 Detector_SAR_ini[indice].target_non_raggiunto_neg =
false;
958 Detector_SAR_ini[indice].target_non_raggiunto_neg =
false;
962 if( (Detector_SAR_ini[indice].target_non_raggiunto_neg || Detector_SAR_ini[indice].target_non_raggiunto_pos)==
false){
964 Detector_canali_da_regolare -= 1 << 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...
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)
static void Detector_aggiusta_offset_SAR(EPROM_detector__ *EPROM_detector_sar, uint8_t scheda_su_scheda_giu_)
This function provide the output offset with the fast SAR method: only a few LS bits are left for thi...
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.
@ ADC_internal_General_fails
ADC general fault.
@ error_address_reg_ADC0
Error register for ADC0.
@ 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.
void Aspetta_tanti_ms(int millisecondi)
The timing function.
uint8_t contenuto_trimmer_detector[12][4]
Content of the trimmer for detector bias system.
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...