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

◆ ADC_scrittura_registro()

void ADC_scrittura_registro ( char  ADC_0_o_1,
uint8_t  up_down,
uint8_t  indirizzo_registro_ch0,
int32_t  value_to_write 
)

This function allows to read a whatver regsiter of the ADC.

Parameters
[in]ADC_0_o_1: which of the 2 ADCs the register is considered
[in]up_down: which of the 2 ADCs to consider
[in]indirizzo_registro_ch0: the address of the register to read. the address is for ch0. If ch1 is selected according to ADC_0_o_1
[in]value_to_write: the value to write in the register
Returns
no return.
654void ADC_scrittura_registro(char ADC_0_o_1 /*0=ADC0, 1=ADC1*/, uint8_t up_down, uint8_t indirizzo_registro_ch0, int32_t value_to_write){
655// unsigned long int registro_di_controllo;
656
657 uint8_t byte_da_trasmettere_ricevere=2;
658 if(up_down>1)up_down=1;
659 if( (indirizzo_registro_ch0>=5) && (indirizzo_registro_ch0<=0x18) ) byte_da_trasmettere_ricevere=4;
660
661 uint8_t ii=0,scelta_ADC=indirizzo_registro_ch0, *valore_da_trasmettere, registro_scrittura=value_to_write ;
662
663 const porta_pin_def *ref_locale, *ref_locale_ADCready;
664
665 if ( up_down == I2C_mux_Scheda_giu){
666 ref_locale =&ADC_Chip_Sel_down;
667 }else{
668 ref_locale =&ADC_Chip_Sel_up;
669 }
670
671 if (indirizzo_registro_ch0 ==0x38){
672 registro_scrittura= indirizzo_registro_ch0 ; //il mode register, 0x38 si pu\'o leggere solo sul canale CH0
673 }else{
674 registro_scrittura= indirizzo_registro_ch0 + ADC_0_o_1*2 ;
675 }
676
677 valore_da_trasmettere= (uint8_t *) &value_to_write ;
678
679 GPIO_PinWrite(ref_locale->porta_num, ref_locale->pin_num, 0); // Viene abbassato il chip selector ADC per la lettura
680
681// SPIdrv->Receive ( &valore_da_trasmettere ,3);
682 uint8_t istruzione[]={registro_scrittura,valore_da_trasmettere[0],valore_da_trasmettere[1],valore_da_trasmettere[2]};
683 SPIdrv->Send ( &istruzione ,byte_da_trasmettere_ricevere);
684// while( (SPIdrv->GetStatus().busy) ){}
685
686 uint8_t troppa_attesa=0;
687 while( (SPIdrv->GetStatus().busy) && (troppa_attesa <250) ){
689 troppa_attesa++;
690 } //wait end of transmission ;
691 if((troppa_attesa>=250) || (Error_bad_operation)) ERROR_codifica_errore(scheda_su_scheda_giu, error_address_SPI, SPI_error_EVENT_DATA_LOST,1);
692
693 GPIO_PinWrite(ref_locale->porta_num, ref_locale->pin_num, 1); // Viene abbassato il chip selector ADC per la lettura
694
695
696}
void ADC_scrittura_registro(char ADC_0_o_1, uint8_t up_down, uint8_t indirizzo_registro_ch0, int32_t value_to_write)
This function allows to read a whatver regsiter of the ADC.
Definition: Adc.c:654
volatile uint32_t Error_bad_operation
exploited to mark the errors
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_SPI
Error register for SPI.
@ SPI_error_EVENT_DATA_LOST
This is ARM_SPI_EVENT_DATA_LOST.
const porta_pin_def ADC_Chip_Sel_up
Configuration ADC pin.
Definition: Gpio.c:146
const porta_pin_def ADC_Chip_Sel_down
Configuration ADC pin.
Definition: Gpio.c:149
#define I2C_mux_Scheda_giu
Selection of the I2C1 for lower board (purtroppo \'e contorto)
Definition: I2C_mux.h:16
void Aspetta_tanti_ms(int millisecondi)
The timing function.
Definition: Timer.c:52
Definition: Gpio.h:13

Definition at line 654 of file Adc.c.