اطلاعیه

Collapse
No announcement yet.

ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

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

    ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

    با سلام

    برای ساخت تایمر 1ثانیه از روش غیرهمزمان تایمر 2 استفاده کردم و برنامه هم کار میکند. مشکل من اینجاست در این روش که کلاک توسط کریستال 32768 هرتز تامین میشه . چطوری تایم رو استپ استارت کنم (مثل کرنومتر). چون زمانی که تایم رو قطع میکنم بالاخره رجیستر tcnt2 دائما در حال شمارش هست بنابراین با استارت کردن تایم .نهایتا یک ثانیه و شاید بیشتر تایم غلط میزنه

    #2
    پاسخ : ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

    با چه کامپایلری کار می کنید.؟
    شما چند تا متغیر دارید که یکیشون ثانیه sو یکیشون دقیقهm و یکی هم مثلا ساعتhو تو خودش نگه می دارن.که همه اینهارو تو وقفه تایمر بدست میارید.
    یه متغیر دیگه هم تعریف می کنید مثلاC .برای اینکه مقدارنمایشگردر کرنومتررو تو خودش نگه داره.جدا از متغیر شمارش ثانیه
    حالا یه دستور شرطی میذارید که اگه مثلا فلان پایه یک باشد به ازای هر وقفه ُهمزمانی که به متغیر ثانیه یا همون متغیرs یک واحداضافه می شود .به متغیر C هم یک واحد اضافه شود .
    ودر خلال برنامه متغیر های m و hرا برحسب متغیر c بدست اورید.درصورتی که شرط برقرارباشه متغیر c افزایش خواهد .
    eshop-hodhod.ir

    دیدگاه


      #3
      پاسخ : ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

      مشکل من اینه . که چطور تایم رو استپ واستارت کنم . که زمان دقیق حساب به. الان تایمر من با زدن استارت به طور معکوس شروع به کار میکنه خب. یعنی از وقفه 1 ثانیه استفاده کردم که هریک ثانیه عدد تایمر روکم کنه تا به صفر برسد. خب زمانی که میخوام توسط کلید فشاری استپ کنم تایمر را . باید وقفه رو از کار بندازم که دیگه وقفه تایمر خوانده نشه درسته. این وسط کانتر تایمر2 یعنی رجیستر tcnt2 دائما در حاله شمارشه . فرض کن زمانی که من تایمر رو استپ کردم مقدار tcnt2=50 بوده خب و به هنگام زدن استارت باید مقدار tcnt2 =50 باشه تا تایمر دقیق کار کنه . ولی اینطور نیست .چون دائما تایمر در حالت کاره tcnt2 ممکنه عددی بین 0 تا 255 باشه
      خلا صه سرت رو درد نیارم . میخوام اینو بگم . تو روش معمولی با دادن مقدار 000 به tccr 2 عمل شمارش استپ میشه .اما تو روش اسنکرون عمل استپ چطوزیه که شمارنده ایست کنه

      دیدگاه


        #4
        پاسخ : ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

        نبود

        دیدگاه


          #5
          پاسخ : ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

          نوشته اصلی توسط sasan50 نمایش پست ها
          اید وقفه رو از کار بندازم که دیگه وقفه تایمر خوانده نشه درسته. این وسط کانتر تایمر2 یعنی رجیستر tcnt2 دائما در حاله شمارشه
          نه درست نیست .شما چرا باید وقفه رو از کار بندازی .وقفه باید اتفاق بیفته و زمان رو محاسبه کنه.
          برا ی اینکه این مقدار ناچیز و هم محاسبه کنی باید هروقت که دکمه استپ و زدیدمقدارداخل رجیسترشمارش تایمرو در همون لحضه ، در یک متغیر دیگه جا بدهید .و هروقت که دوباره استارت و زدید همون مقداررو دوباره با رجیسترشمارش تایمرجمع کنید.
          eshop-hodhod.ir

          دیدگاه


            #6
            پاسخ : ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

            دو الگوریتم زیر رو تو تابع وقفه تایمر بنویس
            در الگوریتم زیر یک حافظه برای وضعیت کلید مشخص میکنیم .
            اگر دکمه استارت زده شده بود و دکمه توقف نزده شده بود از زمان مشخص شده یک ثانیه یک ثانیه کم کن یا یک صدم یک صدم کم کن
            حالا اگر کلا یک دکمه داره
            اگر دکمه زده شد x=x+1; و اگر x بزرگ تر از 1 شد ایکس رو 0 کن
            اگر ایکس برابر بود با 1 کم کن از عدد تعریف شده یک ثانیه یک ثانیه
            امیدوارم متوجه شده باشی
            I'm going to
            RWTH Aachen
            University

            دیدگاه


              #7
              پاسخ : ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

              نوشته اصلی توسط sasan50 نمایش پست ها
              فرض کن زمانی که من تایمر رو استپ کردم مقدار tcnt2=50 بوده خب و به هنگام زدن استارت باید مقدار tcnt2 =50 باشه تا تایمر دقیق کار کنه . ولی اینطور نیست .چون دائما تایمر در حالت کاره tcnt2 ممکنه عددی بین 0 تا 255 باشه
              ببینید شما باید عملیات استپ و استارت و تو وقفه تایمر انجام بدهید .در این صورت مقداراونرجیسترصفره دیگه .یعنی زمانی که رجیسترهای شمارنده تایمر به مقدار255 رسیدندابتدا صفر شده بعد به داخل وقفه پرش می کند یعنی اینکه شما در نقطه صفر استپ می کنید ودورباره زمانی که رجیستر صفر هست استارت و می زنید واین یعنی کرنومتر دقیقه.
              به عبارتی شما نمی تونید در زمانی غیر از زمانی که رجیسترمربوطه صفره استپ کنید.
              eshop-hodhod.ir

              دیدگاه


                #8
                پاسخ : ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

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

                یعنی اگه من تو زمان 20 ثانیه استارت کنم و بخوام تو بازه زمانی بین 20 تا 19 ثانیه استپ کنم فرضا 19 ثانیه 500 میلی ثانیه . دیگه نمیشه باید بزارم بشه 19 ثانیه که عمل استپ انجام بشه

                دلیل: ادغام دو پست برای جلوگیری از اسپم

                البته بگم خود تایمر 2 در مد اسنکرون برای قطع کلاکش میتونم رجیسترassr که بیت as2 =0 کنم . اما فک کنم با تغییرas2 از یک به صفر محتوای رجیستر tccr , tcnt و... بهم بخوره وباید دوباره مقدار دهی بشن

                دلیل: ادغام دو پست برای جلوگیری از اسپم

                نوشته اصلی توسط Namvar14 نمایش پست ها
                نه درست نیست .شما چرا باید وقفه رو از کار بندازی .وقفه باید اتفاق بیفته و زمان رو محاسبه کنه.
                برا ی اینکه این مقدار ناچیز و هم محاسبه کنی باید هروقت که دکمه استپ و زدیدمقدارداخل رجیسترشمارش تایمرو در همون لحضه ، در یک متغیر دیگه جا بدهید .و هروقت که دوباره استارت و زدید همون مقداررو دوباره با رجیسترشمارش تایمرجمع کنید.
                وقفه سراسری از کار میندازم . ومشکلی هم نداره . در مورد رجیستر tcnt2 بله این کار رو کردم .یعنی زمانی که استپ میکنم مقدار این رجیستر رو ذخیره می کنم و هر وقت که استارت کردم مقدار ذخیره شده رو تو رجیستر tcnt2 میریزم . اما احساس میکنم قاطی میکنه تو پرتوس بعضی وقتا وقتی دکمه استپ واستارت میزنم . مثلا تو زمان 4:58 ثانیه استپ کردم و بعد از استارت کردن یه دفعه به جای اینکه 4:57 نشون بده 4:56 نمایش میده

                دیدگاه


                  #9
                  پاسخ : ساخت کرنومتر با تایمر 2 وروش اسنکرون (32768کریستال )

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

                  موفق باشید
                  چرا ناراحتی پاتریک!
                  + امروز ی بچه دیدم سرچهارراه گل میفروخت
                  - از دیدنش ناراحت شدی؟
                  + نه
                  پس چی ناراحتت کرده
                  + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                  ------------------------------------------------------------------------------------------------------
                  تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                  ------------------------------------------------------------------------------------------------------
                  محصولات

                  دیدگاه

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