Post Go back to editing

ADUCM360 ADC voltange range setup

Hello,

I'm trying to configure the ADC on ADUCM360 in order to read the voltage connected to a PT100 resistor. The input value range goes from about 2V to 3V. This is the code I'm using:

 AdcGo(pADI_ADC1,ADCMDE_ADCMD_IDLE);     // Place ADC1 in Idle mode
   AdcMski(pADI_ADC1,ADCMSKI_RDY,1);              // Enable ADC ready interrupt source        
   AdcFlt(pADI_ADC1,0,0,FLT_NORMAL|ADCFLT_NOTCH2|ADCFLT_CHOP); // ADC filter set for max update rate with chop on enabled
   AdcRng(pADI_ADC1,ADCCON_ADCREF_AVDDREF,ADCMDE_PGA_G1,ADCCON_ADCCODE_UINT); // avdd reference selected, Gain of 1, truncate negative results to 0
   // Turn off input buffers to ADC and external reference    
   AdcBuf(pADI_ADC1,ADCCFG_EXTBUF_OFF,ADCCON_BUFBYPN|ADCCON_BUFBYPP|ADCCON_BUFPOWP|ADCCON_BUFPOWN);
   AdcPin(pADI_ADC1,ADCCON_ADCCN_AGND,ADCCON_ADCCP_AIN1); // Select AIN1 as postive input and AGND as negative input

As you can see the reference selected is AVDD and the ADCCON_ADCCODE is set to UINT (AdcRng function) in order to perform as unipolar (Am I wrong?). I thought this would give me a range from 0 to AVDD and I could read the input data correctly. The thing is that it isn't working.

I'm retreiving the output like this:

   fVolts = fVoltage;
   fVolts   = (1.2 / 268435456);      // Internal reference, calculate lsb size in volts
   fVoltage = (ulADC1Result * fVolts);   // Calculate ADC result in volts

(I'm using this conversion inside ADC1_Int_Handler function for simplicity).

Any help will be really grateful.   

EDIT:

I changed fVolts to fVolts = (3.3/368435456) and it seems that is working better. Then I change my question to: How can I set this conversion with the exact value of AVDD, as it may vary a little bit around 3.3V am I right?

Also, I'm getting an error on ADCSTA register 0x10 from time to time, this is meant to be triggered when there is an outrange error, but I don't know how can I fix it, any ideas?