اطلاعیه

Collapse
No announcement yet.

ایجاد تاخیر با تایمر صفر

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

    ایجاد تاخیر با تایمر صفر

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

    #2
    پاسخ : ایجاد تاخیر با تایمر صفر

    تایمر رو با عدد مورد تنظ پر کن تایمر رو استارت کن و منتظر بمون تا تایمر overflow بشه همین
    ocr0=25
    start timer0
    wait until (ocf0==1)
    فکر کنم باید دستورات رو خودت ادیت کنی خیلی وقته با بسکام کار نکردم

    دیدگاه


      #3
      پاسخ : ایجاد تاخیر با تایمر صفر

      یعنی وقتی که cpu دستور wait untel ocr0=1 رو میبینه منتظر میشه تا تایمر سر ریز شه و بعد خط بعدی رو اجرا میکنه ؟
      روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

      دیدگاه


        #4
        پاسخ : ایجاد تاخیر با تایمر صفر

        سلام
        دقیقا با تاخیرها می خواهی چکار کنی؟

        دیدگاه


          #5
          پاسخ : ایجاد تاخیر با تایمر صفر

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

          دیدگاه


            #6
            پاسخ : ایجاد تاخیر با تایمر صفر

            wait until ocf0=0
            cpu تا وقتی که ocf0 مساوی صفره یعنی شرط حلقه درسته این حلقه رو تکرار می کنه.

            دیدگاه


              #7
              پاسخ : ایجاد تاخیر با تایمر صفر

              این دستور رو به این شکل در برنامه استفاده کردم ولی کامپایلر error داد
              timer0=20
              start timer0
              wait until ocf0=0
              stop timer0
              incr a
              روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

              دیدگاه


                #8
                پاسخ : ایجاد تاخیر با تایمر صفر

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

                Timer0 = 20
                start timer0
                Do


                Loop Until Timer0 = 0
                stop timer0
                incr a
                این دستور loop until timer0=0 معادل یک شدن فلگ تایمر بود فکر می کنم.

                دیدگاه


                  #9
                  پاسخ : ایجاد تاخیر با تایمر صفر

                  سلام
                  اگه از تایمر 2 استفاده کنی به نظرت بهتر نیست . تازه اینطوری می تونی rtc بهش وصل کنی تا زمان wait ها دقیقتر بدست بیاد
                  موفق باشید
                  انجمن LABVIEW
                  http://www.eca.ir/forum2/index.php?board=279.0
                  اموزش ميكروكنترلرهاي AVR به زبان ساده
                  http://www.eca.ir/forum2/index.php/topic,7070.0.html

                  دیدگاه


                    #10
                    پاسخ : ایجاد تاخیر با تایمر صفر

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

                    دیدگاه


                      #11
                      پاسخ : ایجاد تاخیر با تایمر صفر

                      خیلی خوبه موفق باشین

                      دیدگاه


                        #12
                        پاسخ : ایجاد تاخیر با تایمر صفر

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

                        دیدگاه


                          #13
                          پاسخ : ایجاد تاخیر با تایمر صفر

                          برنامه ای رو مه نوشتم میزارم ببینید ایرادش از کجاس با سیمولاتور بیسکام و پروتیوس تست کردم مشکلی نداشت ولی به صورت عملی کار نمیکنه
                          $regfile = "m16def.dat"
                          Config Porta = Output
                          Config Portb = Output
                          Config Portc = Output
                          Dim A As Byte
                          Dim B As Byte
                          Dim C As Byte
                          Dim D As Byte
                          Dim T As Byte
                          Dim X As Byte
                          Config Timer0 = Timer , Prescale = 1024
                          Stop Timer0
                          A = 0
                          B = 0
                          C = 0
                          X = 20
                          T = 0
                          D = 0
                          Do
                          For D = 1 To 255
                          Incr A
                          Porta = A
                          Gosub Wait_rot
                          Next D
                          D = 0
                          Gosub Main_wait
                          For D = 1 To 255
                          Incr B
                          Portb = B
                          Gosub Wait_rot
                          Next D
                          D = 0
                          Gosub Main_wait
                          For D = 1 To 255
                          Incr C
                          Portc = C
                          Gosub Wait_rot
                          Next D
                          D = 0
                          Gosub Main_wait
                          For D = 1 To 255
                          Decr A
                          Porta = A
                          Gosub Wait_rot
                          Next D
                          D = 0
                          For D = 1 To 255
                          Decr B
                          Portb = B
                          Gosub Wait_rot
                          Next D
                          D = 0
                          Gosub Main_wait
                          For D = 1 To 255
                          Decr C
                          Portc = C
                          Gosub Wait_rot
                          Next D
                          D = 0
                          Gosub Main_wait
                          Loop
                          End 'end program
                          Wait_rot:
                          Timer0 = 220
                          Start Timer0
                          Do
                          Loop Until Timer0 = 255
                          Stop Timer0
                          Return
                          Main_wait:
                          Timer0 = 155
                          Start Timer0
                          Do
                          Loop Until Timer0 = 255
                          Timer0 = 155
                          Stop Timer0
                          Incr T
                          Select Case T
                          Case Is = 20 : Stop Timer0
                          T = 0
                          Return
                          Case Else : Gosub Dor
                          End Select
                          Dor:
                          Gosub Main_wait
                          Return
                          روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

                          دیدگاه


                            #14
                            پاسخ : ایجاد تاخیر با تایمر صفر

                            تاخیری که با این دستور ایجاد میشه بسته به عددی داره که داخل رجیستر تایمر میریزید حالا اگه مثلا 255 رو بریزین با اولین کلاک فلگ یک میشه و میکرو روی این دستور توقف نمی کنه تاخیر مورد نیاز رو از 256 باید کم کنید مثلا عدد 150 رو توی تایمر لود کنید . حالا اگه بازم نیاز به استفاده از این رو تین دارین بازم باید عدد رو تو تایمر بریزین. شاید یادتون میره تایمر رو پر کنین یا به موقع استارت و استپ کنین

                            دیدگاه


                              #15
                              پاسخ : ایجاد تاخیر با تایمر صفر

                              همونطور که در برنامه هم مشخصه بعد از هر بار سرریز شدن تایمر یک بار متغیر مربوطه کم یا زیاد میشه .امکانش هست که به جای اینکه این عدد رو در پرت بریزیم با همون سرعت در .مثلا pwm تایمر 1 بریزیم
                              روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

                              دیدگاه

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