اطلاعیه

Collapse
No announcement yet.

نحوه کار تایمر

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

    نحوه کار تایمر

    با سلام
    آقا یون یه درخواست کوچیک دارم
    اگه میتونید نحوه کار تایمر های میکرو(هرکدوم که باشه )رو اگه ممکنه به صورت خیلی ساده توضیح بدین ممنون میشم
    اگه ممکنه این هارتوضیح بدین
    1)چطوری یک تایمر شروع به شمردن میکنه
    2)چه جوری میشه یک تایمر رو متوقف کرد(البته بعد از شروع شدن شمارش)
    3)چه جوری میشه فهمید تایمر چه مقداری رو داره (نحوه چک کردن مقدار متغیر تایمر )
    البته اگه به زبان سی باشه بهتره
    بازم ممنون

    #2
    پاسخ : نحوه کار تایمر

    سلام دوست عزیز.... با چه کامپایلری کار میکنی......؟
    در حالت کلی مثلا تو atmega32 که سه تا تایمر داری.....برای تایمر 0 با مقدار دهی به رجیستر TCCR0 میتونی تایمرتو با فرکانسی که میخوای روشن کنی که شروع به شمارش منه......(TCCR0=0X01)
    و بعد از شروع شمارش با صفر کردن همون رجیستر میتونی تایمرتو خاموش کنی..... بعد یه متغییر تعریف میکنی و مقدار رجیستر TCNT0 رو که مقدار شمارش تایمر هست رو توش ذخیره میکنی.... فقط حواست باشه که متغییرت رو درست انتخاب کنی....مثلا گه تایمرت 16 بیتی متغییرت باید unsigned int انتخاب بشه.... اگه بگی میخوای چیکار کنی راحت تر میشه کمکت کرد..... موفق باشی...

    دیدگاه


      #3
      پاسخ : نحوه کار تایمر

      با سلام
      من با کد ویژن کار میکنم
      خب اگه میتونی یکی یکی جواب منون بده ممنون
      1)من میخوام تایمر 1 از یه آی سی (هرچی باشه )رو بگم از صفر شروع کن و تا 1000 بشمار وسپس صفر کن و دوباره شروع کن

      2)وقتی که تایمر 1 به 1000 رسید چه کار میشه مثلا به غیر از متغیر تایمر 1 چه تغییری ایجاد میشه

      3)چطوری میتونم به تایمر فرمان بدم که از صفر شروع نکنه مثلا از 500 شروع کنه

      4)و چجوری میتونم مقدار تایمر رو تو یه متغیر دیگه بریزم (لطفا دستورش رو بگین )و نحوه چک کردن متغیر ها رو بگین
      یک دنیا ممنون میشم

      دیدگاه


        #4
        پاسخ : نحوه کار تایمر

        کسی نیست به من کمک کنه
        ممنون میشم کمکم کنید

        دیدگاه


          #5
          پاسخ : نحوه کار تایمر

          سلام
          اولا با چه بازه زمانی میخوای هر یک دونه اضافه بشه؟
          وقتی تنظیمش کنی بعد از شمردن 1000 تا بهت یک اینتراپت میده.
          بعد میتونی رجیستر تایمر رو با 500 مقدار بدی
          خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

          دیدگاه


            #6
            پاسخ : نحوه کار تایمر

            با سلام آقا حمید
            خب هر زمانی که میتونیم تنظیم کنیم (1 ثانیه )چطوری تنظیم میشه؟
            خب بعد از 1000 تا چطوری میتونم از اینتراپت استفاده کنم
            ممنون

            دیدگاه


              #7
              پاسخ : نحوه کار تایمر

              1000 ثانیه زمان زیادیه.
              میتونی هر پانیه یک اینتراپت داشته باشی و تویه اون اینتراپت یک متغیر بزاری که 1000 تا بشماره و هر وقت به 1000 رسیده شرط انجام بشه
              بصورت زیر اگه کریستالت 4 باشه هر یک ثانیه با تایمر 1 که 16 بیتی هست یک اینتراپت داری



              البته 1 ثانیه رو با تایمر 2 هم بصورت RTC میتونی داشته باشی با کریستال ساعت
              خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

              دیدگاه


                #8
                پاسخ : نحوه کار تایمر

                والا آقا حمید یه کم (نه خیلی زیاد )متوجه نشدم
                شرمنده

                دیدگاه


                  #9
                  پاسخ : نحوه کار تایمر

                  با سلام

                  آقا یون لطفا تواین عید یه نگاه به این تاپیک من بندازین
                  ممنون میشم در این مورد روشنم کنید

                  دیدگاه


                    #10
                    پاسخ : نحوه کار تایمر


                    دقیقا کجاشو متوجه نشدی.؟ بگو شاید کمکی از من بر بیاد.....

                    دیدگاه


                      #11
                      پاسخ : نحوه کار تایمر

                      قبلا گفتم
                      1)چه جوری میشه 1 ثانیه رو درست کرد (با کریستال خارجی یا اسیلاتور داخلی)
                      2)مثلا برایه یه ساعت اگه قرار باشه بعد 60 ثانیه 1 دقیقه حساب بشه چطوری میشه
                      3)و همین طور برایه ساعت
                      ممنون

                      دیدگاه


                        #12
                        پاسخ : نحوه کار تایمر

                        برای اینکه 1s دقیق درست کنی میتونی از RTC تایمر 2 استفاده کنی . که یک کریستال 32768 هرتز به پایه های TOSC1 , TOSC2 وصل میشه (این کرستال در بازار به کریستال ساعت معروفه )

                        حالا همونطور که میدونی تایمر 2 هشت بیتی هستش پس تا 256 میتونه توش جا بگیره . اگه شما prescale رو 128 تنظیم کنی میشه
                        32768/128=256

                        حالا اگر تایمر دو رو در لحظه راه اندازی برابر صفر قرار بدی دقیقا زمان 1 ثانیه رو ساختی . TCCR2=0x00

                        اگه خاستی میتونم یه برنامه نمونه برات بزارم البته به زبان بیسیک oo:

                        دیدگاه


                          #13
                          پاسخ : نحوه کار تایمر

                          با سلام آقا فرزاد
                          1)اگه ممکنه این prescale رو برام بیشتر توضیح بدین ممنون میشم
                          2)اگه میتونی یه برنامه بذار تا خوب بفهمم
                          امید وارم بتونمجبران کنم

                          دیدگاه


                            #14
                            پاسخ : نحوه کار تایمر

                            در مورد prescale همون تقسیم کننده فرکانس هستش اگه تو رجیستر TCCR2 مقدار 0x05 رو بنویسی prescale به 128 ست میشه .

                            من بیشتر با bascom کد مینویسیم ولی یه کم هم از codvision سر در میارم ( البته از کد های ساده تا متوسط ) یه برنامه نومنه برات میزارم که کارت را بیوفته.

                            #include <mega32.h>

                            unsigned int second,minute,hours;
                            void main()
                            {
                            ASSR=0X08;
                            TCNT2=0X00;
                            TCCR2=0X05;
                            TIFR=0X40;
                            TIMSK=0X40;
                            #asm ("sei&quot
                            while (1);
                            }
                            interrupt [TIM2-OVF]void clock-isr(void)
                            {

                            if (second==59){
                            second=1;
                            if (minute==59){
                            minute=1;
                            if (hours==24){
                            hours=0;
                            else
                            hours++;
                            }
                            else
                            minutes++;
                            }
                            else
                            second++;
                            }

                            تقربا این یه ساعت هستش ولی قسمت نمایش اون رو خودت اضافه کن ! :nerd:

                            دیدگاه

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