اطلاعیه

Collapse
No announcement yet.

تایمر متغیر

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

    #16
    پاسخ : تایمر متغیر

    برای بدست آوردن زمان دقیق از فرمول زیر استفاده کن



    در تایمر های 16 بیتی

    t = [prescale * (2^16 -TimerValue ) ] / F crystal


    در تایمر های 8 بیتی

    t = [prescale * (2^8 -TimerValue ) ] / F crystal

    مقدار t بر حسب ثانیه است
    البته این مقدار مدت زمانیه که طول می کشه تا به زیر روال وقفه بره

    مثال
    timer1 = 55536
    Fcrystal = 8000000
    prescale = 64

    T = 64*(65536-55536) / 8000000
    t= 0.08 ثانیه
    یعنی مدت زمانی که طول می کشه به زیر روال وقفه تایمر بری 8 صدم ثانیه است

    با دستکاری توی اعداد می تونی اون تاخیر مورد نظر رو بدست بیاری
    و یا با دفعات بیشتری فراخوانی زیر روال به زمان های طولانی تر برسی






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

    دیدگاه


      #17
      پاسخ : تایمر متغیر

      نوشته اصلی توسط Saeed Bagherani



      فک کنم مفهوم این خط برنامه شمارش از 55536 تا 65536 باشه یعنی 10000 شمارش
      نه شمارش از 0 تا 55536 یعنی 55536 شمارش
      بله . شما درست میفرمایید . اشتباه از من بود . با PIC قاطی کرده بودم!! :mrgreen:

      جناب BAMDAD 86 :
      این عدد رو شما باید طبق نیاز خودتون و با توجه به مقدار فرکانس کریستال و مقدار Prescale ، حساب کنید .
      فرض کنید میخواید تایمر رو طوری تنظیم کنید که هر 1 ثانیه یک وقفه داشته باشید . مقدار کریستال هم 32.768 کیلو هرتز میباشد (فرضا!) . مقدار Prescale رو هم رو 1 تنظیم کردید . (یعنی با هر نوسان میکرو ، یک واحد افزایش تایمر داریم) . خوب پس حالا باید یک کاری کنید که تایمر در عرض 1 ثانیه پر بشه تا وقفه بوجود بیاد . با توجه به مقدار کریستال متوجه میشیم که در یک ثانیه ، میکرو به تعداد 32768 نوسان انجام میده . پس تایمر هم در 1 ثانیه به تعداد 32768 شمارش انجام میده . (یعنی اگه از 0 شروع کنه به عدد 32767 میرسه . یعنی نصف تایمر تکمیل میشه .) پس کاملا پر نمیشه و وقفه ای هم بوجود نمیاد . حالا اگه تو برناممون بنویسیم timer=32768 چی میشه؟ با اینکار تایمر شمارش خودش رو از این عدد شروع میکنه نه از 0 . بنابراین در عرض 1 ثانیه و شمارش به تعداد 32768 ، مقدار تایمر پر میشه (یعنی به عدد 65535 میرسه) و وقفه بوجود میاد . پس با این کار تایمر در هر 1 ثانیه یک بار وقفه بوجود میاره .

      دیدگاه


        #18
        پاسخ : تایمر متغیر

        ممنون از همه شما که تایمر رو به من یاد دادین فقط یک نکته این دستور Enable Ovf1 جیه همون زی روال وقفه درسته منظور اینه که هر وقت تایمر به شمارش پایان داد کاری انجام بشه درسته؟

        دیدگاه


          #19
          پاسخ : تایمر متغیر

          نه
          این دستور فعال کننده تایمره


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

          دیدگاه


            #20
            پاسخ : تایمر متغیر

            نوشته اصلی توسط BAMDAD 86
            ممنون از همه شما که تایمر رو به من یاد دادین فقط یک نکته این دستور Enable Ovf1 جیه همون زی روال وقفه درسته منظور اینه که هر وقت تایمر به شمارش پایان داد کاری انجام بشه درسته؟
            به جای تایمر بازی برو دزد خونه تون رو پیدا کن اینقدر سرت توی این میکرو هست که مششکوکم هست البته این بلا ها میاد سرت راستی علی جان این مدل دوربینت چی بود

            معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

            دیدگاه


              #21
              پاسخ : تایمر متغیر

              :applause:ممنون از همه شما تا به این لحظه من کار با تایمر ها رو فهمیدم فقط چطود توسط دو تا میکرو سوییچ یا پتانسیومتر میشه متغیرش کرد

              دیدگاه


                #22
                پاسخ : تایمر متغیر

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

                دیدگاه


                  #23
                  پاسخ : تایمر متغیر

                  لطفا راهنمایی کنید این پروژه برام خیلی مهمه

                  دیدگاه


                    #24
                    پاسخ : تایمر متغیر

                    میتئونی از مبدل آنالوگ به دیجیتالش استفاده کنی
                    عددی رو که می ده 10 برابر کنی و مستقیم بزاری توی تایمر

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

                    نمیدونم منظورت کجاشه
                    ولی خیلی ساده تر از اونه که فکر می کنی
                    خودت شروع کن به برنامه نوشتن
                    اگه جایی به مشکل خوردی بروبچ کمکت می کنن



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

                    دیدگاه

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