اطلاعیه

Collapse
No announcement yet.

مشکل با تابع delay

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

    مشکل با تابع delay

    سلام
    از بابع delay به صورت زیر که استفاده میکنم مشکلی ندارم
    #define F_CPU 2000000UL

    #include <avr/io.h>
    #include <util/delay.h>


    int main(void){
    PORTC.DIRSET = PIN0_bm;

    while (1){
    PORTC.OUTTGL = PIN0_bm;
    _delay_ms(852);
    }
    }


    ولی کدم که یه مقدار پیچیده تر میشه مقداراش تغییر میکنه دقیق نیست . حتی بعضی وقت ها تو عملکرد کد اصلی هم تاثیر داره.
    کسی تا به حال به همچین مشکلی داشته؟!!!
    A-Hosseini

    #2
    پاسخ : مشکل با تابع delay

    نوشته اصلی توسط electronet نمایش پست ها
    ولی کدم که یه مقدار پیچیده تر میشه مقداراش تغییر میکنه دقیق نیست .
    توی AVR Freaks پیداش کردم . اینتراپتو که قبل Delay غیر فعال کنم درست میشه . ولی راهی هست که بدون غیر فعال کردن اینتراپت هم بشه این کارو انجام داد؟ البته به جز تایمر بعضی جاها همزمان با Delay اینتراپت هم لازمه فعال باشه.؟!!
    A-Hosseini

    دیدگاه


      #3
      پاسخ : مشکل با تابع delay

      ببین کلا اگر تاخیر با استفاده از دستورات اسمبلی که تاثیری در کارکرد ندارن ساخته بشه دقیق نیست. (مانند nop)تاخیر دقیق بخواین باید با تایمر بسازین.
      چرا ناراحتی پاتریک!
      + امروز ی بچه دیدم سرچهارراه گل میفروخت
      - از دیدنش ناراحت شدی؟
      + نه
      پس چی ناراحتت کرده
      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
      ------------------------------------------------------------------------------------------------------
      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
      ------------------------------------------------------------------------------------------------------
      محصولات

      دیدگاه


        #4
        پاسخ : مشکل با تابع delay

        nop میکنه یک ماشین سایکل اگر صد تا کد nop پشت هم بنویسیم میشه 100 ماشین سایکل و هر وقت اجرا بشه زمانش همون 100 ماشین سایکل میشه فقط و فقط بشرطی که وقفه ها خاموش باشن. در واقع وقتی شما میگید که هم وقفه میخواهم هم تاخیر نرم افزاری در واقع دارید درخواست دو پروسس موازی میکنید که میکروها نمیتوانند پروسس موازی انجام بدن .
        استفاده از تاخیر طولانی نرم افزاری بیشتر در کدهای آموزشی بکار میره ؛ برای پیچیده نشدن کد و درک مطلب منظور

        دیدگاه

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