اطلاعیه

Collapse
No announcement yet.

مشکل در TIMER 2 میکرو

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

    مشکل در TIMER 2 میکرو

    سلام
    دوستان من برای فعال کردن یک خروجی در یک زمان ،از تایمر میکرو استفاده کردم و برنامشو نوشتم .برنامه رو که بصورت جداگانه شبیه سازی میکنم تو پرتئوس هیچ موردی نداره ولی وقتی تو عمل پیادش میکنم بعضی مواقع کار نمیکنه بعضی مواقع که هم کار میکنه اصلا دقیق نیست .مثلا دستور دادم 5 ثانیه دیگه یه پین رو فعال کن نیم ساعت دیگه اینکارو انجام میده .یا دستور دادم که 15 ثانیه بعد پین رو غیر فعال کن 1 ساعته دیگه این کارو انجام میده .این برناممه .ممنونم دوستان راهنمایی کنند.

    Config Timer2 = Timer , Async = Off , Prescale = 128
    Enable Interrupts
    Enable Timer2
    On Timer2 mohammad
    : Dim S As Byte , M As Byte , H As Byte , T As Byte
    H = 23 : M = 58 : S = 0


    Start Timer2

    If H = 23 And M = 58 And S = 30 Then

    Set Portb.4

    Else
    If H = 23 And M = 58 And S = 50 Then

    Reset Portb.4

    mohammad:
    Incr S
    If S > 59 Then
    S = 0 : Incr M
    End If
    If M > 59 Then
    M = 0 : Incr H
    End If
    If H > 23 Then
    H = 1
    End If
    Return
    یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

    #2
    پاسخ : مشکل در TIMER 2 میکرو

    نوشته اصلی توسط علیدلی
    eft]
    Config Timer2 = Timer , Async = Off , Prescale = 128

    [/left]
    هرچند بنده بسکام کار نمیکنم ولی موردی که واضحه اینه که شما تایمر رو در حالت آسنکرون تنظیم نکردید. برای داشتن RTC باید تایمر رو در حالت آسنکرون راه اندازی کنید و از کریستال 32.768 khz استفاده کنید.

    دیدگاه


      #3
      پاسخ : مشکل در TIMER 2 میکرو

      نوشته اصلی توسط Perfect
      هرچند بنده بسکام کار نمیکنم ولی موردی که واضحه اینه که شما تایمر رو در حالت آسنکرون تنظیم نکردید. برای داشتن RTC باید تایمر رو در حالت آسنکرون راه اندازی کنید و از کریستال 32.768 khz استفاده کنید.
      اسنکرونم قبلا ON گذاشتم ولی اتفاقی نیافتاد.
      یکی از دوستام از تایمر استفاده کرده بود ولی از کریستال ساعت استفاده نکرده بود.

      اصلا تایمر صفر و یک هم همین مشکل رو داره .فقط 2 اینطور نیست
      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

      دیدگاه


        #4
        پاسخ : مشکل در TIMER 2 میکرو

        نوشته اصلی توسط علیدلی
        اسنکرونم قبلا ON گذاشتم ولی اتفاقی نیافتاد.
        یکی از دوستام از تایمر استفاده کرده بود ولی از کریستال ساعت استفاده نکرده بود.

        اصلا تایمر صفر و یک هم همین مشکل رو داره .فقط 2 اینطور نیست
        منظور از اتفاقی نیافتاد چیه؟ از سالم بودن کریستال 32 کیلوهرتز مطمئنید؟ درصد خرابی کریستال های 32 کیلو از کریستال های فرکانس بالا بیشتره.
        نمیدونم میزان تسلط شما به AVR چقدره ولی شاید یادآوریش بد نباشه که تایمر های 0 و1 مد آسنکرون ندارن.
        با این برنامه فعلی باید حتما از مود آسنکرون و کریستال 32 کیلو استفاده کنید.
        استفاده از کلاک داخلی به منظور RTC در شرایط خاص و مود های دیگه امکانپذیره که در این صورت میبایست برنامه رو هو عوض کنید. ضمنا باید به تنظیمات فیوز بیت ها و دقت کریستال هم توجه کنید.

        دیدگاه


          #5
          پاسخ : مشکل در TIMER 2 میکرو

          سلام
          من با بسکام کار کردم
          شما اگر از RTC میکرو می خواین استفاده کنین حتما باید کریستال 32.768 کیلو هرتز رو بر روی پایه های TOSC2 , ،TOSC1 قرار بدین
          اگر دوستتون کار کردن مطمئن باشین از قابلیت RTC میکرو کمک نگرفتن و تنها با سرریز شدن تایمر شروع به ایجاد یک ثانیه و بطبع اون ساخت برنامه ساعت کردن که متقابلا هم دقیق نیست


          این کد برنامه RTC هست که داده ها رو براتون به پورت سریال ارسال می کنه

          کد:
          $regfile = "m8def.dat"
          $crystal = 1000000
          $baud = 9600
          ''===================
          Config Clock = Soft
          Enable Interrupts
          Time$ = "00:00:00"
          
          Do
          Print Time$
          Waitms 500
          Loop
          
          End
          اگر می خواین با تایمر دو یه ساعت بسازین به صورت زیر هست
          کد:
          $regfile = "m8def.dat"
          $crystal = 8000000
          $baud = 9600
          ''===================
          Config Timer2 = Timer , Prescale = 1024
          '==============
          Dim S As Byte , M As Byte , H As Byte , T As Byte
          H = 23 : M = 58 : S = 0
          Dim I As Byte
          '=================
          Enable Interrupts
          Enable Timer2
          On Ovf2 Mohammad
          Start Timer2
          '===========
          Do
          
          nop
          
          Loop
          
          End
          '=============
          Mohammad:
          Incr I
          If I > 30 Then
          Incr S
          If S > 59 Then
          S = 0 : Incr M
          End If
          If M > 59 Then
          M = 0 : Incr H
          End If
          If H > 23 Then
          H = 1
          End If
          Print H ; ":" ; M ; ":" ; S
          Waitms 1
          I = 0
          End If
          Timer2 = 0
          Return
          هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

          دیدگاه


            #6
            پاسخ : مشکل در TIMER 2 میکرو

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

            من یه مدار دارم که میخام باتری گوشیم رو اتوماتیک هر روز نیم ساعت شارژ کنه .مهم نیست نیم ساعت عقب و جلو باشه .مهم اینکه هر روز باتری رو به مدت نیم ساعت شارژ کنه .حالا 1 ساعت عقب و جلو مهم نیست.

            همیجوری هم از تایمر 2 استفاده کردم. چون نمیخام از کریستال استفاده کنم از تایمر 0 استفاده میکنیم .
            حالا با این تفاسیر چیکار کنیم ؟؟

            یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

            دیدگاه


              #7
              پاسخ : مشکل در TIMER 2 میکرو

              سلام
              شما اگر بخواین می تونین که با یک حلقه و نهایتا یه wait ساعت رو درست کنین
              wait 60
              یک دقیقه صبر می کنه و بعد کار رو انجام می ده

              dim i ad byte

              for i=1 to 60
              waitms 60
              next i

              با حلقه بالا 1 ساعت درست شد و حالا برای نصف روز که نیم ساعت هم شارژ کنه خواهیم داشت

              dim i as integer
              do
              for i=1 to 720
              wait 60
              next i
              set portb.4

              for i=1 to 30
              wait 60
              next i

              reset portb.4
              loop

              end

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

              دیدگاه


                #8
                پاسخ : مشکل در TIMER 2 میکرو

                چون DO-LOOP (حلقه )داره نمیتونم ازش استفاده کنم ..چون برنامه یه حقله اصلی داره که نمیتونم یه حقله دیگه درونش جا بدم.
                ممنونم اگر با تایمر راهنمایی کنید یا همین برنامه خودتون رو اصلاح کنید و قرار بدید .من الان با تایمر صفر هم پروگرام کردم در صورتیکه برنامه هیچ مشکلی ندارهولی بازم جواب نداد.مشکل از کجا میتونه باشه ؟؟


                onfig Timer0 = Timer , Prescale = 1024
                Enable Interrupts
                Enable Timer0 : On Ovf0 Label : Enable Timer0

                Dim S As Byte , M As Byte , H As Byte
                H = 23 : M = 58 : S = 0

                Start Timer0


                Label:
                Incr S
                If S > 59 Then
                S = 0 : Incr M
                End If
                If M > 59 Then
                M = 0 : Incr H
                End If
                If H > 23 Then
                H = 1
                End If
                Return
                یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                دیدگاه


                  #9
                  پاسخ : مشکل در TIMER 2 میکرو

                  برنامه رو که داخل پرتئوس شبیه سازی میکنم جواب میده ولی در عمل نه (این شبیه ساز در پرتئوش هست
                  http://www.up.98ia.com/images/4eomnr23dxaj7pq8cp.rar

                  مداری که دارم روش کار میکنم کریستال خارجی ندارد.
                  داخل برنامه هم کریستال رو روی 1MHZ تعریف کردم.

                  یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                  دیدگاه


                    #10
                    پاسخ : مشکل در TIMER 2 میکرو

                    سلام
                    این برنامه رو چک کنین

                    کد:
                    $regfile = "m8def.dat"
                    $crystal = 1000000
                    
                    '#################################### CONFIG ###############################
                    Config Lcd = 16 * 2
                    Config Lcdpin = Pin , Rs = Pinc.0 , E = Pinc.1 , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinc.4 , Db7 = Pinc.5
                    '=============
                    Config Portd.0 = Output
                    Config Timer0 = Timer , Prescale = 1024
                    '=================
                    Dim S As Byte
                    Dim M As Byte
                    Dim H As Byte
                    Dim T As Byte
                    '=================
                    H = 23 : M = 59 : S = 50
                    Cursor Off
                    Cls
                    Enable Interrupts
                    On Ovf0 Label
                    Enable Timer0
                    Start Timer0
                    '============
                    Do
                    Home
                    
                    Lcd "time:" ; H ; " " ; ":" ; M ; " " ; ":" ; S ; "  "
                    
                     If H = 23 And M = 59 And S = 53 Then
                     Set Portd.0
                     Elseif H = 23 And M = 59 And S = 58 Then
                     Reset Portd.0
                     End If
                    
                    Loop
                    
                    
                    end
                    
                    
                    
                    
                    Label:
                    Incr T
                    If T > 35 Then
                    Incr S
                    If S > 59 Then
                    S = 0 : Incr M
                    End If
                    If M > 59 Then
                    M = 0 : Incr H
                    End If
                    If H > 23 Then
                    H = 1
                    End If
                    T = 0
                    End If
                    Timer2 = 0
                    Return
                    شما مطمئن هستین فیوز بیتهای مربوط به کریستال تنظیم هستن؟
                    یه سوال دیگه؟
                    مشکل شما اینه که روی lcd هم چیزی نمایش نمی ده؟ jtag رو disable کردین؟
                    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                    دیدگاه


                      #11
                      پاسخ : مشکل در TIMER 2 میکرو

                      نوشته اصلی توسط baby_1
                      سلام
                      این برنامه رو چک کنین

                      شما مطمئن هستین فیوز بیتهای مربوط به کریستال تنظیم هستن؟
                      .بهتون که گفتم مداری که دارم ازش استفاده میکنم نیاز به کریستال خارجی نداشته به خاطر همینم کریستال نداره .بنابراین فیوزبیتی هم تنظیم نکردم

                      یاشاید منظورتون کریستال ساعت برای TIMER هست رو میگید؟

                      در هر صورت فیوز بیتی رو تنظیم نکردم.

                      اگر نیاز هست ممنونم راهنمایی بفرمایئد

                      ضمنا LCD رو برای شبیه سازی در پرتئوس گذاشتم .تو عمل قسمت LCD رو حذف میکنم
                      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                      دیدگاه


                        #12
                        پاسخ : مشکل در TIMER 2 میکرو

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

                        دیدگاه


                          #13
                          پاسخ : مشکل در TIMER 2 میکرو

                          نوشته اصلی توسط baby_1
                          سلام
                          برنامه رو اجرا می کنین بعد از چقدر بعد خروجی فعال می شه؟
                          برنامه رو که شما گذاشتید پروگرام کردم .قانونا باید چند ثانیه بعد پین فعا ل میشد که نشد .تا 5 دقیقه هم منتظر موندم بازم فعال نشد

                          .کریستال داخلی رو از 1 به 4 تغییر دادم و پروگرام کردم.باید 5 ثانیه روشن میشد-- نشد حدودا 15 ثانیه طول کشید که فعال شد.دیگه بعدشم خاموش نشد.

                          یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                          دیدگاه


                            #14
                            پاسخ : مشکل در TIMER 2 میکرو

                            نوشته اصلی توسط علیدلی
                            برنامه رو که شما گذاشتید پروگرام کردم .قانونا باید چند ثانیه بعد پین فعا ل میشد که نشد .تا 5 دقیقه هم منتظر موندم بازم فعال نشد

                            .کریستال داخلی رو از 1 به 4 تغییر دادم و پروگرام کردم.باید 5 ثانیه روشن میشد-- نشد حدودا 15 ثانیه طول کشید که فعال شد.دیگه بعدشم خاموش نشد.
                            اقا مشکل اولیه حل شد :applause: :applause: :applause: :applause: :applause:
                            مشکل اینجا بود که باید دستور شرطی رو میبردم داخل زیر برنامه LABLE

                            الان فقط مشکل دقیق نبودن رو داریم .مثلا بجای اینکه 5 ثانیه بعد فعال کنه 90 ثانیه بعد فعال میکنه :cry: :cry: :cry: :cry2: :cry2: :cry2: :cry2:
                            یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                            دیدگاه


                              #15
                              پاسخ : مشکل در TIMER 2 میکرو

                              سلام
                              لطفا برنامتون رو قرار بدین
                              هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                              دیدگاه

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