بررسی تایمر/کانتر دو (2) در میکروکنترلرهای AVR ؟ [22] (نویسنده: احسان نوری)
اینبار با "بررسی تایمر/کانتر دو" در خدمتتون هستم.
پس با ما در ادامه مطلب همراه باشید ...
به نام خدا
سلام
حالتون خوبه ؟!
نزدیک به 50 روز از آخرین پستی که گذاشتم میگذره و بابت تاخیری که در روند آموزش بوجود اومده از همتون عذرخواهی میکنم.
فوق العاده سرم شلوغ بود و فکرم درگیر ...
بالاخره میشد یه وقتی پیدا کرد و پست گذاشت،اما اینکارو نکردم ! چون خدا میدونست که چه پستی از آب در میومد !!!
با ذهنی درگیر و پر از دغدغه و استرس، AVR کیلویی چنده ؟؟؟!!!!
شما هم برای ما دعا کنید که هم درس و زندگیمون اوکی بشه و هم انگیزه مون بیشتر بشه برای پست زدن !!!
به هرحال اومدم !
امروز یه بحث تکراری رو پیش رو داریم.
اونم چیزی نیست جز بررسی تایمر/کانتر دو !
در بخش های گذشته آموزش تایمر/کانترهای صفر و یک رو بررسی کردیم و امروز نوبت تایمر/کانتر شماره دو شده ...
تایمر/کانتر شماره دو مثل تایمر/کانتر شماره صفر، 8 بیتیه !
رجیسترهاش هم مثل همونه.
تنها یه ویژگی بارز داره تایمر/کانتر دو،اون هم Asynchronous Operation یا عملیات آسنکرونه !
البته فعلا زوده که راجع به این ویژگی بخوایم بحث بکنیم و برای اینکه منتظر بحث های آینده وبلاگ بمونید،نمیگم چیه ! (دلتووووون بسوزه !!! )
طرح مسئله :
مایل هستیم که یک فلاشر طراحی کنیم که هر 50 میلی ثانیه برامون چشمک بزنه ! (اینجوری :). هههههههه
از کریستال خارجی 16 مگاهرتز استفاده میکنیم.
حل مسئله :
با انتخاب ضریب تقسیم 256،زمان سرریز 4.096 میلی ثانیه میشه !
با 12 بار سرریز شدن تایمر/کانتر،و شمرده شدن تا گام 53 در 13 اُمین سرریز مدت زمان 50 میلی ثانیه طی خواهد شد.
تمامی صحبتهایی که شد تکراریه و از توضیح مجدد خودداری میکنم !
میریم سروقت معرفی رجیسترهای مربوطه ؛
بررسی رجیسترها :
بررسی رجیستر TCCR2 :
Timer/Counter2 Control Register
بیت های 0 و 1 و 2 ؛ Bit 2:0 – CS22:0: Clock Select :
از این بیتها استفاده میکنیم برای انتخاب ضریب تقسیم مورد علاقه مون.
طبق جدول زیر :
ما 256 رو انتخاب کردیم.
بررسی رجیستر TCNT2 :
Timer/Counter2
این رجیستر هم مقدار تایمر/کانتر شماره 2 رو در خودش نگه میداره.
بررسی رجیستر TIMSK :
Timer/Counter-Interrupt Mask-Register
در اینجا تنها بیت TOIE2 مد نظر ماست که با یک کردنش وقفه سرریز تایمر/کانتر دو رو فعال میکنه !
بررسی رجیستر TIFR :
Timer/Counter Interrupt Flag Register – TIFR
در اینجا هم تنها بیت TOV2 مد نظر ماست.
هنگامی که تایمر/کانتر یک سرریز میشه،این بیت 1 میشه و پس از اینکه زیرروال مربوط به وقفه بصورت کامل انجام شد صفر میشه و اگه زیرروالی وجود نداشت،با نوشتن یه یک دیگه روی اون،صفر میشه !!!
خب اینم از این قسمت !
دیدید که حرف جدیدی برای گفتن نداشتیم.
اما برای اینکه بحث کامل باشه،مجبور شدم که مطرحش کنم.
وقتشه که بریم سراغ کدنویسی !
بیاین تا بریم ...