اطلاعیه

Collapse
No announcement yet.

کمک در تولید زمان نیم ثانیه

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

    کمک در تولید زمان نیم ثانیه

    سلام دوستان چطوری با تایمر میکرو زمان نیم ثانیه تولید کنم ؟؟

    #2
    پاسخ : کمک در تولید زمان نیم ثانیه

    سلام
    زبان برنامه نویسی تون چیه؟؟
    و توی چه فرکانسی کار میکنید؟؟
    نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

    دیدگاه


      #3
      پاسخ : کمک در تولید زمان نیم ثانیه

      نوشته اصلی توسط ساناز.پ
      سلام
      زبان برنامه نویسی تون چیه؟؟
      و توی چه فرکانسی کار میکنید؟؟
      بسکام ...فرکانس هم 1 mh

      دیدگاه


        #4
        پاسخ : کمک در تولید زمان نیم ثانیه

        خب این راحته
        یه راه اینه که از تایمر 1 کمک بگیرید و مستقیما 500 میلی رو تولید کنید.
        راه دیگه اینه که یه مرجع(مثلا" 1 یا 10 یا 100 میلی)بسازید و ازش انشعاب بیشتری بگیرید.
        من خودم اکثرا راه دوم رو انتخاب میکنم. چون با یه تایمر چندین زمان میشه ساخت!!!

        راه اول:
        این فرمول رو یکی از آشناهامون بهم داد و توی همین سایت هم گذاشتتش:
        (کریستال/پرسکال/زمان)=n
        یعنی مثلا:
        (0.5/8/1000000)=62500
        یعنی باید این مقدار تایمر 1 کار کنه
        پس:
        3035=62500-65535
        یعنی باید همیشه مقدار تایمر 1 برابر 3035 باشه تا تایمر در .0.5 ثانیه سرریز بشه

        راه دوم:
        همون قضایای بالا برای 100 میلی ثانیه:
        که مقدار فرمول میشه 12500 و مقدار تایمر در میاد 53035
        و طرز استفادش هم اینطوره که شما توی سرریز تایمرتون یه متغیر میزارید که هی بهش اضافه بشه.
        بعد در هر جای برنامه که خواستین میاین میگید که اونو چک کنه و اگه به مقدار دلخواه رسید استفاده بشه و دوباره صفر بشه.
        مثلا میگید اگر 100 شد(یعنی 10 ثانیه) کاری رو که میخواید انجام بده و دوباره 0 بشه. همین(فقط فکرشو بکنید شما چقدر زمان میتونید اینطور بسازید) البته فراموش نشه که اگر زیر روال وقفه تایمر از یه حدی بیشتر بشه ممکنه زمان رو بهم بریزه!!!
        نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

        دیدگاه


          #5
          پاسخ : کمک در تولید زمان نیم ثانیه

          ممنون
          اگه میشه توی تایمر 3 فرکانس 8
          یه کلید دارم با یه بار فشار 5 ثانیه ست بشه بعد خاموش بشه
          روش اول یا دوم فرق نمیکنه :smile:
          خدایا مرا آن ده که آن به

          دیدگاه


            #6
            پاسخ : کمک در تولید زمان نیم ثانیه

            ممنون....خدا یک در دنیا و هزار در آخرت هم به شما و هم به آشناتون بده که کاره منو راه انداختین... :applause:

            دیدگاه


              #7
              پاسخ : کمک در تولید زمان نیم ثانیه

              :cry:
              من یه مشکلی با این مدل برنامه نویسی دارم
              وقتی به تایمر مقدار میدی تایمر سرریز نمیشه
              میشه برنامه نمونه بزارین ساناز خانوم ؟
              فقط میخوام ببینم ریجیستر ایمر رو چه طور پر میکنید
              مقدار دهی شما به تایمر چه طوره ؟ ؟
              timer1=120
              ?
              [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

              دیدگاه


                #8
                پاسخ : کمک در تولید زمان نیم ثانیه

                نوشته اصلی توسط arashdj
                ممنون
                اگه میشه توی تایمر 3 فرکانس 8
                یه کلید دارم با یه بار فشار 5 ثانیه ست بشه بعد خاموش بشه
                روش اول یا دوم فرق نمیکنه
                مگه قرار نبود شما با 1307 کار کنید؟؟؟

                نوشته اصلی توسط حامد رحیمی
                من یه مشکلی با این مدل برنامه نویسی دارم
                وقتی به تایمر مقدار میدی تایمر سرریز نمیشه
                میشه برنامه نمونه بزارین ساناز خانوم ؟
                فقط میخوام ببینم ریجیستر ایمر رو چه طور پر میکنید
                مقدار دهی شما به تایمر چه طوره ؟ ؟
                timer1=120
                شاید شما اصلا تایمر رو راه ننداختید و یا Enable Interrupts رو ننوشتید؟؟؟
                اینو که الان نوشتم برای 500 میلی ثانیه هستش و کاملا هم دقیقه. میتونید امتحانش هم کنید.




                $regfile = "m8def.dat"
                $crystal = 1000000

                Config Timer1 = Timer , Prescale = 8 ' For 500 mili Secend
                Enable Interrupts
                Enable Ovf1
                On Ovf1 Tiker
                Timer1 = 3035
                Start Timer1

                Ddrb.0 = 1 : Portb.0 = 0

                Do
                Wait 1
                Loop

                Tiker:
                Timer1 = 3035
                Toggle Portb.0
                Return


                نيست بر لوح دلم جز الف قامت دوست *** چه کنم حرف دگر ياد نداد استادم

                دیدگاه


                  #9
                  پاسخ : کمک در تولید زمان نیم ثانیه

                  سلام
                  آره خوب 1307 حل شد این واسه اطلاع میخوام آی سی 128 و تایمر 3 رو میخوام راه بندازم
                  خدایا مرا آن ده که آن به

                  دیدگاه


                    #10
                    پاسخ : کمک در تولید زمان نیم ثانیه


                    خیلی عالی ببود
                    برای کار با ساعت
                    ایده ی خوبی دارم
                    میشه ساعتی رو که میخوای اون موقع رله خاموش شه تو خود دی اس ذخیره کرد
                    اخه 60 تا فضای 1 بایتی داره :redface:
                    تو خود e2 میکرو هم میشه ذخیره کرد که اگه برق میکرو قطع شد پاک نشه
                    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                    دیدگاه


                      #11
                      پاسخ : کمک در تولید زمان نیم ثانیه

                      سلام من مد تایمر را CTC گذاشتم و باتوجه به اینکه می خواهم هر 15.3میکروثانیه اینتراپت بده مقدارش را f4 قرار دادم حالا که میخوام چک کنم ببینم ،تایمر کانتر من درست کار می کند گفتم یکی از پورتامو مکمل کند ،متاسفانه در پرتئوس ورزن 7.7 هر 15.3 میکروثانیه پورتم را مکمل نمی کند؟(یا موج مربعی تشکیل می شود ولی هر15.3میکروثانیه این اتفاق نمی افتد؟؟)من سعی می کنم برنامه ام را در این پست شر کنم به نظرتون مشکل من در چیست؟
                      مراحل تولید:
                      با استفاده از فرمول زیر (فرمول از دیتا شیت مگا 16 گرفته شده) مقدار OCRn را محاسبه کردم:

                      fOCn=1/(2*15.3 us) ,
                      fclk_I/O=16 MHz ,
                      N=1 ,
                       OCRn=243.8
                      که چون این عدد باید به صورت دیجیتال باشد آن را به مقدار 244 تقریب میزنیم که در این صورت فاصله اینتراپت به 15.3125 us تغییر می یابد ، حال اگر مقدار 244 را به مبنای 16 ببریم برابر مقدار f4 میآ‌شود.
                      244 = (f4)16

                      سپس در ویزارد یکی از تایمرها را مطابق شکل زیر تنظیم کردم و همانطور که در شکل دیده میآ‌شود مقدار f4 را نیز در باکس compare وارد کردم .

                      و همچنین برنامه را به صورت زیر نوشتم :
                      PORTB.0=!PORTB.0;

                      http://up6.iranblog.com/files2/c1squere-wave-test-timer-.rar

                      دیدگاه

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