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

◆ ADC_selfcal_zero_scale()

void ADC_selfcal_zero_scale ( uint8_t  up_down)

ADC self-calibration. ADC needs to be pre-selected.

Returns
No return
296void ADC_selfcal_zero_scale(uint8_t up_down){
297 const porta_pin_def *ref_locale,*ref_locale_ADCready;
298 uint8_t limite=0;
299 if ( up_down == I2C_mux_Scheda_giu){
300 ref_locale =&ADC_Chip_Sel_down;
301 ref_locale_ADCready=&ADC_ready_down;
303 }else{
304 ref_locale =&ADC_Chip_Sel_up;
305 ref_locale_ADCready=&ADC_ready_up;
307 }
308 GPIO_PinWrite(ref_locale->porta_num, ref_locale->pin_num, 0); // Viene abbassato il chip selector ADC per la lettura
309
310 uint8_t valore_da_trasmettere[]={ ADC_mode_reg_ch0, ADC_ZeroScaleCalibration_com}; //Calibriamo il CH0
311 SPIdrv->Send ( &valore_da_trasmettere ,2);
312// while( (SPIdrv->GetStatus().busy) ){
313// limite++;
314// Aspetta_tanti_ms(1);
315// }
316// if( (limite>=10) || Error_bad_operation) ERROR_codifica_errore(up_down, error_address_SPI, Error_bad_operation, 1);
317
318 uint8_t troppa_attesa=0;
319 while( (SPIdrv->GetStatus().busy) && (troppa_attesa <250) ){
321 troppa_attesa++;
322 } //wait end of transmission ;
324
325 limite=0;
326 while (( GPIO_PinRead(ref_locale_ADCready->porta_num,ref_locale_ADCready->pin_num) == 1 ) )
327 { // Si aspetta che il risultato sia pronto ( notRDY=0 )
329 limite++;
330 }
331 if( (limite>=10) ) ERROR_codifica_errore(up_down, error_address_reg_ADC0, ADC_RDY_pin_fault, 1);
332
333 GPIO_PinWrite(ref_locale->porta_num, ref_locale->pin_num, 1); // Viene alzato il chip selector ADC per la lettura
334 ADC_Sleep_fun(up_down + ADC_sleep_off);
335}
void ADC_Sleep_fun(uint8_t up_down)
ADC is sent to sleep mode.
Definition: Adc.c:262
void ADC_Wakeup(uint8_t up_down)
ADC Wakeup and 24 bits reading.
Definition: Adc.c:388
volatile uint8_t ADC_sleep_off
if 0 ADC in sleep when not working, ADC>1 ADC never sleep
Definition: Adc.c:205
void ADC_selfcal_zero_scale(uint8_t up_down)
ADC self-calibration. ADC needs to be pre-selected.
Definition: Adc.c:296
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.
@ ADC_RDY_pin_fault
ADC ready not received.
@ error_address_reg_ADC0
Error register for ADC0.
@ error_address_SPI
Error register for SPI.
@ SPI_error_EVENT_DATA_LOST
This is ARM_SPI_EVENT_DATA_LOST.
const porta_pin_def ADC_ready_down
Configuration ADC pin.
Definition: Gpio.c:148
const porta_pin_def ADC_Chip_Sel_up
Configuration ADC pin.
Definition: Gpio.c:146
const porta_pin_def ADC_ready_up
Configuration ADC pin.
Definition: Gpio.c:145
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
#define I2C_mux_Scheda_su
Selection of the I2C0 for the upper board (purtroppo \'e contorto)
Definition: I2C_mux.h:15
void Aspetta_tanti_ms(int millisecondi)
The timing function.
Definition: Timer.c:52
Definition: Gpio.h:13

Definition at line 296 of file Adc.c.