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

◆ instruction_Some_parameters_to_set()

void instruction_Some_parameters_to_set ( void  )

Some usefull parematers can be set here.

The list of parameters is the enum DA AGGIUNGERE This instruction needs to know which parameter to set at byte istruzione_byte_4_e_scelta_canale and the parameter value at bytes byte_istr_dati_0 and byte_istr_dati_1 of the CAN message.

Returns
No Parameters, the actual result is sent to the CAN bus output throught tx_data.
578 //The second byte from the CAN says which paremetr to set
579 //The last byt from the CAN says which value to set
580 char ii, canale;
581enum R_W_Parameters {
582 read_write_value_for_wait_for_ADC_setting , //!< NOP, in future release the fw version will be replayed
583 read_write_medie_ADC,
584 read_PGA_Gain_code,
585 read_PGA_Gain_V_su_V,
586 read_write_guadagno_minimo_PGA,
587 read_write_massimo_guadagno_impostabile,
588 read_write_Trimmer_offset_preampli,
589 read_write_Trimmer_thermal_preampli,
590 read_write_Trimmer_detector_bias_positive,
591 read_write_Trimmer_detector_bias_negative,
592 read_write_Trimmer_drift_in_micro_su_C,
593 read_write_Trimmer_common_mode
594} ;
595 //Da aggiungere:
596
598 for(ii =0;ii<2;ii++){
599 if( (sottoistruzione >> ii) && 1) canale=ii;
600 }
601
603 {
604 case read_write_value_for_wait_for_ADC_setting:
605 {
608 //MAximu time is 10 sec: time from the mux and ADC setting and the measurement
609 //Default is 100 ms
611 }
613 tx_data[1]= (wait_for_ADC_setting >>8 ) & 0xFF;
614 return;
615 }
616 case read_write_medie_ADC:
617 {
620 //Default is 2: take care the number of averages is (1 << medie_ADC), or 2^medie_ADC
621 }
622 tx_data[0]= medie_ADC &0xFF;
623 return;
624 }
625 case read_PGA_Gain_code: //Read only
626 {
627 tx_data[0]= PGA_Gain_code[canale] & 0xFF;
628 tx_data[1]= (PGA_Gain_code[canale] >>8 ) & 0xFF;
629 return;
630 }
631 case read_PGA_Gain_V_su_V:
632 {
633 tx_data[0]= PGA_Gain_V_su_V[canale] & 0xFF;
634 return;
635 }
636 case read_write_guadagno_minimo_PGA:
637 {
640 //Default is 4:
641 }
642 tx_data[0]= guadagno_minimo_PGA &0xFF;
643 return;
644 }
645 case read_write_massimo_guadagno_impostabile:
646 {
649 //Default is 100:
650 }
652 return;
653 }
654 case read_write_Trimmer_offset_preampli:
655 {
657 Trimmer_offset_preampli[canale].coarse_offset= vettore_istruzioni[byte_istr_dati_1];
658 Trimmer_offset_preampli[canale].fine_offset = vettore_istruzioni[byte_istr_dati_0];
659 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CA (canale, preampli_corse_offset_trimmer, Trimmer_offset_preampli[canale].coarse_offset);
660 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CA (canale, preampli_fine_offset_trimmer, Trimmer_offset_preampli[canale].fine_offset);
661 }
662 tx_data[0]= Trimmer_offset_preampli[canale].fine_offset & 0xFF;
663 tx_data[1]= Trimmer_offset_preampli[canale].coarse_offset & 0xFF;
664 return;
665 }
666 case read_write_Trimmer_thermal_preampli:
667 {
669 Trimmer_offset_preampli[canale].coarse_thermal= vettore_istruzioni[byte_istr_dati_1];
670 Trimmer_offset_preampli[canale].JFET_Offset = vettore_istruzioni[byte_istr_dati_0];
671// Trimmer_offset_preampli[canale].fine_thermal = vettore_istruzioni[byte_istr_dati_0];
672 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CA (canale, preampli_coarse_thermal_trimmer , Trimmer_offset_preampli[canale].coarse_thermal);
673 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CA (canale, preampli_JFET_Offset_trimmer , Trimmer_offset_preampli[canale].JFET_Offset);
674// Imposta_canale_del_trimmer_ennesimo_al_valore_I2CA (canale, preampli_fine_thermal_trimmer, Trimmer_offset_preampli[canale].fine_thermal);
675 }
676// tx_data[0]= Trimmer_offset_preampli[canale].fine_thermal & 0xFF;
677 tx_data[1]= Trimmer_offset_preampli[canale].coarse_thermal & 0xFF;
678 tx_data[0]= Trimmer_offset_preampli[canale].JFET_Offset & 0xFF;
679 return;
680 }
681 case read_write_Trimmer_detector_bias_positive:
682 {
684 detector_Trimmer_bias[canale].fine_pos= vettore_istruzioni[byte_istr_dati_0];
685 detector_Trimmer_bias[canale].coarse_pos = vettore_istruzioni[byte_istr_dati_1];
686 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CB (canale, trimmer_bias_coarse_pos, detector_Trimmer_bias[canale].coarse_pos);
687 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CB (canale, trimmer_bias_fine_pos, detector_Trimmer_bias[canale].fine_pos);
688 }
689 tx_data[0]= detector_Trimmer_bias[canale].fine_pos & 0xFF;
690 tx_data[1]= detector_Trimmer_bias[canale].coarse_pos & 0xFF;
691 return;
692 }
693 case read_write_Trimmer_detector_bias_negative:
694 {
696 detector_Trimmer_bias[canale].fine_neg= vettore_istruzioni[byte_istr_dati_0];
697 detector_Trimmer_bias[canale].coarse_neg = vettore_istruzioni[byte_istr_dati_1];
698 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CB (canale, trimmer_bias_coarse_neg, detector_Trimmer_bias[canale].coarse_neg);
699 Imposta_canale_del_trimmer_ennesimo_al_valore_I2CB (canale, trimmer_bias_fine_neg, detector_Trimmer_bias[canale].fine_neg);
700 }
701 tx_data[0]= detector_Trimmer_bias[canale].fine_neg & 0xFF;
702 tx_data[1]= detector_Trimmer_bias[canale].coarse_neg & 0xFF;
703 return;
704 }
705 case read_write_Trimmer_drift_in_micro_su_C:
706 {
708 reference_thermal_drift_actual= vettore_istruzioni[byte_istr_dati_0];
709 }
710 case read_write_Trimmer_common_mode:
711 {//Lettura/scrittura del trimmer per aggiustare il CMRR
713 Trimmer_CMRR_JFET_COLD.CMRR[canale]=vettore_istruzioni[byte_istr_dati_0];
714 Imposta_trimmer_common_mode_I2CB ( Trimmer_numero_offset + canale, Trimmer_CMRR_JFET_COLD.CMRR[canale]);
715 }
716 tx_data[0]= Trimmer_CMRR_JFET_COLD.CMRR[canale] & 0xFF;
717 tx_data[1]= 0;
718 return;
719 }
720 }
721 }
722}
unsigned char medie_ADC
The number of averages done is 1 << medie_ADC, or 2^medie_ADC.
Definition: Adc.c:985
uint8_t tx_data[8]
Transmission data vector.
Definition: Can.c:321
uint8_t massimo_guadagno_impostabile
Definition: DAC_PGA.c:89
uint8_t guadagno_minimo_PGA
Definition: DAC_PGA.c:88
void instruction_Some_parameters_to_set(void)
Some usefull parematers can be set here.
Definition: Istruzioni.c:577
#define istruzione_byte_3
Definition: Istruzioni.h:23
#define istruzione_byte_2
Definition: Istruzioni.h:22
#define byte_istr_dati_1
Definition: Istruzioni.h:26
#define byte_istr_dati_0
Definition: Istruzioni.h:25
#define istruzione_byte_4_e_scelta_canale
Definition: Istruzioni.h:24
int wait_for_ADC_setting
settable from the can
volatile int8_t vettore_istruzioni[8]
This is a copy of the received 8 bytes from the CAN.

Definition at line 577 of file Istruzioni.c.