اطلاعیه

Collapse
No announcement yet.

تایمر

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

    تایمر

    سلام
    دوستان با توجه به عکسی که گذاشتم یه سوال دارم

    مقدار TCNT0 =60 قرار گرفته شده. پس شمارنده از 60 شروع به شمارش میکنه
    مقدار OCR0 =50 قرار گرفته شده.
    حالا سوال من اینه. زمانی که تایمر سرریز بشه، وقفه سرریز رخ میده و وظیفه ی 1 انجام میشه و تایمر از 60 شروع به شمارش میکنه ؛ حال اینکه مقدار OCR برابر 50 هستش. چجوری این دو تا ( TCNT و OCR ) با هم مقایسه میشن و وقفه ی مقایسه رخ میده ، زمانی که مقدار TCNT از OCR بیشتر هستش؟ منظورم وظیفه شماره 2 هست.
    ممنو اگه پاسخ بدین
    یاعلی
    در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

    #2
    پاسخ : تایمر

    دوستان کسی نظری نداره. درکش نمیکنم
    در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

    دیدگاه


      #3
      پاسخ : تایمر

      مقدار اولیه تایمر کانتر برابر 60 است. بنابراین با یک کلاک مقدار آن 61 و با 195 کلاک مقدار آن 255 و با کلاک 196 ام مقدار آن صفر می شود. توجه کنید که overflow در مد نرمال به معنای عبور از MAX و نه برابری با آن است که در این مثال به دلیل 8 بیتی بودن و قرار داشتن تایمر در مد نرمال، سریز در عبور از 255 به صفر و در کلاک 196 ام بعد از راه اندازی تایمر اتفاق می افتد.بعد از سرریز برای ایجاد شرایط compare match لازم است مقدار تایمر از مقدار compare value عبور کند و برابر شدن با آن باعث یک شدن OCF0 نمی شود. بنابراین برخلاف مطلب اشتباهی که در متن کتاب نوشته شده، برای یک شدن OCF0 به 51 کلاک دیگر زمان نیاز است و 50 کلاک صحیح نیست.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #4
        پاسخ : پاسخ : تایمر

        نوشته اصلی توسط طراح
        مقدار اولیه تایمر کانتر برابر 60 است. بنابراین با یک کلاک مقدار آن 61 و با 195 کلاک مقدار آن 255 و با کلاک 196 ام مقدار آن صفر می شود. توجه کنید که overflow در مد نرمال به معنای عبور از MAX و نه برابری با آن است که در این مثال به دلیل 8 بیتی بودن و قرار داشتن تایمر در مد نرمال، سریز در عبور از 255 به صفر و در کلاک 196 ام بعد از راه اندازی تایمر اتفاق می افتد.بعد از سرریز برای ایجاد شرایط compare match لازم است مقدار تایمر از مقدار compare value عبور کند و برابر شدن با آن باعث یک شدن OCF0 نمی شود. بنابراین برخلاف مطلب اشتباهی که در متن کتاب نوشته شده، برای یک شدن OCF0 به 51 کلاک دیگر زمان نیاز است و 50 کلاک صحیح نیست.
        ممنون از پاسختون
        مهندس فک کنم متوجه سوال بنده نشدین.
        ایا پس از سرریز ، مقدار تایمر با عدد 60 بارگزاری میشه ؟
        اگر اینطور باشه ، شمارش همیشه از 60 شروع و تا 255 ادامه پیدا میکنه. و همین سیکل در حال تکرار می باشد.
        من نمیفهمم این مقایسه کجا و چجوری انجام میشه ، زمانی که مقدار OCR برابر 50 هستش oo:
        در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

        دیدگاه


          #5
          پاسخ : تایمر

          نوشته اصلی توسط sejil
          ممنون از پاسختون
          مهندس فک کنم متوجه سوال بنده نشدین.
          ایا پس از سرریز ، مقدار تایمر با عدد 60 بارگزاری میشه ؟
          اگر اینطور باشه ، شمارش همیشه از 60 شروع و تا 255 ادامه پیدا میکنه. و همین سیکل در حال تکرار می باشد.
          من نمیفهمم این مقایسه کجا و چجوری انجام میشه ، زمانی که مقدار OCR برابر 50 هستش oo:
          خیر
          پس از یک بار سرریز مقدارش صفر میشه. مگه اینکه در اول روتین وقفه دوباره تایمر رو مقدار دهی کنید
          این مقایسه درون تایمر و به صورت سخت افزاری انجام میشه
          گفت که دیوانه نهی لایق این خانه نهی

          دیدگاه


            #6
            پاسخ : تایمر

            سلام دوستان میشه این دستورو واسم تحلیل کنید میدونم چیه فقط یک قسمتشو نمیتونم بفهمم.
            دستور:
            کد:
            void timer0_1ms(){
             TCCR0=0x03; // Clock value: 125.000 kHz    
            TCNT0=130; //255-125=130  
            while(!(TIFR & 0x02)); 
            TIFR |= 0x02;  
             }
            قسمتی که نفهمیدم لطفا کامل توضیح بدین
            کد:
            while(!(TIFR & 0x02));
            با تشکر
            سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

            دیدگاه


              #7
              پاسخ : تایمر

              دراین قسمت تا زمانی که تایمر سرریز نشده توی این حلقه میمونه و زمانی که سرریز شده میپره بیرون.
              در واقع زمانی که تایمر سرریز نشده باشه بیت دوم TIFR صفر هست. پس شرط حلقه بر قراره. اما پس از سرریز این بیت یک شده و شرط برقرار نیست
              گفت که دیوانه نهی لایق این خانه نهی

              دیدگاه


                #8
                پاسخ : تایمر

                نوشته اصلی توسط Finder_
                خیر
                پس از یک بار سرریز مقدارش صفر میشه. مگه اینکه در اول روتین وقفه دوباره تایمر رو مقدار دهی کنید
                این مقایسه درون تایمر و به صورت سخت افزاری انجام میشه
                ممنون از پاسختون
                پس لزومی نداشت مقدار اولیه رو 60 قرار بدیم ؟ قرار دادن این مقدار علتی داره؟
                در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

                دیدگاه


                  #9
                  پاسخ : تایمر

                  نوشته اصلی توسط sejil
                  ممنون از پاسختون
                  پس لزومی نداشت مقدار اولیه رو 60 قرار بدیم ؟ قرار دادن این مقدار علتی داره؟
                  اگه نذاریم تایمر 256 پله طی میکنه بعد سرریز میشه
                  اگه بذاریم 196 پله میشماره و سررسز میشه
                  حالا فرض کن فرکانس تایمر 1 مگاهرتز باشه. یعنی هر پله رو در زمان 1میکرو ثانیه میشماره.
                  پس در حالت اول هر 256 میکروثانیه روتین اجرا میشه و دل حالت دوم هر 196 میکرو ثانیه.
                  که میتونه استفاده های گوناگونی داشته باشه
                  گفت که دیوانه نهی لایق این خانه نهی

                  دیدگاه


                    #10
                    پاسخ : تایمر

                    اگه نذاریم تایمر 256 پله طی میکنه بعد سرریز میشه
                    اگه بذاریم 196 پله میشماره و سررسز میشه
                    این مطلبتونو متوجه شدم .
                    با این اوصاف تنها یکبار از 60 میشماره تا 255 و در شمارش های بعدی از 0 شروع به شمارش میکنه ، که امکان مقایسه هم وجود داشته باشه.درست متوجه شدم ؟
                    در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

                    دیدگاه


                      #11
                      پاسخ : تایمر

                      امکان مقایسه چی وجود داشته باشه؟
                      گفت که دیوانه نهی لایق این خانه نهی

                      دیدگاه


                        #12
                        پاسخ : تایمر

                        نوشته اصلی توسط Finder_
                        امکان مقایسه چی وجود داشته باشه؟
                        مقایسه OCR0 با TCNT
                        در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

                        دیدگاه


                          #13
                          پاسخ : تایمر

                          با این اوصاف تنها یکبار از 60 میشماره تا 255 و در شمارش های بعدی از 0 شروع به شمارش میکنه ، که امکان مقایسه هم وجود داشته باشه.
                          قسمت اول جمله درسته، یعنی بار اول از همون مقداری که شما برای TCNT در نظر گرفتی می شماره. اما بعد از سرریز، مقدار TCNT هم به مقدار پیش فرض خودش (یعنی 0 ) برمی گرده. این ریست شدن TCNT به این خاظر نیست که بتونه با مقدار OCR مقایسه بشه و ربطی به هم به مقایسه اون با OCR نداره.
                          ---------
                          .
                          .
                          ...........

                          دیدگاه


                            #14
                            پاسخ : تایمر

                            نوشته اصلی توسط sejil
                            مقایسه OCR0 با TCNT
                            مقایسه به صورت سخت افزاری توسط تایمر انجام میشه و توسط اینتراپت به میکرو اطلاع میده
                            گفت که دیوانه نهی لایق این خانه نهی

                            دیدگاه


                              #15
                              پاسخ : تایمر

                              سلام اگه امکان داره بگید دستور زیر مشکلش چیه که کار نمیکنه؟
                              میخوام تایمرو به صورت کامل یاد بگیرم تا الان با ریجستری هاش اشنا شدم حالا میخوام با برنامه نویسش اشنا بشم
                              با تشکر
                              کد:
                              #include <mega8.h>
                              #include <mega8_bits.h>
                              #include <stdio.h>
                              #include <delay.h>
                              #include <mylcd.h>
                              void main(void){
                               int uyt=0;
                               char sajad[];
                               TCCR0=((0<<CS00),(1<<CS01),(0<<CS02));
                               DDRB=0xff;
                               lcd_init();
                               lcd_cls();
                               lcd_puts("start");
                               delay_ms(1000);
                               while(1){
                               while(!(TIFR & 0x02));
                               uyt++;
                               itoa(uyt,sajad);
                               lcd_cls();
                               lcd_puts(sajad);
                               
                               
                               }
                              }
                              سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

                              دیدگاه

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