اطلاعیه

Collapse
No announcement yet.

ایجاد زمان تاخیر متغیر

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

    ایجاد زمان تاخیر متغیر

    سلام به همه دوستان
    همه میدونیم که برای ایجاد زمان تاخیر ثابت میتونیم از توابع کتابخانه delay_ms(const) ,delay_us(const) delayاستفاده کنیم که const یک عدد ثابت هستش.
    حالا اگه عدد ما ثابت نباشه و متغیر باشه و همچنین تایمرها هم مشغول کار دیگه باشن چطور میشه این تاخیر زمانی متغیر رو ایجاد کرد؟ البته دقیق
    مثلا با اسمبلی میشه ؟ لطفا کدش رو بنویسین

    ممنون

    #2
    پاسخ : ایجاد زمان تاخیر متغیر

    سلام
    می تونی از دستور delay_ms(meghdar+m); استفاده کنی
    بدش هم مقدار m رو با یه دستور for تغییر بدی
    مثلا برای زیاد شدن:
    for m=0;m<1000;m++
    برای کم شدن
    for m=1000;m>0;m--;
    یا راه های دیگه
    موفق باشی...

    دیدگاه


      #3
      پاسخ : ایجاد زمان تاخیر متغیر

      یا می تونی یه متد بسازی که مثلا 10 میلی ثانیه تاخیر داره
      بعد تعداد فراخوانی های این متد میشه تاخیر تو
      هر چه بیشتر فراخوانی کنی تاخیرت بیشتر میشه...
      موفق باشی...

      دیدگاه


        #4
        پاسخ : ایجاد زمان تاخیر متغیر

        void delay_us(unsigned int n)
        generates a delay of n useconds. n must be a constant expression.
        مرسی از راهنماییتون ولی مشکل اینجاست که آرگمان تابع delay_us نمیتونه یک متغیر باشه و باید یک عدد ثابت مثل 200 باشه. مشکل استفاده از حلقه مثل for اینه که نمیتونه زمان دقیق در ابعاد میکرو ثانیه رو ایجاد کنه

        دیدگاه


          #5
          پاسخ : ایجاد زمان تاخیر متغیر

          اگه مثلا فرکانس میکرو شما 1 مگ باشه با کد روبرو میتونی R0 میکروثانیه تاخیر ایجاد کنی

          ldi r0,200
          L0: nop
          dec r0
          brneq L0
          در این برنامه r0 هر 3 میکرو ثانیه 1 واحد کم میشه پس مثلا در اینجا اگه 200 باشه 3*200+1=601 میکروثانیه تاخیر دقیق داری
          فرزندم در راه است

          دیدگاه


            #6
            پاسخ : ایجاد زمان تاخیر متغیر

            نوشته اصلی توسط ata
            void delay_us(unsigned int n)
            generates a delay of n useconds. n must be a constant expression.
            مرسی از راهنماییتون ولی مشکل اینجاست که آرگمان تابع delay_us نمیتونه یک متغیر باشه و باید یک عدد ثابت مثل 200 باشه. مشکل استفاده از حلقه مثل for اینه که نمیتونه زمان دقیق در ابعاد میکرو ثانیه رو ایجاد کنه
            منظورتون رو از اینکه می گید حلقه for نمی تونه زمان دقیق در ابعاد میکرو رو ایجاد کنه متوجه نمی شم
            ولی خوب باید توجه داشته باشید که خود دستور for سه می کرو ثانیه وقت avr رو می کیره...
            و ...
            شما باید دستوراتتون رو هم زمان بندی کنین...
            موفق باشین...

            دیدگاه


              #7
              پاسخ : ایجاد زمان تاخیر متغیر

              با سلام

              اگه بخواییم یه تاخیر 100میلی ثانیه برای یک دات ماتریس ایجاد کنیم , چه طوری باید عمل کنیم, البته در زبان اسمبلی.....

              دیدگاه


                #8
                پاسخ : ایجاد زمان تاخیر متغیر

                شما فقط کافیه متغیر و کم یا زیاد کنی
                حالا این که میخوای این متغیر سخت افزاری یا از طریق برنامه زیاد و کم بشه بستگی به خودتون داره
                مثلا شما میتونید خیلی راحت متغیر رو با فشردن کلید چند برابرش کنید پس زمان هم چند برابر میشه دیگه
                مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                دیدگاه

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