اطلاعیه

Collapse
No announcement yet.

ایجاد تاخیر در کامپایلر keil

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

    ایجاد تاخیر در کامپایلر keil

    سلام.
    من دارم با میکروکنترلر LPC1768 و کامپایلر keil کار میکنم و میخوام که در برنامه تاخیر ایجاد کنم. در کامپایلر keil کتابخانه ای به نام delay برای این کار وجود نداره پس باید چه جوری تاخیر رو ایجاد کنم. توی انجمن که جستجو کردم بعضی ها گفته بودن که باید با ایجاد یک حلقه در برنامه این تاخیر رو ایجاد کنی و به عبارتی دیگر باید خود برنامه نویس با نوشتن یک تابع این کار رو انجام بده. میخواستم ببینم که کتابخانه استانداردی برای این کار وجود نداره یا روش دیگه ای نیست که توسط اون بتونیم در برنامه تاخیر ایجاد کنیم.
    خیلی ممنون.

    #2
    پاسخ : ایجاد تاخیر در کامپایلر keil

    نوشته اصلی توسط hamedb3269
    سلام.
    من دارم با میکروکنترلر LPC1768 و کامپایلر keil کار میکنم و میخوام که در برنامه تاخیر ایجاد کنم. در کامپایلر keil کتابخانه ای به نام delay برای این کار وجود نداره پس باید چه جوری تاخیر رو ایجاد کنم. توی انجمن که جستجو کردم بعضی ها گفته بودن که باید با ایجاد یک حلقه در برنامه این تاخیر رو ایجاد کنی و به عبارتی دیگر باید خود برنامه نویس با نوشتن یک تابع این کار رو انجام بده. میخواستم ببینم که کتابخانه استانداردی برای این کار وجود نداره یا روش دیگه ای نیست که توسط اون بتونیم در برنامه تاخیر ایجاد کنیم.
    خیلی ممنون.
    تابع استاندار موجود نیست و باید با یه حلقه for بنویسید و یا با تایمر ها تاخیر دقیق رو بسازید و cpu رو در گیر پردازش کاذب نکید

    دیدگاه


      #3
      پاسخ : ایجاد تاخیر در کامپایلر keil

      می تونی از این استفاده کنی یک تابع for
      البته اگر زمان دقیق می خواهی باید از تایمر ها استفاده کنی!
      کد:
      void delay (uint32_t Time){
      	  uint32_t i;
          i = 0;
        while (Time--) {
         for (i = 0; i < 5000; i++);
        }
      }

      دیدگاه


        #4
        پاسخ : ایجاد تاخیر در کامپایلر keil

        سلام اینم کتابخونه delay.h
        delay.h
        البته این برای AT91 نوشته شده.(من lpc بلد نستم!)
        که باید یه تغییر(یا تغییرات)توش بدی.(یکیش فرکانسه که با متغییر crystal درون کتابخانه تنظیم میشه!)
        بعد از تغییرات این کتابخونه رو بزار تو این آدرس: \C:\Keil\ARM\INC\NXP\LPC17xx
        بعدش با خیال راحت اینکلود کن
        کد:
        #include <delay.h>
        راهنما:
        کد:
          delay_us (x); //x micro saniyeh
        	 delay_ms(x);  //x mily saniyah    
        	 delay_s (x);  //x saniyeh
        1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
        من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
        !Electronic On! Programming On
        هوشمندانه سوال بپرسیم!
        http://ir02x6.persiangig.com/logo/eca/tanks_01.png

        دیدگاه


          #5
          پاسخ : ایجاد تاخیر در کامپایلر keil

          صرفا جهت دادن ایده:

          کد:
          static void _DelayMs2(U32 ms) {
           LPC_TIM0->TCR = 0x02; // Reset timer
           LPC_TIM0->PR = 0x00; // Set prescaler to zero
           LPC_TIM0->MR0 = ms * (SystemCoreClock / (LPC_SC->PCLKSEL & 0x1F) / 1000 - 1);
           LPC_TIM0->IR = 0xFF; // Reset all interrrupts
           LPC_TIM0->MCR = 0x04; // Stop timer on match
           LPC_TIM0->TCR = 0x01; // Start timer
           //
           // Wait until delay time has elapsed
           //
           while (LPC_TIM0->TCR & 1);
          }
          از جمله ی رفتگان این راه دراز
          باز آمده ای کو که به ما گوید راز
          هان بر سر این دو راهه از روی نیاز
          چیزی نگذاری که نمی آیی باز

          دیدگاه

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