سلام
من برنامه خواندن از ADC رو با توجه به مثالهای کیل و منوال نوشتم و کار هم می کنه. ولی یک ابهام دارم شما اگر موضوع رو فهمیدید لطفا برای ما هم توضیح بدید
در رجیستر ADCR، 8 بیت اول تعیین می کنند که کدوم کانال قراره در اون لحظه نمونه برداری بشه
فرض کنید من می خوام کانال 3 رو نمونه برداری کنم. می نویسم
حالا اگر بخوام دفعه بعد کانال 4 رو نمونه برداری کنم، اگر بنویسم
اینجا با توجه به دستور قبلی هر دو بیت 3 و 4 یک میشن. که تو مد کنترل نرم افزاری مجاز نیست.
اگر هم اینجوری بنویسم
با توجه به جمله منوال که بالا نوشتم معادل اینه که اول کانال 1 رو انتخاب کردم بعد 4 و می تونه منجر به overrun بشه
اینجا رو هم ببینید. بیت DONE رجیستر ADGDR
حالا چه باید کرد؟
من برنامه خواندن از ADC رو با توجه به مثالهای کیل و منوال نوشتم و کار هم می کنه. ولی یک ابهام دارم شما اگر موضوع رو فهمیدید لطفا برای ما هم توضیح بدید
در رجیستر ADCR، 8 بیت اول تعیین می کنند که کدوم کانال قراره در اون لحظه نمونه برداری بشه
فرض کنید من می خوام کانال 3 رو نمونه برداری کنم. می نویسم
کد:
LPC_ADC->ADCR |=(1<<3);
کد:
LPC_ADC->ADCR |=(1<<4);
کد:
In software-controlled mode, only one of these bits should be 1. In hardware scan mode, any value containing 1 to 8 ones is allowed. All zeroes is equivalent to 0x01.
کد:
LPC_ADC->ADCR &= 0xFFFFFF00; LPC_ADC->ADCR |=(1<<4);
اینجا رو هم ببینید. بیت DONE رجیستر ADGDR
کد:
31 DONE This bit is set to 1 when an A/D conversion completes. It is cleared when this register is read and when the ADCR is written. If the ADCR is written while a conversion is still in progress, this bit is set and a new conversion is started.