اطلاعیه

Collapse
No announcement yet.

روش محاسبه تایمر و چنتا سوال دیگه؟

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

    #31
    پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

    نوشته اصلی توسط electromohammad نمایش پست ها
    سلام خدمت دوستان
    یهه سوال در مورد رجیستر TCNT داشتم (تایمر 1)
    فرکانس میکرو 8MHz
    کلاک تایمر = تقسیم بر 8 ( 1KHz )
    اگه هربار که تایمر ovf شد، بیایم و TCNT رو مساوی 1000- بذاریم، چجوری زمان های یک میلی ثانیه ای تولید می کنه؟
    چه اتفاقی می افته؟ چجوری اضافه میشه؟ هر چند وقت یکبار اضافه می شه؟ زمان های دیگه رو بخوام درست کنم چجوری میشه درست کرد؟ مثلا با تایمر 0 بخوام یه میلی ثانیه بسازم چجوریه؟ اگه فرکانس میکرو رو 16 MHz کنم چه فرمولی می خواد؟
    ببخشید سوالام زیاد شد. خیلی ممنون بابت وقت گذاشتنتون.
    با سلام
    بحث در مورد تایمرها واقعا خیلی گسترده است. تایمرها در اصل کانتر هستند و اینکه پرسیدید چگونه و هر چند وقت یکبار اضافه میشن بستگی به این داره که شما سورس کلاک آن کانتر را چگونه کانفیگ کرده باشید. در مورد تایمر/کانتر 1 برای شروع بهتر است که اول رجیسترهای زیر را در دیتا شیت مطالعه کنید.
    OCR1A – Output Compare Register A
    OCR1B – Output Compare Register B
    TIMSK – Timer/Counter Interrupt Mask Register
    TIFR – Timer/Counter Interrupt Flag Register
    TCCR1A – Timer/Counter1 control Register A
    TCCR1B – Timer/Counter1 control Register B

    دیدگاه


      #32
      پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

      نوشته اصلی توسط evergreen نمایش پست ها
      با سلام
      بحث در مورد تایمرها واقعا خیلی گسترده است. تایمرها در اصل کانتر هستند و اینکه پرسیدید چگونه و هر چند وقت یکبار اضافه میشن بستگی به این داره که شما سورس کلاک آن کانتر را چگونه کانفیگ کرده باشید. در مورد تایمر/کانتر 1 برای شروع بهتر است که اول رجیسترهای زیر را در دیتا شیت مطالعه کنید.
      OCR1A – Output Compare Register A
      OCR1B – Output Compare Register B
      TIMSK – Timer/Counter Interrupt Mask Register
      TIFR – Timer/Counter Interrupt Flag Register
      TCCR1A – Timer/Counter1 control Register A
      TCCR1B – Timer/Counter1 control Register B
      سلام خدمت دوستان
      از اونجایی که دیتاشیت خوانی برام مشکله و نمی دونم دقیقا کدوم بخشش ممکنه به کارم بیاد میشه لطف کنید فقط با این شرایط رو توضیح بدین؟
      فرکانس میکرو 8 مگ و کلاک تایمر 1 مگ (توی تنظیمات کدویژن میشه system clock) سورسش کلاکشو از کلاک میکرو می گیره
      از اونجایی که تایمر یک 16 بیتیه، چطوری میشه که وقتی TCNT رو مساوی 1000- می کنیم، زمان های یک میلی ثانیه ای درست میشه؟
      معادل دسیمال 16 بیت میشه 65536
      حالا اگه منفی و مثبت هم داشته باشه میشه سی و دو هزارو خورده ای
      اگه ما بیایم tcnt رو 1000- کنیم، هر چند کلاک یکبار بهش اضافه میشه؟ که باعث میشه یک میلی ثانیه درست بشه؟
      خیلی ممنون
      همیشه کامل توضیح بدهیم تا جواب کامل بگیریم.
      لطفا برای تشکر روی دکمه تشکر بزنید و بخاطر این پست نزنید که تایپیک شلوغ نشود
      تایپیک های من:
      حل تمام مشکلات atmega128a (eca.ir)
      آموزش کار با سایت (eca.ir)

      دیدگاه


        #33
        پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

        نوشته اصلی توسط electromohammad نمایش پست ها
        سلام خدمت دوستان
        از اونجایی که دیتاشیت خوانی برام مشکله و نمی دونم دقیقا کدوم بخشش ممکنه به کارم بیاد میشه لطف کنید فقط با این شرایط رو توضیح بدین؟
        فرکانس میکرو 8 مگ و کلاک تایمر 1 مگ (توی تنظیمات کدویژن میشه system clock) سورسش کلاکشو از کلاک میکرو می گیره
        از اونجایی که تایمر یک 16 بیتیه، چطوری میشه که وقتی TCNT رو مساوی 1000- می کنیم، زمان های یک میلی ثانیه ای درست میشه؟
        معادل دسیمال 16 بیت میشه 65536
        حالا اگه منفی و مثبت هم داشته باشه میشه سی و دو هزارو خورده ای
        اگه ما بیایم tcnt رو 1000- کنیم، هر چند کلاک یکبار بهش اضافه میشه؟ که باعث میشه یک میلی ثانیه درست بشه؟
        خیلی ممنون
        با سلام مجدد
        توجه کنید که معادل هگز 1000- میشه FC18 (که همون 64536 در حالت 16 بیتی بدون علامت میباشد) و عملا چون تایمر یک 16 بیتی هست بعد از 1000 کلاک پالس overflow خواهد شد.

        دیدگاه


          #34
          پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

          نوشته اصلی توسط evergreen نمایش پست ها
          با سلام مجدد
          توجه کنید که معادل هگز 1000- میشه FC18 (که همون 64536 در حالت 16 بیتی بدون علامت میباشد) و عملا چون تایمر یک 16 بیتی هست بعد از 1000 کلاک پالس overflow خواهد شد.
          یعنی اگه کلاک تایمر 1MHz باشه به ازای هر کلاک یکی اضافه می کنه؟
          و
          1000000 / 1000 = 1000
          1000us = 1ms
          و این که هر کلاک مساوی یک میکرو ثانیه است از این:
          1s = 1000ms
          1000ms = 1000000us
          که با عدد کلاکمون یکسانه
          ممکنه اشتباهی کرده باشم؟
          خیلی ممنون
          همیشه کامل توضیح بدهیم تا جواب کامل بگیریم.
          لطفا برای تشکر روی دکمه تشکر بزنید و بخاطر این پست نزنید که تایپیک شلوغ نشود
          تایپیک های من:
          حل تمام مشکلات atmega128a (eca.ir)
          آموزش کار با سایت (eca.ir)

          دیدگاه


            #35
            پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

            نوشته اصلی توسط electromohammad نمایش پست ها
            یعنی اگه کلاک تایمر 1MHz باشه به ازای هر کلاک یکی اضافه می کنه؟
            وو این که هر کلاک مساوی یک میکرو ثانیه است از این:
            ممکنه اشتباهی کرده باشم؟
            خیلی ممنون
            با سلام
            در اینمورد بنظر میاد با هر کلاک ، کانتر تغییر میکنه ولی در صورت نیاز میتوانید با تنظیم رجیسترها و تنظیم prescaler این میزان را تغییر دهید.

            دیدگاه

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