Hello everyone,
I've a problem to read the ADC Result with FIFO mode. I need to read AD7,6,5,4,1,0 and I set with the Processor Expert the parameters reported in the picture:
Here the generated Init code:
void ADC_Init(void)
{
    /* SYS_SOPT2: ADHWTS=0 */
    clrReg8Bits(SYS_SOPT2, 0x03U); /* Selects the RTC as the source of internal HW trigger */ 
    /* SYS_SOPT3: FTMCHS=0 */
    clrReg8Bits(SYS_SOPT3, 0x30U); /* Selects the RTC as the source of internal HW trigger */ 
    /* ADC_APCTL1: ADPC7=1,ADPC6=1,ADPC5=1,ADPC4=1,ADPC3=0,ADPC2=0,ADPC1=1,ADPC0=1 */
    setReg8(ADC_APCTL1, 0xF3U); 
    /* ADC_SC4: ??=0,ASCANE=1,ACFSEL=0,??=0,??=0,AFDEP=5 */
    setReg8(ADC_SC4, 0x45U); 
    /* ADC_SC3: ADLPC=0,ADIV=0,ADLSMP=0,MODE=2,ADICLK=0 */
    setReg8(ADC_SC3, 0x08U); 
    /* ADC_CV: ??=0,??=0,??=0,??=0,CV=0 */
    setReg16(ADC_CV, 0x00U); 
    /* ADC_SC2: ADACT=0,ADTRG=0,ACFE=0,ACFGT=0,FEMPTY=1,FFULL=0,??=0,??=0 */
    setReg8(ADC_SC2, 0x08U); 
    /* ADC_SC1: COCO=0,AIEN=1,ADCO=1,ADCH=7 */
    setReg8(ADC_SC1, 0x67U); 
}
Here the code implemeted when the interrupt occurs (COCO==1):
ISR( isr_adc)
{
    int i;
 
    if(ADC_SC2_FFULL) //this control maybe is not necessary as the interrupt occurs
    {
       for(i=0; i<6; i++)
       {
          ADC_Result_Buffer [i] = ADC_R;
          ADC_Channel_Buffer[i] = ADC_SC1_ADCH;
       }
    }
}
With the above reading of the result (ADC_Result_Buffer [i] = ADC_R), I obtain only the value of the CH7 (i.e. the initial channel, ADC_Channel_Buffer[i]=7).
How can I do a reading of the other channels?
From Datasheet:
"When FIFO is enabled, the result FIFO is read via ADC_RH:ADC_RL. The ADC
conversion completes when the input channel FIFO is fulfilled at the depth indicated by
the AFDEP. The AD result FIFO can be read via ADC_RH:ADC_RL continuously by
the order set in analog input channel ADCH."
What is wrong?
Thank you!
Geremia De Sarno.