ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





  1. #1
    تاریخ عضویت
    2008/10/29
    2,101
    253

    زمان اجرا و عدم درست بودن زمان در ARM یا IAR

    آقایون سلام
    من کتاب میکروکنترولر ای ار ام از انتشارات نص رو گرفتم اقا فقط یه مشکل این برنامه رو ببینید

    #include <Atmel/ioat91sam7s64.h>
    #include "lcd.h"
    void delay (void);
    void main ()
    {
    //--------------------start up--------------------------
    AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // AT91C_WDTC_WDDIS=(1<<15)
    AT91C_BASE_RSTC->RSTC_RMR=0xA5000001;
    //--------------------speed up--------------------------
    AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
    AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC;
    AT91C_BASE_PMC->PMC_MCKR = 0x3;
    AT91C_BASE_PMC->PMC_SCER = 0x1;
    //-----------------------------------------------------
    AT91C_BASE_PMC->PMC_PCER = ( 1<<AT91C_ID_PIOA ); // AT91C_ID_PIOA=2
    //------------------------------------------------------
    AT91C_BASE_PIOA->PIO_PER=(1<<0|1<<1);

    AT91C_BASE_PIOA->PIO_OSR=(0<<1);
    //AT91C_BASE_PIOA->PIO_ODR=(1<<1);
    //AT91C_BASE_PIOA->PIO_IFER=(1<<1);

    AT91C_BASE_PIOA->PIO_OER=(1<<0);
    AT91C_BASE_PIOA->PIO_SODR=(1<<0);

    //lcd_pininit(0,1,2,3,4,5,6,7,8,9);
    //lcd_init();
    //lcd_gotoxy(0,0);
    //lcd_putsf("ARM"
    while(1)
    {
    AT91C_BASE_PIOA->PIO_SODR=(1<<0);
    delay();
    AT91C_BASE_PIOA->PIO_CODR=(1<<0);
    delay();

    }
    }
    void delay (void)
    {
    unsigned int i;

    for (i=0;i<1000000;i++);

    }

    کامل درست کار می کنه فقط یه مشکل داره اونم تابع تاخیر هست
    متغییر i
    1000000 تکرار می شه و اگر بخوایم خوب هم فکر کنیم و هر بار حلقه هم یک میکرو ثانیه طول می کشه.حالا آقا محاسبات شروع می شه

    فرکانس روی پایه میکرو 18.432 مگاهرتز هست و با تنظیم پی ال ال به 48 مگاهرتز فرکانس تراشه می رسه
    یعنی هر دستور ماشین رو داخل
    1/48000000=20 نانو
    باید اجرا بشه اما من با دستور بالا خروجی میکرو که به یه ال ای دی وصل بود رو تونستم با چشم ببینم طوری که انگار تقریبا 800 میلی ثانیه بین چمشک زدنانش فاصله بود این چه جوری؟
    یعنی بخوایم بگیم اینجوری دستور بالای من که باید 20 میلی ثانیه بین خاموش رونش باشه تبدیل شده به بالای 500 میلی ثانیه که قابل دیدن هست!!!!

    آقا جالبش اینکه داخل کتاب نوشته یه تاخیر کم :و تاخیر رو اینجوری نوشتن

    for(i=0;i<1000000;i++)
    for(j=0;j<1000000;j++);



    بخوایم خوب هم ببینیم زمان تاخیر می شه 10 به توان 12 حالا اینو در عدد 1/48000000 ضرب کنیم می شه
    20833.3
    ثانیه
    یعنی 347 ساعت !!!!!!!!! بله یه تاخیر کم :eek:
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
    • تبلیغات
      .

  2. #2
    تاریخ عضویت
    2008/11/03
    تهران
    311
    9

    پاسخ : زمان اجرا و عدم درست بودن زمان در ARM یا IAR

    سلام
    دوست عزیز این تاخیر ها در کامپایلر IAR اصلا رو حساب و کتاب نمی باشد و با توجه به بهینه سازی و کد خروجی و... کامپایلر یک کدی اسمبلی را برای این تولید می کند که هرچه برنامه شما زیاد یا کم شود این مدت تاخیر تغییر می کند. برای تاخیر دقیق حتما باید از تایمرها استفاده کنید و اون مثالی هم که داخل کتاب هست با نسخه IAR که داخل CD کتاب هست درست کار می کند و یک تاخیر کمی ایجاد می کند در حد 800 میلی ثانیه. برای این تیپ تاخیرها بهتر است تایپیک زیر را یک مطالعه بکنید.
    http://www.eca.ir/forum2/index.php?topic=47811.0
نمایش نتایج: از 1 به 2 از 2

موضوعات مشابه

  1. خواندن مدت زمان یک بودن یک سیگنال مربعی
    توسط sinaitg در انجمن میکروکنترلرهای AVR
    پاسخ: 7
    آخرين نوشته: 2014/05/03, 14:54
  2. اندازه گیری مدت زمان 1 بودن موج مربعی با AVR
    توسط sinaitg در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2014/04/01, 00:02
  3. نامنظم بودن زمان میکروکنترولر AVR
    توسط mania59 در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2012/10/08, 23:41
  4. زمان یک بودن پالس
    توسط sara789 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2012/06/26, 23:21
  5. چرا زمان درست اجرا نمی شود؟ و یه مشکل دیگه
    توسط vahid-elect در انجمن میکروکنترلرهای AVR
    پاسخ: 20
    آخرين نوشته: 2008/05/03, 11:29

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •