میکروکنترلر AVR

تایمرهای داخلی میکروکنترلرها و نحوه محاسبه فرکانس شمارش

microcontroller-timer-and-clock-frequency-digispark
نوشته شده توسط معین صابری

میکروکنترلرها قلب تپنده بسیاری از سیستم ها به شمار می روند. کامپیوترهای خودرو، سیستم های سرمایش/گرمایش، هودهای آشپزخانه، ماشین ظرفشویی، کنترل کننده های خط تولید و…. همگی جهت کار از میکروکنترلرها بهره می برند. میکروکنترلرها از شرکت های مختلف و در توان های پردازشی مختلف توسعه داده می شوند. به عنوان مثال میکروکنترلرهای AVR هسته بردهای آردوینو UNO، MEGA و… را تشکیل می دهند. در این آموزش قصد داریم تا با مفهوم تایمرداخلی و محاسبات آن آشنا شویم. تایمرهای داخلی میکروکنترلرها یکی از ابزارهای بسیار کاربردی جهت شمارش به شمارش می روند. این آموزش را به تایمرهای داخلی میکروکنترلر ATMEGA328P اختصاص می دهیم. این میکروکنترلر پردازنده برد آردوینو UNO را تشکیل می دهد. در این آموزش به تایمرهای داخلی و نحوه محاسبه ایجاد تاخیر خواهیم پرداخت. در ادامه آموزش تایمر در میکروکنترلر با مرجع تخصصی رزبری پای و آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


مفهوم تایمر در میکروکنترلر ATMEGA328P


همانطور که اطلاع دارید، میکروکنترلر ATMEGA328P پردازنده مرکزی برد آردوینو UNO به شمار می رود. این پردازنده دارای سه تایمر داخلی است. این تایمرها به سه شماره تایمر ۰، تایمر ۱ و تایمر ۲ دسته بندی می گردند. تایمرهای ۰ و ۲ هشت بیتی و تایمر ۱ به صورت ۱۶ بیتی است. تایمرها در میکروکنترلر ATMEGA328P به صورت موازی با برنامه اصلی عمل می کنند. به عبارت دیگر تایمرها بدون بلاک کردن برنامه اصلی، روال شمارش خود را آغاز می کنند. در طرف دیگر هرگاه که تایمر به مقدار تعیین شده خود برسد، وقفه رخ خواهد داد.

تایمر در میکروکنترلر - دیجی اسپارک

 

همانطور که پیشتر گفته شد، میکروکترلر ATMEGA328P از دو تایمر ۸ بیتی و یک تایمر ۱۶ بیتی بهره می برد. تایمرهای ۰ و ۲ ۸ بیت و تایمر ۱ از نوع ۱۶ بیتی است. منظور از ۸ بیت و ۱۶ بیت، بازه شمارش تایمر بوده، به طوریکه یک تایمر ۱۶ بیتی از ۰ الی ۶۵۵۳۵ و تایمر ۸ بیتی از ۰ الی ۲۵۵ می تواند شمارش کند. اما در کنار این، هر گام شمارش با فرکانس از پیش تعیین شده اجرا می شود. این موضوع بسیار حائز اهمیت است؛ به طوریکه اساس شمارش و ایجاد تاخیر مد نظر بر مبنای همین اصل صورت می گیرد. در قسمت بعد به شرح این موضوع می پردازیم.

 


نحوه شمارش و فرکانس آن در میکروکنترلر


در قسمت قبل تا حدودی در رابطه به شمارش آشنا شدیم. همانطور که پیشتر گفته شد، میکروکنترلر ATMEGA328P دارای سه تایمر با شماره های ۰، ۱ و دو است. جالب است بدانید که تابع millis از تایمر شماره ۰ جهت زمانبدی استفاده می کند. زمانیکه شما تایمر ۸ بیتی را برای شمارش انتخاب می کنید، این تایمر می تواند از ۰ (یا هر مقداری که شما برای شروع تعیین می کنید) تا ۲۵۵ بشمارد. اما هر گام شمارش با فرکانس تعیین شده توسط شما تعیین می گردد. برای روشن تر شدن موضوع، فرض کنید که  فرکانس تایمر برابر با ۴ هرتز تعیین شده است. طبق رابطه فرکانس و زمان داریم.

T=1/F

در این جا زمان متناسب با فرکانس برابر با ۴/۱ یا ۰٫۲۵ خواهد بود. به عبارت دیگر، هر سوییچ از یک وضعیت به وضعیت دیگر، به اندازه ۰٫۲۵ ثانیه زمانبر خواهد بود.

محاسبه فرکانس و تایمر در میکروکنترلر - دیجی اسپارک

 

مطابق تصویر فوق، مشاهده می کنید که شمارش از هر عدد به عدد بعدی به اندازه ۰٫۲۵ ثانیه زمان می برد. فرض کنید شمارش را از ۰ شروع کرده باشید. در این حالت شمارش تا ۲۵۵ به اندازه ۶۳ طول خواهد کشد. چراکه حاصلضرب ۲۵۵ در ۰٫۲۵ برابر با ۶۳ خواهد بود. در طرف دیگر با تنظیم و فعال سازی وقفه، با اتمام شمارش تابع وقفه اجرا خواهد شد. در طرف دیگر، فرکانس تایمر در میکروکنترلر به صورت بخشی از فرکانس اصلی قابل تنظیم است. در قسمت بعد به این موضوع می پردازیم.

 


تقسیم فرکانسی تایمر برای میکروکنترلر ATMEGA328P


در قسمت پیشین مشاهده کردیم که منظور از فرکانس تایمر، فرکانس شمارش بین اعداد است. به عبارت دیگر، مدت زمانی که طول می کشد تا تایمر از یک عدد به عدد دیگر برسد، توسط فرکانس تایمر تعیین می گردد. اما این فرکانس در میکروکنترلرهای AVR و به طور خاص ATMEGA328P، به صورت تقسیمی از فرکانس اصلی است. این تقسیم فرکانسی برای تایمر های مختلف به صورت زیر است.

  • تایمر ۰ و ۱: ۱,۸,۶۴,۲۵۶,۱۰۲۴
  • تایمر دو: ۱,۸,۳۲,۶۴,۱۲۸,۲۵۶,۱۰۲۴

برای روشن تر شدن موضوع فوق، فرض کنید که تقسیم فرکانسی را به صورت ۶۴ انتخاب کرده اید. در طرف دیگر فرکانس پردازنده هم در برد آردوینو UNO برابر با ۱۶ مگاهرتز است. در این حالت فرکانس تایمر برابر با ۶۴/۱۶۰۰۰۰۰۰ یا ۲۵۰۰۰۰ هرتز خواهد بود. در این حالت زمان تاخیر برابر با ۲۵۰۰۰۰/۱ یا ۰٫۰۰۰۰۰۴ ثانیه خواهد بود. در حالت تایمر شماره صفر، میزان تاخیر ایجاد شده برای شمارش، با شروع از ۰ برابر با ۰٫۰۰۱ ثانیه است. این مقدار برای تایمر شماره یک، که ۱۶ بیت بوده و می تواند تا ۶۵۵۳۵ بشمارد، بسیار بیشتر خواهد بود. در این حالت، این تایمر با شروع از صفر تا ۶۵۵۳۵ می تواند ۰٫۲ ثانیه تاخیر ایجاد کند.

 


لوازم مورد نیاز


انواع برد آردوینو

 


جمع بندی


در این آموزش به تشریح و بررسی تایمر در میکروکنترلر پرداختیم. تایمرها یکی از مهم ترین و پرکاربردترین ابزارها در میکروکنترلرها به شمار می روند. تایمرها به صورت موازی با برنامه اصلی شروع به شمارش می کنند. هرگاه که شمارش به انتها خود برسد، با ایجاد وقفه موضوع را به اطلاع CPU خواهند رساند. در این آموزش به بررسی تایمرهای میکروکنترلر ATMEGA328P پرداختیم. از آنجاییکه این میکروکنترلر هسته پردازشی برد آردوینو UNO به شمار می رود، لذا لازم دانستیم تا در رابطه با تایمر در این میکروکنترلر مطالبی را به اشتراک بگذاریم. در این آموزش ابتدا به مفهوم تایمر و روال عملکردی آن صحبت کردیم. در ادامه به مفهوم گام شمارش در تایمر ها پرداختیم. در نهایت با ارایه مفهوم تقسیم فرکانسی، چگونگی شمارش و نحوه ایجاد تاخیر را از نظر گذراندیم.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در مطالب درج شده وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه