02 آگوست 2020
آگوست 2, 2020

چطور زمان خود را بسنجیم؟

0 دیدگاه

چطور زمان خود را بسنجیم؟

شاید بدانید که در کامپیوتر ها و دیگر دستگاه های الکترونیکی بازه های زمانی و زمان توسط تایمر سنجیده می شوند در اینجا برای نمونه به بررسی تایمرهای ATmega 16 خواهیم پرداخت که قبلا آن را کم و بیش از زوایای دیگر بررسی کرده ایم.

میکروکنترلر51 AT89C دارای دو Timer است که می توانند به صورت مستقل از هم، برای سنجش بازه های زمانی مورد استفاده قرار گیرند.

چگونگی عملکرد Timer ها

برای اینکه سنجش زمان برای میکروکنترلر میسر باشد باید معیاری از زمان در اختیار سخت افزار قرار بگیرد. این کار به وسیله سیگنال Clock انجام می شود. سیگنال Clock یک موج پریودیک با فرکانش مشخص است. فرکانس Clock برای یک 8051 حداکثر می تواند24 MHz باشد امّا مقدار معمول آن 12 MHz است. فرکانس این سیگنال، پیش از آنکه به Timerها اعمال شود، به ١٢ تقسیم می شود. یعنی فرکانس سیگنال Clock اعمال شده به Timerها 1MHz خواهد بود. (از این پس فرکانس Clock اعمال شده به Timer را 1MHz در نظر می گیریم ، بنابراین هر پریود Clock که به آن « سیکل ماشین » نیز گفته می شود، ١ میکروثانیه خواهد بود)

هر Timer در واقع یک شمارنده (Counter) است که تعداد پریودهای سیگنال Clock را (بعد از تقسیم فرکانس بر ١٢) می شمارد. اگر فرکانس Clock اعمال شده به Timer را 1MHz فرض کنیم هر 1 میکرو ثانیه، محتوای این شمارنده یک واحد افزایش می یابد . می توان با ضرب کردن محتوای این شمارنده در پریود Clock مدت زمان سپری شده را محاسبه نمود.

هر یک از Timer های ٨٠۵١ ، ١۶بیتی هستند . یعنی مقداری کهTimerمی شمارد در دو بایت (16) نگهداری می شود بنابراین بزرگترین عددی که یکTimer می تواند ذخیره کند، 1-16^2 یعنی ۶۵۵٣۵است . اگر رجیستر Timer حاوی این عدد باشد، با اعمال پالس بعدی Clock چه اتفاقی خواهد افتاد؟ مقدار بعدی رجیستر ٠ است. در واقع رجیستر Overflow یا سرریز می شود و بیت دیگری به جز١۶ بیت شمارنده (Flag) به نشان Overflow، یک می شود. (از این اتفاق Overflow و یک شدن بیتFlag) برای ایجاد تأخیر به میزان مشخص استفاده می شود.

چطور زمان خود را بسنجیم؟

فرض کنید قصد داریم تأخیری به اندازه ١٠٠ میکروثانیه ایجاد کنیم. در این صورت ، عدد100_65535 را در رجیست Timer قرار می دهیم . بعد از ١٠٠ پریود Clock محتوای رجیستر به حداکثر خود می رسد و Overflow می شود و همزمان با آن بیت نشان دهنده سرریز نیز یک می شود . در واقع یک شدن بیت Overflow به معنی سپری شدن زمان مورد نظر است.

همانطور که گفته شد میكروکنترلر AT89C 51 دارای دو Timer است . این دو Timer با اعداد 0 و 1 نشان داده می شوند . همچنین رجیسترهای هر کدام از این دو Timer با همین دو رقم از هم تمیز داده می شوند . از این پس، برای حفظ کلیت مطالب، به جای 1یا ٠ از x استفاده می کنیم، زیرا این دو Timer (در حوزه کاری ما) کاملاً مشابهند

حال با دقت بیشتری سخت افزار Timer را بررسی می کنیم . رجیستر ١۶ بیتی Timer در واقع از دو رجیستر ٨ بیتی به نامهای TLX و THX تشكیل می شود. THX ،(Timer High byte) 8بیت بالا وTLX ٨ بیت پایین هستند. شكل بالا رجیستر ,

(Timer (Timer Low byteرا نشان می دهد.