برنامه نویسی تایمر کانتر در میکروکنترلر AVR بخش 1
نوشته شده توسط Super User
کارگاه عملی با تشریح برنامه نویسی تایمر/کانتر یک آماده شده است.
این جلسه،فقط میخوایم در مورد کدنویسیش صحبت کنیم.
ایندفعه میخوایم از وقفه هم که تا حالا تو کدنویسی هامون ازش استفاده نکردیم،استفاده کنیم.
کد نویسی به زبان سی در محیط کامپایلر کدویژن :
فرکانس کاری میکروکنترلر 16 مگاهرتز خارجی تعریف شده.
#include<mega32.h>
در ابتدای کار،طبق معمول فایل سرآیند مربوط به میکروکنترلر مورد نظرمون که اینجا ATmega32 هست رو اضافه میکنیم.
در این بخش از کارگاه عملی،کار با تایمر/کانتر شماره صفر را بررسی خواهیم کرد.
یادتونه که در قسمت های قبلی عملکرد تایمر/کانتر شماره صفر رو بررسی کردیم،اما در مورد برنامه نویسیش صحبتی نکردیم و الان وقتشه که بریم سراغ برنامه نویسی.
سعی میکنم یه مقدار سطح توضیح دادنم رو حرفه ای تر کنم،اما قول میدم که برای دوستان مبتدی اشکالی پیش نیاد.
طبق معمول یه مسئله مطرح میشه و سعی میکنیم حلش کنیم
تعریف مسئله :
بررسی تایمر/کانتر شماره صفر (0) میکروکنترلرهای AVR
نوشته شده توسط Super Userبررسی تایمر/کانتر صفر (0) میکروکنترلرهای AVR
در این بخش از آموزش به بررسی تایمر/کانتر شماره صفر در میکروکنترلرهای AVR میپردازیم.
بخش بعدی آموزش رو شروع میکنیم.
در بخش قبلی اومدیم و تایمر/کانتر رو معرفی کردیم و نشون دادیم که چجوری محاسبات زمانی رو انجام میده و چندتا فرمول و ...
یادتون نمیاد لطفا برگردید و یه بار دیگه دوره کنید ...
که میکروکنترلرهای AVR دارای سه تایمر/کانتر :
1.تایمر/کانتر 0 ==> 8 بیتی
2.تایمر/کانتر 1 ==> 16 بیتی
3.تایمر/کانتر 2 ==> 8 بیتی
میباشند.
این بار مبحث شیرین تایمر/کانتر در میکروکنترلر AVR رو دنبال خواهیم کرد.
بحث امروز ما راجع به واحدی در میکروکنترلر به نام Timer/Counter هست که اگه یادتون باشه چندین بار تو پستهای قبلی ازش یاد کردیم و حالا دیگه وقتشه که بهتر بشناسیمش.
پس معرفی میکنم : دوستان،،،،تایمر/کانتر --- تایمر/کانتر،،،
تایمر/کانتر چیست ؟
تو زندگی روزمره همه کارهامون با زمان هماهنگ میشه.فلان ساعت فلان کارو میکنم و n دقیقه ورزش میکنیم و ...
وظیفه واحد تایمر/کانتر هم همینجور کارهاست.
کار با تایمر (timer) و شمارنده (counter) میکروکنترلر avr :
گاهی اوقات نیاز داریم تا یک زمان بندی دقیق برای وظایف میکروکنترلر مشخص کنیم مانند وقتی که می خواهیم یک LED را هر یک ثانیه یک بار خاموش و روشن کنیم یا زمانی که می خواهیم یک ساعت بسازیم و ... ، در این موارد از تایمر میکروکنترلر استفاده می کنیم. اما گاهی اوقات نیز نیاز است تا تعداد رویدادهایی که خارج از میکروکنترلر اتفاق میافتد را بشماریم مثلاً قصد داریم تا تعداد بطری نوشابه هایی که بر روی نقاله در حال عبور است را بدانیم از امکان شمارنده یا کانتر (counter) میکروکنترلر استفاده می کنیم. در واقع بخش تایمر/کانتر چیزی نیست جز یک شمارنده که در داخل میکروکنترلر تعبیه شده است ،همان طور که میدانیم شمارنده ها برای شمارش نیاز به کلاک پالس دارند حالا اگر این کلاک پالس از کلاک داخلی خود میکرو تامین شده باشد ما تایمر خواهیم داشت اما اگر این کلاک پالس از خارج از میکروکنترلر تامین شود ما یک کانتر خواهیم داشت.
کار با وقفه در نرم افزار bascom avr :
گاهی نیاز است که میکروکنترلر در حین انجام برنامه روتین خود در مواقعی از برنامه روتین خارج شده و یک عمل خاص را انجام دهد یعنی در واقع میکروکنترلر از کار جاری خود در یک لحظه خاص به یک دستور خاص پرش می کند و بعد از انجام آن کار خاص به برنامه جاری خود باز می گردد. به عبارتی در عملکرد عادی میکرو یک وقفه ایجاد می شود. به عاملی که باعث این عکس العمل میکرو می شود در برنامه نویسی وقفه یا INTERRUPT گفته می شود و به برنامه ای که در هنگام وقفه انجام می شود زیر برنامه وقفه یا ISR گفته می شود.
کار با مبدل آنالوگ به دیجیتال میکروکنترلر AVR در نرم افزار Bascom avr :
معرفی واحد مبدل آنالوگ به دیجیتال:
معرفی LCD کاراکتری:
LCD های موجود در بازار عموماً در مدلهای (بر اساس تعداد کاراکتر) 16*2 – 16*4 – 20*4 – 20*2 – 16*1 هستند. هر LCD دارای 16 پایه است که در جدول زیر شرح داده شده اند:
دستورالعمل DO – LOOP :
این دستور العمل زمانی استفاده می شود که ما بخواهیم یک حلقه تشکیل بدهیم. فرم کلی این دستور العمل به شکل زیر است:
- 1
- 2