اطلاعیه

Collapse
No announcement yet.

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

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

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

    با سلام
    من تایمر 2 رو میخوام در بسکام کانفیگ کنم اما با توجه به کاربردم مقدار prescale معلوم نیست!
    یعنی در متن برنامه مقدار prescale تشخیص داده میشود و سپس به تایمر میگوید مثلا از 100 بشمار و تایمر باید به زیر برنامه خودش پرش کند و تا زمانی که تایمر stop نشده باید تایمر پرش به زیر برنامه خودش داشته باشد.
    اما چنین چیزی ممکن است؟

    #2
    پاسخ : کانفیگ تایمر به صورت دلخواه؟؟؟

    سلام مسعود جان

    فکر می کنم که برای انجام این کار باید از دستورات اسمبلی استفاده کنی! البته با دست بردن در کتابخونه های خود بسکامم میشه یه کارایی کرد! مهم اینه که شما بتونی مقدار Presacle رو برابر با یه متغیر word بذاری. حالا یا با زبان اسمبلی یا با دست کاری کتبخونه بسکام.

    اَللّهُمَ صَلّ عَلي مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم

    {خلاف قوانین}
    [img width=124 height=100]http://mortezark.persiangig.com/image/Web/6_3.PNG[/img]

    دیدگاه


      #3
      پاسخ : کانفیگ تایمر به صورت دلخواه؟؟؟

      شما میتونی به سادگی اینکاررو با تغییر سه بیت ککم ارزش از رجیستر TCCR2 انجام بدی:

      CS22 CS21 CS20 Description
      0 0 0 No clock source (Timer/Counter stopped).
      001 clkT2S/(No prescaling)
      010 clkT2S/8 (From prescaler)
      011 clkT2S/32 (From prescaler)
      100 clkT2S/64 (From prescaler)
      101 clkT2S/128 (From prescaler)
      110clkT2S/256 (From prescaler)
      111clkT2S/1024 (From prescaler)
      {خلاف قوانین - امضا ویرایش شد}

      دیدگاه


        #4
        پاسخ : کانفیگ تایمر به صورت دلخواه؟؟؟

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

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

        برای اینکه تنظیمات مربوط به تایمر/کانتر 2 رو متوجه بشید و بتونید رجیستر مربوط به اونو مقداردهی کنید به دیتاشیت میکروکنترلر مراجعه کنید. اگه منبعی به زبان فارسی می خواید می تونید به کتاب مهندس کاهه بخش تایمرها مراجعه کنید.

        البته بجز رجیستر مربوط به تایمر/کانتر 2 می تونید به رجیسترهای تایمر/کانتر 0 و 1 هم دسترسی داشته باشید.

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

        اَللّهُمَ صَلّ عَلي مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم

        {خلاف قوانین}
        [img width=124 height=100]http://mortezark.persiangig.com/image/Web/6_3.PNG[/img]

        دیدگاه


          #5
          پاسخ : کانفیگ تایمر به صورت دلخواه؟؟؟

          ببینید بعد از اینکه prescale تشخیص داده شد من مثل زیر کانفیگ میکنم:
          Select Case Y
          Case 0:
          Config Timer2 = Timer , Async = Off , Prescale = 1
          Case 1:
          Config Timer2 = Timer , Async = Off , Prescale = 8
          Case 2:
          Config Timer2 = Timer , Async = Off , Prescale = 32
          Case 3:
          Config Timer2 = Timer , Async = Off , Prescale = 64
          Case 4:
          Config Timer2 = Timer , Async = Off , Prescale = 128
          Case 5:
          Config Timer2 = Timer , Async = Off , Prescale = 256
          Case 6:
          Config Timer2 = Timer , Async = Off , Prescale = 1024
          End Select
          خوب حالا به گفته دوستان به جای این کانفیگ ها باید بنویسم مثلا :
          001 clkT2S/(No prescaling)
          010 clkT2S/8 (From prescaler)
          011 clkT2S/32 (From prescaler)
          100 clkT2S/64 (From prescaler)
          101 clkT2S/128 (From prescaler)
          110clkT2S/256 (From prescaler)
          111clkT2S/1024 (From prescaler
          من تا حالا با رجیستر prescale کار نکردم.

          دیدگاه


            #6
            پاسخ : کانفیگ تایمر به صورت دلخواه؟؟؟

            مسعودجان اونارو من از دیتاشیت کپی پیست کردم
            دستوراتی که شما یاید استفاده کنی میتونه اینجوری باشه:

            TCCR2 = TCCR2 and &b11111000
            Select Case Y
            Case 0:
            TCCR2 = TCCR2 or &b00000001
            Case 1:
            TCCR2 = TCCR2 or &b00000010
            Case 2:
            TCCR2 = TCCR2 or &b00000011
            Case 3:
            TCCR2 = TCCR2 or &b00000100
            Case 4:
            TCCR2 = TCCR2 or &b00000101
            Case 5:
            TCCR2 = TCCR2 or &b00000110
            Case 6:
            TCCR2 = TCCR2 or &b00000111
            End Select
            {خلاف قوانین - امضا ویرایش شد}

            دیدگاه


              #7
              پاسخ : کانفیگ تایمر به صورت دلخواه؟؟؟

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

              دیدگاه


                #8
                پاسخ : کانفیگ تایمر به صورت دلخواه؟؟؟

                سلام
                چرا وقتی من تایمر رو یک جوری تنظیم میکنم که باید هر مثلا 10ms به فلان زیر برنامه برود اما به جای 10ms فرضا 16 میلی ثانیه میرود؟من باید بسیار دقیق کار کنم خیلی این زمان مهمه :angry: :angry: :angry:
                من فقط همین تایمر رو دارم ولی برنامه سنگینی دارم با بسکام شده 290 خط

                دیدگاه

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