چگونه از تایمرها استفاده کنیم؟
در مقاله قبلی به معرفی تایمر پرداختیم اکنون به بررسی مدهای آن خواهیم پرداخت
هر Timer می تواند چهار "رفتار" متفاوت داشته باشد که به هر یك از آنها یك "مد کاری" می گویند. از این چهار مد، ما تنها دو مد را بررسی می کنیم. مد 1 و مد 2
عملکرد Timer در مد 1 :
Timer در مد 1 از تمام 16 بیت خود برای شمارش استفاده می کند، یعنی بزرگترین عدد در Timer می تواند 65535 باشد. نتیجتاً طولانی ترین تأخیری که Timer در مد 1 می تواند به تنهایی ایجاد کند، کمی بیش از 65 میلی ثانیه است . در این مد، هر بار که Timer سرریز می شود، باید مقدار مورد نظر را دوباره در آن Load کرد . این عمل نیاز به چند میكروثانیه زمان دارد و زمانی که بازه زمانی مورد نظر کوچك باشد (مثلاً تولید موج KHz 100) این مسئله دقت را کاهش می دهد (مثلاً به جای KHz100، KHz80 خواهد شد)
عملكرد Timer در مد2 :
این مد مشكلی که در مورد مد 1 مورد بحث قرار گرفت را برطرف می کند. در مد 2 تنها هشت بیت از Timer برای شمارش استفاده می شود (بنابراین طولانی ترین تأخیر می تواند 255 میكرو ثانیه باشد). امّا 8 بیت دیگر Timer مقدار بعدی که باید در 8 بیت شمارنده قرار داده شود را ذخیره می کند. مثلاً برای تولید یك موج 100 KHz عدد 10_ 255 را هم در رجیستر شمارنده و هم در رجیستری ذخیره کننده قرار می دهیم، زمانی که برای اولین بار Overflow اتفاق بیفتد، با اینكه محتوای رجیستر شمارنده صفر شده است درست پس از Overflow ، به طور خودکار و توسط سخت افزار، مقدار 10-255 از رجیستر ذخیره کننده به رجیستر شمارنده کپی می شود و شمارش ادامه می یابد . به این ترتیب بدون اینكه زمان اضافی تلف شود Timer "دقیقا" هر 10 میكروثانیه یك بار Overflow می شود. این خاصیت را Auto Reload گویند.
رجیسترها و تنظیمات Timer :
پیش از آنكه از Timer ها استفاده کنیم لازم است ابتدا Timer را برای کار در مد مورد نظر تنظیم کنیم ، علاوه بر تعیین مد تنظیمات دیگری نیز لازم است که در زیر شرح داده می شود.
جدول رجیستر TMOD) Timer Mode) در زیر آمده است :
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Value after seret |
T0 M0 | T0 M 1 | C/T0 | Gate0 | T1M0 | T1M1 | C/T 1 | Gate1 | TMOD |
bit0 | bit1 | bit2 | bit3 | bit4 | bit5 | bit6 | bit7 | Bit name |
ادامه دارد..
برگرفته از سایت: AVR و IranIct
تنظیم : سیدخاموشی