اطلاعیه

Collapse
No announcement yet.

کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

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

    کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

    سلام
    من تازه کار با تایمر/کانترو شرو کردم.یه فایل آموزشی دانلود کردمو دارم میخونم ولی هر کاری میکنم نمیتونم زمان یک ثانیه تولید کنم
    محاسباتو درست انجام میدم.
    prescale رو هم درست انخاب میکنم ولی باز نمیشه.کلافه شدم :angry: :angry:
    با مگا8 و کریستال 4000000 و prescale=1024 و تکرار زیر برنامه وقفه 15 باید یک ثانیه بده که نمیده
    برنامه رو میذارم لطفا راهنماییم کنین
    $regfile = "m8def.dat"
    $crystal = 4000000

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , Rs = Portd.3 , E = Portd.2
    Cursor Off

    Dim B As Byte , C As Byte

    Config Timer0 = Timer , Prescale = 1024
    Enable Interrupts
    Enable Timer0
    On Timer0 P
    Start Timer0
    Do
    Loop
    End
    P:
    Incr B
    If B > 3 Then : Incr C : Locate 1 , 1 : Lcd C : B = 0 : End If
    Return
    telgram:09396888049

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

    برنامه رو به صورت زیر تحصیح کن
    کد:
                   $regfile = "m8def.dat"
    $crystal = 4000000
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , Rs = Portd.3 , E = Portd.2
    Cursor Off
    
    Dim B As Byte , C As Byte
    
    Config Timer0 = Timer , Prescale = 1024
    Enable Interrupts
    Enable Timer0
    On Timer0 P
    Start Timer0
    Do
    Loop
    End
    P:
    Incr B
    If B > 3 Then : Incr C : Locate 1 , 1 : Lcd C : B = 0 : End If
    Timer0 = 0
    Return

    دیدگاه


      #3
      پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

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

      علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

      دیدگاه


        #4
        پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

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

        دیدگاه


          #5
          پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

          برای تایمرهای 8 بیتی:
          Δt = (256 – X0 )*( Prescale/Fosc)
          برای تایمرهای 16بیتی:
          Δt = (65536 – X0 )*( Prescale/Fosc)
          X0 : مقدار اولیه ی تایمر هست

          دیدگاه


            #6
            پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

            ممنون از همه دوستان
            من تو برنامه تو قسمت وقفه 2<b نوشتم و یک ثانیه داد بهم ولی تو این حالت هم آخه از فرمول محسبه ای من جور در نمیاد
            اون دستور timer0=0 رو هم اضافه کردم آقای علیپور ولی فرقی نکرد
            فرمول محاسبه من هم اینه:
            n=(tq)/(bp
            n:تعداد تکرار زیر برنامه تایمر
            t:زمانی که قصدتولید آنرا داریم
            q:فرکانس کاری میکرو
            b:دو به توان تعداد بیت تایمر
            p:prescale
            اگه مشکلی داره محاسبم لطفا بگین
            در ضمن آقا مجتبی منظورتون از fosc چیه تو فرمولی که نوشتین؟
            با تشکر از همه
            telgram:09396888049

            دیدگاه


              #7
              پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

              خیلی ممنون امید خان
              من دانلود کردم برنامتونو مرسی
              اول مقدار کریستالو تعیین میکنم.بعد بیت تایمرو مشخص میکنم.بعدم مقدار اولیه و prescale بعدم تو قسمت زمان میزنم یک ثانیه ولی جواب نمیده
              یعنی وقتی کریستالو میزنم برنامه رو میده ولی واسه یک ثانیه نمیتونم تنظیمش کنم
              لطفا راهنماییم کنید
              مرسی
              telgram:09396888049

              دیدگاه


                #8
                پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

                معبومه که نمیشه :redface:

                چون تایمر خودش نمیتونه این زمان زیاد زو تولید کنه

                شما مثلا باید 250میلی ثانیه رو بگیرین و تو سرریز تایمر طوری برنامه بنویسین که وقتی 4 بار تایمر سرریز شد 1 ثانیه رو بهتون بده
                علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                دیدگاه


                  #9
                  پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

                  :angry: :angry:
                  ببخشید اصلا قاطی کردم یهو
                  تعطیل شد مخم
                  مرسی :nice:
                  telgram:09396888049

                  دیدگاه


                    #10
                    پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

                    :angry: :angry:
                    ببخشید قاطی کردم مخم کار نکرد حق با شماست
                    مرسی
                    telgram:09396888049

                    دیدگاه


                      #11
                      پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

                      امید خان نظرتون راجبه برنامم و فرمولی که باش محاسبه کردم چیه؟
                      تو محاسبه تکرار حلقه وقفه 3 میاد ولی تو عمل با تکرار 2 جواب میده
                      telgram:09396888049

                      دیدگاه


                        #12
                        پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

                        سلام نگاه کن داداش من تازه گی ها دارم با تایمر کانتر ها کار می کنم
                        و یک برنامه نوشتم که در هر یک ثانیه یک واحد به متغیر ثانیه اضافه می کنه شاید برای دوستان مفید باشه امید است که برنامه ساده ای بوده باشه :NO:
                        $regfile = "m32def.dat"
                        $crystal = 8000000
                        Config Lcd = 16 * 2
                        Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , _
                        Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
                        Dim I As Byte , Saneye As Byte
                        Config Timer0 = Timer , Prescale = 256
                        Enable Interrupts
                        Enable Timer0
                        On Timer0 L1
                        Timer0 = 6
                        Start Timer0
                        Do
                        Cls
                        Lcd Saneye
                        Waitms 100
                        Loop
                        End
                        L1:
                        Incr I
                        If I = 125 Then
                        Stop Timer0
                        I = 0
                        Incr Saneye
                        Timer0 = 6
                        Start Timer0
                        End If
                        Return
                        اگر خواستی یک برنامه با rtc هم بزارم آخه فکر کنم rtc بهتره
                        اما چطوری زمان یک ثانیه درست میشه طبق فرمول دوستمون :NO:
                        Δt = (256 – X0 )*(125)* Prescale/Fosc
                        مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                        دیدگاه


                          #13
                          پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

                          نوشته اصلی توسط jumper
                          در ضمن آقا مجتبی منظورتون از fosc چیه تو فرمولی که نوشتین؟
                          fosc همون فرکانس کریستالی که در ابتدای برنامه معرفی می شه .
                          نوشته اصلی توسط jumper
                          اما چطوری زمان یک ثانیه درست میشه طبق فرمول دوستمون
                          Δt = (256 – X0 )*(125)* Prescale/Fosc
                          دوست عزیز فرمولی که من گفتم این بود:
                          برای تایمرهای 8 بیتی:
                          Δt = (256 – X0 )*( Prescale/Fosc)
                          برای تایمرهای 16بیتی:
                          Δt = (65536 – X0 )*( Prescale/Fosc)
                          X0 : مقدار اولیه ی تایمر هست

                          برای مثال برای تولید زمان یک ثانیه ، خوب ما برای ایجاد این زمان احتیاج به یک زمان پایه داریم
                          تا با تکرار اون بتونیم به زمان مورد نظر برسییم
                          خوب اول برای تایمر 8 بیتی مثل تایمر صفر
                          فرض کنیم که :
                          1- fosc = 8000000
                          2- prescal = 8
                          خوب اگه دقت کنید ما با این مقادیر حداکثر زمانی که می تونیم داشته باشیم تا یک وقفه سریز تایمر و در
                          پی آن تغییری در یک متغیر ، 256 میکرو ثانیه هست
                          بدین ترتیب اگه بخواهیم یک زمان پایه مثلا به مقدار 200 میکرو ثانیه داشته باشیم طبق فرمول مقدار اولیه تایمر
                          رو 56 قرار می دهیم و هر با که سر ریز رخ داد مقدار اولیه تایمر رو دوباره باید برابر 56 قرار دهید چرا که با هر بار سریز تایمر مقدار اون صفر خواهد شد ، در ضمن تایمر رو در وقفه خاموش هم نکنید و اولین دستور درون وقفه باید همین مقدار اولیه که برابر 56 هست باشه
                          خوب ما زمان 200 میکرو ثانیه رو حساب کردیم حالا میگیم که هر 1 ثانیه برابر است با 5000 تا 200 میکرو ثانیه
                          خوب شما می تونید یک متغیر از نوع word رو تعریف کنید و اون رو داخل سریز هر بار 1 واحد افزایش دهید
                          به این ترتیب با رسیدن اون متغیر به 5000 شما به زمان 1 ثانیه خواهید رسید

                          به همین ترتیب شما می تونید این کار رو با تایمر 1 انجام دهید
                          در ضمن دوستان بهتون پیشنهاد میکنم که با c بهتره البته این تجربه شخصی منه
                          چرا که من هم خودم سر همین موضوع چند وقتی با بسکام و خودو درگیر بودم
                          من یک پروژه ساعت خیلی ساده که به زبون c هستش رو در زیر برای دانلود می زارم
                          البته این ساعت هر چقدر هم که دقیق باشه به خاطر وقفه هی دیگه ای که امکان داره توی برنامه
                          مثل نمایش مقادیر رو lcd در طولانی مدت زمان دقیقی به ما ندهد به همین خاطر از آی سی های
                          rtc استفاده می کنند .
                          https://rapidshare.com/files/460532156/saat.rar

                          دیدگاه


                            #14
                            پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

                            نوشته اصلی توسط mojtaba_led
                            fosc همون فرکانس کریستالی که در ابتدای برنامه معرفی می شه .دوست عزیز فرمولی که من گفتم این بود:
                            برای تایمرهای 8 بیتی:
                            Δt = (256 – X0 )*( Prescale/Fosc)
                            برای تایمرهای 16بیتی:
                            Δt = (65536 – X0 )*( Prescale/Fosc)
                            X0 : مقدار اولیه ی تایمر هست
                            درسته فرمولی که شما گفتین اون بود و کاملا فرمولتون درست بود
                            ولی اون فقط زمان ایجاد وقفه رو مشخص میکرد اون 125 هم تعداد دفعات وقفه است که با 125 بار تکرار شدن یک ثانیه درست میشه :mrgreen:
                            مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                            دیدگاه


                              #15
                              پاسخ : کمک درباره ایجاد زمان یک ثانیه با تایمر صفر

                              نوشته اصلی توسط iranesabz
                              سلام نگاه کن داداش من تازه گی ها دارم با تایمر کانتر ها کار می کنم
                              و یک برنامه نوشتم که در هر یک ثانیه یک واحد به متغیر ثانیه اضافه می کنه شاید برای دوستان مفید باشه امید است که برنامه ساده ای بوده باشه :NO:
                              $regfile = "m32def.dat"
                              $crystal = 8000000
                              Config Lcd = 16 * 2
                              Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , _
                              Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
                              Dim I As Byte , Saneye As Byte
                              Config Timer0 = Timer , Prescale = 256
                              Enable Interrupts
                              Enable Timer0
                              On Timer0 L1
                              Timer0 = 6
                              Start Timer0
                              Do
                              Cls
                              Lcd Saneye
                              Waitms 100
                              Loop
                              End
                              L1:
                              Incr I
                              If I = 125 Then
                              Stop Timer0
                              I = 0
                              Incr Saneye
                              Timer0 = 6
                              Start Timer0
                              End If
                              Return
                              اگر خواستی یک برنامه با rtc هم بزارم آخه فکر کنم rtc بهتره
                              اما چطوری زمان یک ثانیه درست میشه طبق فرمول دوستمون :NO:
                              Δt = (256 – X0 )*(125)* Prescale/Fosc
                              من برنامتونو نوشتمو ران کردم ولی جواب نداد
                              یعنی فقط صفر نشون میده
                              telgram:09396888049

                              دیدگاه

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