اطلاعیه

Collapse
No announcement yet.

خواندن ADC در LPC

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    خواندن ADC در LPC

    سلام
    من برنامه خواندن از ADC رو با توجه به مثالهای کیل و منوال نوشتم و کار هم می کنه. ولی یک ابهام دارم شما اگر موضوع رو فهمیدید لطفا برای ما هم توضیح بدید
    در رجیستر ADCR، 8 بیت اول تعیین می کنند که کدوم کانال قراره در اون لحظه نمونه برداری بشه
    فرض کنید من می خوام کانال 3 رو نمونه برداری کنم. می نویسم
    کد:
    LPC_ADC->ADCR |=(1<<3);
    حالا اگر بخوام دفعه بعد کانال 4 رو نمونه برداری کنم، اگر بنویسم
    کد:
    LPC_ADC->ADCR |=(1<<4);
    اینجا با توجه به دستور قبلی هر دو بیت 3 و 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);
    با توجه به جمله منوال که بالا نوشتم معادل اینه که اول کانال 1 رو انتخاب کردم بعد 4 و می تونه منجر به overrun بشه
    اینجا رو هم ببینید. بیت 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.
    حالا چه باید کرد؟
لطفا صبر کنید...
X