اطلاعیه

Collapse
No announcement yet.

راه اندازی ADC در ARM

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

    راه اندازی ADC در ARM

    سلام دوستان
    من تازه کار با ARM رو شروع کردم و دارم با lpc2138 کار می کنم ولی الان توی راه اندازی adc به مشکل خوردم توی اینترنت هرچی سرچ زدم هیچی نبود جز یکی دوتا برنامه آماده بدون هیچگونه توضیحی!!!لطفا یه کمک برسونید که بد گیرم
    در ضمن این برنامه رو هم گرفتم ولی چیزی زیادی ازش متوجه نشدم
    -width: 0px; "> <#include "LPC23xx.h"
    static unsigned short ADC_Read(void)
    {
    unsigned int i;
    AD0CR |= 0x01000000; // Start A/D Conversion
    do
    {
    i=AD0DR0; // Read A/D Data Register
    while ((i & 0x80000000) == 0); // Wait for end of A/D Conversion
    }
    return (i >> 6) & 0x03FF; // bit 6:15 is 10 bit AD value
    }
    main (void) {
    unsigned short current_value,last_value,temp,value,n;
    SCS=SCS | 1;
    FIO0DIR = 0x00000FF0; /* P0.4..11 defined as Outputs */
    /* Power enable, Setup pin, enable and setup AD converter interrupt
    */
    PINSEL1 = 0x4000; /* AD0.0 pin function select */
    PCONP |= (1 << 12); /* Enable power to AD block */
    AD0CR = 0x00200301; /* Power up, PCLK/4, sel AD0.0 */
    while(1){
    current_value=ADC_Read();
    if (current_value!=last_value)
    {
    value=current_value>>2;
    FIO0CLR=0x0ff;
    FIO0SET=value<<4;
    last_value=current_value;
    }
    }
    return 0;
    }
    Á{ É ÃZ¼‹ É ÃƒÁ

    اگه در مورد این برنامه هم یه توضیحی بدین ممنون می شم که مثلا تو هر خط چه اتفاقی افتاده؟؟
    جدیدترین ویرایش توسط Mojtababm66; ۱۰:۴۹ ۱۳۹۵/۰۴/۰۶.

    #2
    پاسخ : راه اندازی ADC در ARM

    مثل اینکه کسی نیست جواب مارو بده
    پس حداقل یکی به من بگه معنی این کد چیه
    PINSEL1|=(1<<24); // set P0.28 to ADC0.1
    من اصلا کاربرد این (24>>1) رو نمی فهمم چه طوری با این کد p0.28 ست میشه
    خواهشا اینو بهم بگین

    دیدگاه


      #3
      پاسخ : راه اندازی ADC در ARM

      سلام
      کد تقریبا واضحه...جلوی دستورات مهم کامنت گذاشته و توضیح داده

      من اصلا کاربرد این (24>>1) رو نمی فهمم چه طوری با این کد p0.28 ست میشه
      این عملگر شیفت دادن هست...

      مثلا 24>>1 یعنی اینکه عدد 1 رو 24 بار به سمت چپ شیفت بدیم
      یعنی:

      کد:
       
      A=1<<24=0B100000000000000000000000
      با اینکار خوانایی کد خیلی بیشتر میشه...و تشخیص اینکه کدوم بیت ها ست شده اند راحت تر میشه...
      توضیحات بیشتر در مورد این نوع مقدار دهی رو در لینک زیر ببینید:

      سلام مدتی در این فکر بودم که روشی واسه مقدار دادن به رجیسترها در زبان سی پیدا کنم که هم نیازی به تایپ وقت گیر نداشته باشه و هم از طرفی خوانایی برنامه رو افزایش بده جوری که با یه نگاه به اون خط بشه فهمید کدوم بیت ها از رجیستر مورد نظرمون 1 شده...این شد که سعی کردم یه برنامه با سی شارپ واسه این کار بنویسم که شرحش در ادامه هست...
      تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

      www.intelart.ir


      ساخت کنترلر دما PID فازي با AVR [آموزشی]

      دیدگاه

      لطفا صبر کنید...
      X