با سلام.
من یک برنامه نوشتم برای واحد adc که که وقتی از کانال 10 استفاده میکنم به خوبی کار میکنه ولی وقتی از کانال های 1و2 و ... استفتده میکنم و ریجستر ها رو برای آنها تغییر میدم کار نمیکنه.
کد:
int i;
lcd_init();
delay1(100);
lcd_clear();
lcd_gotoxy(1,1);
lcd_putsf("hello world");
delay1(1000);
while(1){
LPC_SC->PCONP|=(1<<12);
LPC_PINCON->PINSEL1=(0X10000);
LPC_ADC->ADCR=(0x00200302);
LPC_ADC->ADCR|=0X01000000;
do{
i=LPC_ADC->ADDR0;
}while((i&(1<<31))==0);
lcd_puts((i>>4)&0x0fff);
delay1(100);
lcd_clear();
}
}
من وقتی pinsel1 رو به 0x4000 و LPC_ADC->ADCR=0x00200301; قرار میدم برنامه کار میکنه و اجرا میشه و خروجی رو هم میبینم. ولی وقتی که برنامه رو برای کانال دو تغییر میدم یعنی به شکل بالا برنامه تو حلقه do-while گیر میکنه.
میشه راهنمایی کنید که مشکل از کجاست؟
و چطوری میتنم این کانلا ها رو بخونم.