pry

یعنی باید به گونه انتخاب شود که با استفاده از آن به توان اعداد صحیح و روندی برای شمارنده تایمر انتخاب کرد. برای انجام این کار باید دقت و حوصله زیادی به خرج داد تا Perscale خوبی انتخاب کرد، که خود این مسئله به فرکانس کاری میکرو وابستگی شدیدی دارد، پس برای ایجاد یک زمان دقیق ما نباید در محاسبات حتی از یک ده هزارم اعشار هم صرف نظر کنیم که برای اینکار توصیه میکنیم از ماشین حساب استفاده کنید. (در این صورت شما تاخیر های دقیقی خواهد داشت)

در تمامی مثال ها ما فرکانس کاری میکرو را ۴۰۰۰۰۰۰ هرتز انتخاب میکنیم و محاسبات را بر این اساس انجام می دهیم. F=4MHz همچنین برای راحتی کار از Codewizard نرم افزار استفاده میکنیم.

مثال های تایمر ۸ بیتی صفر

ایجاد تاخیر ۱ ثانیه با استفاده از وقفه تایمر صفر محتوای پوشه (TimersTimer 0 (8bit)1sec delay [INT])

Perscale=64 انتخاب میکنیم و مد تایمر هم شمارش تا FF می باشد، همچنین وقفه تایمر صفر و وقفه سراسری را هم فعال میکنیم. بنابراین TCCR0=0x03 خواهد شد. حال محاسبات تایمر:

Ft0= 4MHz/64=62500Hz فرکانس کاری تایمر

مدت زمان شمارش هر پله تایمر Tt0=1/62500=16us

رجیستر تایمر صفر ۸ بیتی است بنابراین ۲۵۰ پله شمارش نیاز می باشد تا ۴ms ایجاد شود ۱۶us*250=4ms

پس اگر ۲۵۰ مرتبه تایمر وقفه صادر کند ما ۱ ثانیه تاخیر دقیق ایجاد خواهیم کرد ۱sec=1000ms ⇒ ۱۰۰۰/۴ms=250

عدد ۲۵۰ به وجود آمده در مرحله ۳ و ۴ از نظر مقدار هیچ ربطی به هم ندارند و در این مثال به طور کامل تصادفی شبیه هم شده اند. در مرحله سوم گفتیم که برای ایجاد تاخیر ۴ms باید ۲۵۰ پله شمارش شود و همانطور که میدانیم این رجیستر از ۰ تا FF را شمارش می کند بنابراین ما باید در هر بار ایجاد وقفه مقدار اولیه شمارش را ۶ وارد کنیم تا شمارش از این مقدار تا ۲۵۶ ادامه یابد و در نهایت ۲۵۰ پله شمارش شود. تا این جا ما ۴ms تاخیر ایجاد کردیم و همانطور که مشاهد میکنید این عدد صحیح و بدون اعشار می باشد. حال با استفاده از یک متغییر به نام c تعداد وقفه های تایمر را شمارش می کنیم. بنابراین برای ایجاد ۱ ثانیه تاخیر باید ۲۵۰ بار وقفه رخ دهد. به عنوان مثال برای ایجاد نیم ثانیه این عدد به ۱۲۵ تغییر می یابد.

whi

بنابراین در یک حلقه بینهایت مقدار c چک می شود تا در صورتی که به ۲۵۰ رسیده است وضعیت پورت A.0 را برعکس کند. یعنی هر ثانیه یک بار چشمک خواهد زد. همچنین می توانید با استفاده از اسیلوسکوپ این زمان دقیق را مشاهده نمائید.