NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2737 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 7 از 7

موضوع: کتابخانه تاخیر دقیق برای lpc1768

  1. #1
    عضو جدید
    تاریخ عضویت
    Apr 2013
    نوشته ها
    10
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض کتابخانه تاخیر دقیق برای lpc1768

    با سلام.
    من LPC با keil رو تازه شروع کردم.هر چی متدهای معمول رو برای ایجاد تاخیر استفاده کردم به نتیجه دقیقی نرسیدم.تا زمانی که تاخیر در حد ثانیه است خوب بود اما تاخیر در حد میلی ثانیه افتضاح بود. مثلا 5000 میلی ثانیه ،تاخیری حدود 4 ثانیه ایجاد می کرد یعنی 1 ثانیه کمتر.از دوستان خواهشمندم اگر هدر وقفه دقیقی دارن کمک کنن.خیلی گشتم ولی برای ایجاد تاخیر با LPC چیزی پیدا نکردم.

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    پیش فرض

    شما باید برای ساخت تاخیر های دقیق در هر میکرویی از تایمر های سخت افزاری استفاده کنید.

  4. #3
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    وقفه اصلا ایزار مناسبی برای کار دقیق زمانی نیست. کتابخونه های تاخیر بدون وقفه رو پیدا کنید. منم اگر دیدم حتما براتون میذارم

  5. #4

  6. تشکرها از این نوشته :

    KHM

  7. #5
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2007
    نوشته ها
    24
    تشکر
    13
    تشکر شده 1 بار در 1 پست

    پیش فرض

    من از این کتابخانه برای کارهایی که خیلی دقیق نباشند استفاده میکنم.دقتش هم بد نیست.
    فايل هاي پيوست شده فايل هاي پيوست شده

  8. #6
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    همون طور که میدونید اغلب کتابخونه های نوشته شده برای تاخیر از حلقه های for یا while یا ... و با مشغول کردن cpu به یک کار دیگه ، مثل شمرده عدد تاخیر رو ایجاد میکنند .
    در این حالت مقدار تاخیر ایجاد شده به مقدار فرکانس cpu وابسته هست و اکثر کاربران مقدار این فرکانس رو بدون در نظر گرفتن ضرائب pll و مقدار فرکانس کاری میکروکنترلر در کتابخونه لحاظ میکنن .
    مثلا در یک پروژه ممکنه فرکانس کاری میکرو 12 مگا هرتز باشه و در یک پروژه مقدار فرکانس 24 مگا هرتز . در این حالت تا خیر ایجاد شده توسط delay.h در پروژه ی اول تقریبا نصف تاخیر ایجاد شده در پروژه ی دوم خواهد بود .
    شرایط بدتر این هست که فرکانس توسط pll تقسیم بشه . در این حالت مقدار تاخیر ایجاد شده در ضریب pll ضرب میشه .
    من قبلا یک کتابخونه برای سری at91sam نوشتم که مقدار ضریب pll و همچنین مقدار فرکانس کرییستال رو در توابع ایجاد تاخیر وارد میکنه .
    متاسفانه من خودم با lpc1768 کار نکردم ، اما به دلیل یکسان بدون هسته ها به سادگی میشه این کتابخونه برای این میکروکنترلر و کل خانواده ی lpc راه اندازی کرد ( کافیه رجیستر های مربوط به pll رو در تابع زیر جایگزین کنید ):
    کد:
    volatile char cont_value_for_delay_lib ;
    //calculation    MCK ( main CPU clock ):
    //if use pll  MCK=(((crystal / pll_divider) * (pll_multiplier+1) )/ prescaler)
    //if dont use pll  MCK=(crystal / prescaler)
    //this library not work if Slow Clock is selected , this work only whit Main Clock & PLL Clock
    unsigned int get_MCK_value_4_delay_lib (void)  
    {
        switch ( AT91C_BASE_PMC->PMC_MCKR& AT91C_PMC_CSS) {        
            case AT91C_PMC_CSS_MAIN_CLK: // Main clock is selected
            return crystal / (1 << ((AT91C_BASE_PMC->PMC_MCKR & AT91C_PMC_PRES) >> 2));
            case AT91C_PMC_CSS_PLL_CLK: // PLLB clock is selected
            return (((crystal 
             / (AT91C_BASE_CKGR->CKGR_PLLR  & AT91C_CKGR_DIV))   //pll_divider
              * (((AT91C_BASE_CKGR->CKGR_PLLR  & AT91C_CKGR_MUL) >> 16)+1) )  //pll_multiplier
              / (1 << ((AT91C_BASE_PMC->PMC_MCKR & AT91C_PMC_PRES) >> 2)));     //prescaler            
        }     
       return 0;
    }
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: rar delay.rar (1.6 کیلو بایت, 42 نمايش)

  9. کاربران : 5 تشکر کرده اند از شما 1nafar برای ارسال این پست سودمند:


  10. #7
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2016
    نوشته ها
    20
    تشکر
    9
    تشکر شده 5 بار در 4 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    با استفاده از systemtick می توان وقفه دقیق ایجاد کرد.
    لطفا نحوه ایجاد تاخیر دقیق با systemtick رو شرح بدین. من جایی نتونستم پیدا کنم.
    ممنون

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

  1. مشکل با پروگرم هدربورد lpc1768
    توسط ifireir در انجمن LPC series (NXP)
    پاسخ: 2
    آخرين نوشته: 14-10-2013, 13:54
  2. ارسال رشته اعداد با lpc1768
    توسط 872622101 در انجمن LPC series (NXP)
    پاسخ: 12
    آخرين نوشته: 11-10-2013, 16:42
  3. مشکل پروگرام کردن lpc1768
    توسط youzarsif در انجمن LPC series (NXP)
    پاسخ: 7
    آخرين نوشته: 23-09-2013, 10:51
  4. منابع یادگیری lpc1768
    توسط mj3747 در انجمن Cortex-a8-a9 arm9-11
    پاسخ: 4
    آخرين نوشته: 31-07-2012, 01:23
  5. مشکل چیه ؟ ( مرتبط یا lpc1768)
    توسط ma-bah در انجمن LPC series (NXP)
    پاسخ: 1
    آخرين نوشته: 21-09-2011, 12:47

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

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