اطلاعیه

Collapse
No announcement yet.

یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

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

    یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

    سلام
    چرا تو خط اول میشه به داخل پرانتز یه متغیر گزاشت ولی تو دومی نمیشه؟؟ :redface:
    کد:
    delay_ms(x);
    delay_us(x);
    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.

    #2
    پاسخ : یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

    عزیز جان توهم زدی. تو اولی هم نمیشه
    حیف از من خسته- حیف از همین چن خط
    به اصل و به ذات و- به باعثت لعنت

    K.Show

    دیدگاه


      #3
      پاسخ : یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

      چه کامپایلری؟
      تابعش رو نگاه کردی؟ البته حدسم اینه که تابع مورد نظر استاتیک باشه و شما حتما باید بهش مقدار بدید. البته شما می تونید تاءخیر موردنظرتون رو با دستورات حلقه ها ایجاد کنید.

      دیدگاه


        #4
        پاسخ : یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

        نوشته اصلی توسط Mahdi_Vaziri
        عزیز جان توهم زدی. تو اولی هم نمیشه
        oo: oo: oo: oo: oo:


        کد:
        چه کامپایلری؟
        کدویژن

        اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

        اگه دوس دارید سریع به جواب برسید :
        1) قبل از پرسیدن سوال، بسرچید.
        2) سوالاتون رو با جزئیات کامل مطرح کنید.

        دیدگاه


          #5
          پاسخ : یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

          چه کامپایلری؟
          تابعش رو نگاه کردی؟ البته حدسم اینه که تابع مورد نظر استاتیک باشه و شما حتما باید بهش مقدار بدید. البته شما می تونید تاءخیر موردنظرتون رو با دستورات حلقه ها ایجاد کنید.
          سلام.
          منظورتون از استاتیک چیه؟
          میشه بیشتر توضیح بدین؟


          ببخشید

          دیدگاه


            #6
            پاسخ : یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

            بیا بجاش این تابع رو تعریف کن و ازش استفاده کن:
            کد:
            void my_us_delay(int n) {
             while(n--) {
              delay_us(1);
             }
            }
            منبع:
            http://www.avrfreaks.net/forum/stran...ral-expression

            دیدگاه


              #7
              پاسخ : یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

              نوشته اصلی توسط plasma
              سلام.
              منظورتون از استاتیک چیه؟
              میشه بیشتر توضیح بدین؟


              ببخشید
              منظورم اینه که از اون دسته از توابعی هستش که قبل از کامپایل باید مقدار بگیره و نمیشه متغیر بجاش گذاشت. این موراد توی مراجع کامپایلر ذکر میشه. این دوستمون اگه Help کامپایلر رو اگه نگاه میکرد حتما به اون چیزی که Lee توی فریکس گذاشته میرسید. یعنی:

              ...
              void delay_us(unsigned int n)

              generates a delay of n mseconds. n must be a constant expression.

              void delay_ms(unsigned int n)

              generates a delay of n milliseconds.
              This function automatically resets the wtachdog timer every 1ms by generating the wdr instruction.
              ...
              اگه این دوستمون میگه که واسه delay_ms(x) کار میکنه ولی واسه delay_us(x) کار نمیکنه شاید بخاطر اینه که تابع delay_ms(x) از delay_us(x) به صورت زیر مجموعه استفاده میکنه بخاطر همینه که همش هم به delay_us(x); گیر میده.
              نوشته اصلی توسط mohammadfa91
              بیا بجاش این تابع رو تعریف کن و ازش استفاده کن:
              کد:
              void my_us_delay(int n) {
               while(n--) {
                delay_us(1);
               }
              }
              منبع:
              http://www.avrfreaks.net/forum/stran...ral-expression
              احتمالا تابع فوق کار نکنه. بهرحال داره delay_us(1) رو می شماره. همچنین این تابعی که قرار دادین دقیق نیست. چون خود while هم چند دستور اسمبلی میگیره. کلیف توی لینکی که گذاشتی گفته بجاش delay_us(10) رو بذاری که احتمالا دقیق ترش میکنه. بهترش اینه که این تابع رو بنویسی:

              [code=c]void my_us_delay(int n) {
              while(n) {
              n--;
              }
              }[/code]

              توی یه کامپایلر که دیباگر هم داره و برنامه رو دیباگ کنی و ببینی واسه همچین تابعی چقدر کلاک میگیره(خصوصا ببینی while چندتا دستور و چقدر کلاک میگیره). بعد با یه سری محاسبات یه تابع نسبتا دقیق بنویسی(همین تابع بالایی رو دقیق کنی). اگه دقت برات خیلی مهمه که دیگه بهتره از یه تایمر واسه کارت استفاده کنی.

              دیدگاه


                #8
                پاسخ : یه سوال خیلی خیلی کوچولو.....در مورد تابع delay ^_^

                سلام.
                مشکل از کامپایلر شما یا چیز دیگری نیست.
                کلا مدل تابع delay_us اینه که متغیر قبول نمیکنه. ضمن این که تابع دقیقی نیست مثلا 2 میکرو ثانیه بهش بدی با 5 میکرو ثانیه زیاد تفاوت دقیقی ندارن.
                و به همین دیل هست که متغیر دادن بهش کار بیهوده ایست. ضمن این که بالای 100 میکرو ثانیه هم بیهوده ست چون میشه 1 میلی ثانیه و میتونی از اون یکی تابع استفاده کنی.
                اما تابع delay_ms متغیر هم میگیره که اینو همه می دونن.

                دیدگاه

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