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 ??????
do you think you code is readable? if not, reply using the proper tags!
/* 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.
sorry for that, but spaces are not included when i posted my code.
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.