We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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.