This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Problem using multiple ADC Channels in LPC2378

I am facing problem using ADC channel 0 & 1 simultaneously.

//////////////////////////////////////////////////
//My ADC Initilisation:
/* Power enable, Setup pin, enable and setup AD converter interrupt */

PCONP |= (1 << 12); // Enable power to AD block
PINSEL1 = 0x00014000; /* AD0.1 pin function select */
AD0INTEN= 0x0003; /* CH0 & CH1 enable interrupt */
AD0CR = 0x00200303; /* Power up, PCLK/4, sel AD0.0*/
VICVectAddr18 = (unsigned long)ADC_IRQHandler;
/* Set Interrupt Vector */
VICVectCntl18 = 14; /* use it for ADC Interrupt */
VICIntEnable = (1 << 18);//Enable ADC Interrupt

//////////////////////////////////////////////////
// my handler

__irq void ADC_IRQHandler(void)
{ AD_last = (AD0DR1 >> 6) & 0x3FF; //Read Conversion

avg_val = avg_val + AD_last;

++avgcnt;

if(avgcnt == 15) //take average

{ avgcnt = 0;

calc_val = avg_val/15;

avg_val = 0;

} VOLT_last = (AD0DR0 >> 6) & 0x3FF; //Read Conversion

VICVectAddr = 0; /* Acknowledge Interrupt
}

//////////////////////////////////////////////////

AD0CR |= 0x01000000; /* Start A/D Conversion

This i have done in ISR.

AD0.1 is fine, but AD0.0 stops ????
please ! can anyone help me ??????

Parents
  • sorry!

    /* My ADC Initilisation: */
    
    PCONP |= (1 << 12);       // Enable power to AD block
    PINSEL1 = 0x00014000;     //AD0.1 pin function select
    AD0INTEN= 0x0003;         //CH0 & CH1 enable interrupt
    AD0CR = 0x00200303;       //Power up,PCLK/4,sel AD0.0
    VICVectAddr18 = (unsigned long)ADC_IRQHandler;
    VICVectCntl18 = 14;
    VICIntEnable = (1 << 18);//Enable ADC Interrupt
    
    /* my interrupt handler */
    
    __irq void ADC_IRQHandler(void)
    {
        AD_last = (AD0DR1 >> 6) & 0x3FF;   //Read Conversion
        VOLT_last = (AD0DR0 >> 6) & 0x3FF; //Read Conversion
        VICVectAddr = 0;                   //Acknowledge Interrupt
    }
    
    AD0CR |= 0x01000000;                   // Start A/D Conversion
    This i have done in ISR.
    
    

Reply
  • sorry!

    /* My ADC Initilisation: */
    
    PCONP |= (1 << 12);       // Enable power to AD block
    PINSEL1 = 0x00014000;     //AD0.1 pin function select
    AD0INTEN= 0x0003;         //CH0 & CH1 enable interrupt
    AD0CR = 0x00200303;       //Power up,PCLK/4,sel AD0.0
    VICVectAddr18 = (unsigned long)ADC_IRQHandler;
    VICVectCntl18 = 14;
    VICIntEnable = (1 << 18);//Enable ADC Interrupt
    
    /* my interrupt handler */
    
    __irq void ADC_IRQHandler(void)
    {
        AD_last = (AD0DR1 >> 6) & 0x3FF;   //Read Conversion
        VOLT_last = (AD0DR0 >> 6) & 0x3FF; //Read Conversion
        VICVectAddr = 0;                   //Acknowledge Interrupt
    }
    
    AD0CR |= 0x01000000;                   // Start A/D Conversion
    This i have done in ISR.
    
    

Children
No data