This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMDSCNCD28379D: ADC RESULT REGISTER PROBLEM (NOT MATCHED TO SOC)

Part Number: TMDSCNCD28379D
Other Parts Discussed in Thread: C2000WARE

Tool/software:

I intend to use ADCA0~5 ADCB0~5 with SOC0 assigned to ADCA0, SOC1 to ADCA1,....and so on in sequential order.

The relevant code is set up as follows

void setupADC(void)
{

//single ended

AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);

EALLOW;
//ADCA
AdcaRegs.ADCCTL2.bit.PRESCALE = 0;

AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1; 

AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; 

//ADCB
AdcbRegs.ADCCTL2.bit.PRESCALE = 0;

AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1; 

AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1; 

EDIS;

DELAY_US(1000);
}

void setupADCSOC(void)
{

    EALLOW;
//ADCA

   AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;     // SOC0(=ADCA0)
   AdcaRegs.ADCSOC0CTL.bit.ACQPS = 50;    
   AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0


   AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1;     // SOC1(=ADCA1)
   AdcaRegs.ADCSOC1CTL.bit.ACQPS = 50;     
   AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0
//
   AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;     // SOC2(=ADCA2)
   AdcaRegs.ADCSOC2CTL.bit.ACQPS = 50;     
   AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0

   AdcaRegs.ADCSOC3CTL.bit.CHSEL = 3;     // SOC3(=ADCA3)
   AdcaRegs.ADCSOC3CTL.bit.ACQPS = 50;     
   AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0


   AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;     // SOC4(=ADCA4)
   AdcaRegs.ADCSOC4CTL.bit.ACQPS = 50;    
   AdcaRegs.ADCSOC4CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0


   AdcaRegs.ADCSOC5CTL.bit.CHSEL = 5;     // SOC5(=ADCA5)
   AdcaRegs.ADCSOC5CTL.bit.ACQPS = 50;    
   AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0

//   AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0; // End of SOC5 will set INT1 flag
//   AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1; // Enable INT1 flag
//   AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; // Make sure INT1 flag is cleared

   //ADCB

   AdcbRegs.ADCSOC0CTL.bit.CHSEL = 0;  // SOC0(=ADCB0)
   AdcbRegs.ADCSOC0CTL.bit.ACQPS = 50;     
   AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0

   AdcbRegs.ADCSOC1CTL.bit.CHSEL = 1;     //  SOC1(=ADCB1)
   AdcbRegs.ADCSOC1CTL.bit.ACQPS = 50;     
   AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0

   AdcbRegs.ADCSOC2CTL.bit.CHSEL = 2;     //  SOC2(=ADCB2)
   AdcbRegs.ADCSOC2CTL.bit.ACQPS = 50;     
   AdcbRegs.ADCSOC2CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0

   AdcbRegs.ADCSOC3CTL.bit.CHSEL = 3;     //  SOC3(=ADCB3)
   AdcbRegs.ADCSOC3CTL.bit.ACQPS = 50;     
   AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0

   AdcbRegs.ADCSOC4CTL.bit.CHSEL = 4;     //  SOC4(=ADCB4)
   AdcbRegs.ADCSOC4CTL.bit.ACQPS = 50;     
   AdcbRegs.ADCSOC4CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0

   AdcbRegs.ADCSOC5CTL.bit.CHSEL = 5;     //  SOC5(=ADCB5)
   AdcbRegs.ADCSOC5CTL.bit.ACQPS = 50;    
   AdcbRegs.ADCSOC5CTL.bit.TRIGSEL = 1;   // Trigger on CPUTIMER0

  // AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 5; // End of SOC5 will set INT1 flag
   //AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1; // Enable INT1 flag
  // AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; // Make sure INT1 flag is cleared


   EDIS;
}

As intended, when 3.3V is applied to the ADCA0 pin, the RESULT0 register should output 4095, and  when 0V is applied to the ADCA0 pin, result 0 should result in 0.

However, applying 3.3V to ADCA0 changes the values in the RESULT1 and RESULT2 registers  (In this case, pins ADCA1 through ADCA5 are connected to GND.)

Additionally, when 3.3V is applied to ADCA1 (with ADCA1 and ADCA 2 through 5 are connected to GND), there is no change in the values of the RESULT1 register.

I have correctly assigned the pins, set the SW2 : reference voltage to 0–3.3V, but I am still experiencing unintended changes in the RESULT register values & same problem in ADCB.

<ADCA0 3.3V(blue LINE), ADCA1~5:0V>                                                   <RESULT>

ADCA0 3.3V, ADCA1~5:0V

--> ADCA0 : 0V 

RESULT1,2 -->0

and adcA1 3.3V(YELLOW LINE) --> ALL RESULT 0