CROSS Technical Documentation User Manual and Technical Doc.
INFN Milano Bicocca
Loading...
Searching...
No Matches

◆ PGA_preparation_to_gain_set()

void PGA_preparation_to_gain_set ( char  chi_aggiustiamo,
unsigned int  guadagno_da_impostare 
)

It sets the new gain letting the output offset at the same level.

Parameters
[in]chi_aggiustiamowhich channels to adjust
[in]guadagno_da_impostarethe gain to set
Returns
No Parameters.
382void PGA_preparation_to_gain_set(char chi_aggiustiamo, unsigned int guadagno_da_impostare){
383
384 int misura_finale[2], offset;
385 char nodo_di_misura_1[]={ADC_ADC_PGA_neg_out_ch0, ADC_ADC_PGA_neg_out_ch1};
386 char nodo_di_misura_2[]={ADC_ADC_PGA_pos_out_ch0, ADC_ADC_PGA_pos_out_ch1};
387 int coarse_trimmer_step[] ={ coarse_Trimmer_offset_step_actual[0] * guadagno_minimo_PGA,coarse_Trimmer_offset_step_actual[1] * guadagno_minimo_PGA} ; //*********************************************
388 int fine_trimmer_step[] = {fine_Trimmer_offset_step_actual[0] * guadagno_minimo_PGA, fine_Trimmer_offset_step_actual[1] * guadagno_minimo_PGA} ; //*********************************************
389 char canale;
390 if (guadagno_da_impostare<guadagno_minimo_PGA) guadagno_da_impostare=guadagno_minimo_PGA;
391 if( guadagno_da_impostare > massimo_guadagno_impostabile ) guadagno_da_impostare =massimo_guadagno_impostabile ;
392
393 for( canale=0;canale<2;canale++){
394 if( (chi_aggiustiamo >> canale) & 1){
395// offset=lettura_ADC( nodo_di_misura_1[canale]) - lettura_ADC( nodo_di_misura_2[canale]); //Il <<1 \'e per renderlo differenziale
396 valore_target_per_offset[canale]=correzione_misura_ADC(coeffcienti_misura_ADC_nodi[nodo_di_misura_1[canale]], offset);
397 //Voglim mantenere la tenione allo stesso livello se \'e in scala, altrimenti aggiustiamo a zero
398 if( (valore_target_per_offset[canale] >= saturazione_positiva) || ( valore_target_per_offset[canale] <= saturazione_negativa ) ) {
399 valore_target_per_offset[canale]=0;
400 }else{
401 //Se il nuovo gain
402 valore_target_per_offset[canale] = ( valore_target_per_offset[canale] * (int)guadagno_minimo_PGA ) / (int)guadagno_da_impostare ;
403 }
404
405 }
406 }
407
408PGA_GAIN_set(chi_aggiustiamo, 1);
409
410
411//offset_Adjust_core( chi_aggiustiamo, valore_target_per_offset, nodo_di_misura_1, nodo_di_misura_2, \
412// ((fine_trimmer_step[0]+fine_trimmer_step[1])>>1), coarse_trimmer_step, fine_trimmer_step, 10, misura_finale);
413
414PGA_GAIN_set(chi_aggiustiamo, guadagno_da_impostare);
415
416
417 for( canale=0;canale<2;canale++){
418 if( (chi_aggiustiamo >> canale) & 1){
419// offset=lettura_ADC( nodo_di_misura_1[canale]) - lettura_ADC( nodo_di_misura_2[canale]); //Il <<1 \'e per renderlo differenziale
420 offset=correzione_misura_ADC(coeffcienti_misura_ADC_nodi[nodo_di_misura_1[canale]], offset) * (int)guadagno_minimo_PGA / (int)guadagno_da_impostare ;
421 int correzione = ( valore_target_per_offset[canale] - offset ) / (( (fine_trimmer_step[0]+fine_trimmer_step[1])>>1) ) ;
422 Trimmer_offset_preampli[canale].fine_offset= Trimmer_offset_preampli[canale].fine_offset - correzione;
423 if (Trimmer_offset_preampli[canale].fine_offset >255) Trimmer_offset_preampli[canale].fine_offset=255;
424 if( Trimmer_offset_preampli[canale].fine_offset <0 ) Trimmer_offset_preampli[canale].fine_offset=0;
425 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CA (canale, preampli_fine_offset_trimmer, Trimmer_offset_preampli[canale].fine_offset);
426 }
427 }
428
429}
uint8_t massimo_guadagno_impostabile
Definition: DAC_PGA.c:89
uint8_t guadagno_minimo_PGA
Definition: DAC_PGA.c:88
void PGA_preparation_to_gain_set(char chi_aggiustiamo, unsigned int guadagno_da_impostare)
It sets the new gain letting the output offset at the same level.
Definition: DAC_PGA.c:382
void PGA_GAIN_set(char canale, unsigned int guadagno_da_impostare)
It sets the new gain irrespective of the offset.
Definition: DAC_PGA.c:443

Definition at line 382 of file DAC_PGA.c.