آموزش بسکام کار با پورت ها میکروکنترلر AVR (یک)
اگر وبلاگ الکترولب را دنبال کرده باشید ما سری آموزش هایی در مورد آموزش میکروکنترلر های AVR به زبان C و در کدویژن داشتیم در ادامه و به خاطر پر طرفدار بودن زبان بیسیک و کاپایلر بسکام این زبان را هم در چند پست متوالی آموزش خواهیم داد و در پایان این آموزش به صورت کتاب جامع آموزش بسکام در اختیار شما قرار داده خواهد شد در این سری از آموزش ها همراه ما باشید.
آموزش بسکام
میکرو کنترلر های AVR ایسی های برنامه پذیری هستند که به زبانهای مختلف برنامه نویسی برنامه مربوط به این ایسی ها نوشته میشود از جمله این زبان های برنامه نویسی ها زبان بیسیک میباشد که میتوان با استفاده از این زبان برای کامپیوتر با استفاده از ویژوال بیسیک نوشت ولی برای میکروکنترلر های AVR از نرم افزار بسکام استفاده میشود مثل تمام برنامه ها این برنامه هم ورژن های مختلف خود را دارد اما بهترین ورژن موجود برای این برنامه ورژن 1.11.9.8 چرا که اکثر برنامه های نوشته شده برای میکرو کنترلر ها در این ورژن بدون هیچ ایرادی اجرا میشود .
اصول کلی برنامه نویسی برای میکرو کنترلر :
برای برنامه ریزی میکروکنترلر مراحل زیر را اجرا میکنیم
- ابتدا کار یا عملکردی را که از ایسی انتطار دارید را در ذهنتان تجسم کنید. مثلا میخواهید 2 تا ال ای دی را در فواصل زمانی مشخص روشن یا خاموش کنید.
- نرم افزار بسکام را باز کنید و شروع به نوشتن کد برای ایسی مشخص کنید.
- بعد از تمام شدن نوشتن کدها برنامه را کامپایل compile کرده و در صورت وجود ایراد یا Error ایراد ها رفع کنید .
- هنگام کامپایل کردن مکانی را که کد یا برنامه ایسی خود را ذخیره نموده اید باز کنید. فایلی با پسوندhex را پیدا کرده و توسط نرم افزار دیگری و توسط سخت افزار خود (programmer) فایل را به داخل میکرو کنترلر بریزید و انچیزی را که که در مرحله اول در ذهن داشتید توسط ایسی اجرا میشود .
این اصول کلی برای برنامه ریزی میکرو کنترلر ها میباشد
AVR ها ایسی ها بسیار متنوعی هستند و مخصوص یک نوع ایسی نمی شوند.رایج ترین این ایسیها ایسی atmega32 میباشد که دارای 32 پایه ورودی و خروجی که این پایه ها علاوه بر ورودی یا خروجی بودن کارهایی نظیر اندازه گیری سطح ولتاژADC و … را دارست که شما توسط کدهای نوشته شده کارکرد هر پایه را مشخص میکنید.
شروع به کار:
در ابتدا ما کار کد نویسی را با مثال ساده چشمک زدن LED شروع میکنیم.در ابتدا پس از باز کردن نرم افزار بسکام و زدن دو کلید ctrl و N به طور همزمان صفحه کدنویسی جدید باز میشود. در هر برنامه نویسی باید شما ابتدا نوع ایسی یا میکرو کنترلری را که قصد نوشتن کد برای آن را دارید توسط دستور زیر تعیین کنید مثلا برای ایسی ATMEGA32 دستور به صورت زیر هست:
برای ایسی ATMEGA8 نیز به صورت زیر هست:
هر میکرو کنترلی را میتوان با فرکانس کاری مختلفی راه اندازی کرد . منظور از فرکانس کاری به زبان بسیار ساده همان تعداد کار هایی که در یک ثانیه انجام میشود مثلا به طور پیشفرض میکروکنترلر ها در فرکانس 1MHz هست یعنی در هر ثانیه یک میلیون عمل انجام میدهد.
اما توسط دستور زیر ما به صورت نرم افزاری تعیین میکنیم که میکرو کنترلر ما در فرکانس 1MHz هست .(این نکته را در نطر بگیرید که هم باید توسط کد فرکانس تعیین شود و هم به صورت سخت افزاری توسط پروگرامر(programmer) )
حال بعد از تنطیمات اولیه میریم سراغ کار اصلی یعنی چشمک زدن یک یا چند ال ای دی برای این کار شما باید پایه ای ازمیکرو کنترلر رابرای وصل کردن به ال ای دی انتخاب کنید با توجه به برگه های اطلاعاتی(دیتاشیت)ایسی atmega32 یا مگا32 نام پایه های به صورت زیر هست:
من به طور معمول پایه PA0 رو به عنوان پایه ای که قراره LED به ان وصل شود را انتخابمیکنم .چون قرار نیست LED اطلاعاتی یا دیتایی به ما بدهد . در واقع ما به ال ای دی دستور میدهیم پس این پایه باید خروجی باشد . برای خروجی یا ورودی کردن پایه ها از دستور زیر استفاده میکنیم:
DDRهمان دستور تعیین جهت پایه هست که در دستور سطر بالا A.0 با دادن مقدار 1 خروجی
شد اگر 0 داده میشد این پایه به عنوان ورودی پیکره بندی میشد مثال زیر :
حال اگر به جای A.0فقط A قرار میدادیم در آن صورت پایه های PA0 تا PA7 کلا ورودی یا خروجی میشود.
برای پورت های دیگر نیز این دستور صادق هست وفقط باید به جای A نام پورت مورد نظر نوشته شود .این نکته را در ذهن داشته باشید که ایسی کد ها رو از سطر بالا به پایین سطر به سطر اجرا میکند اما بعد از تعیین جهت پایه حال جطور به این پایه مقدار 0 یا 1 بدهیم(0 همان صفر دیجیتال که محدوده ولتاژی بین 0 تا 1 وات دارد و1 همان 1دیجیتال که محدوده ولتاژی 4تا 5 ولت دارد به عبارتی با 1 کردن پایه در صورت خروجی کردن پایه ولتاژ5 ولت روی پایه میافتد) .
برای این کار از دستور زیر استفاده میکنیم:
که در دستور بالا مقدار 1 دیجیتال یا مقدار آنالوگ 5 ولت روی پایه PA0 میافتد پس اگر مدار رو به صورت زیر ببندید ال ای دی با دستور بالا روشن میشود:
حال اگه مقدار 1 رو به 0 تبدیل کنیم ولتاژ 0 ولت روی پایه میافتد و ال ای دی خاموش میشود مثل دستور DDR به جای A.0 اگر A قرار دهیم کل پایه های PA0 تا PA7 ایسی روشن یا خاموش میشود.
کد ما برای چشمک زن تقریبا تمام شده که کد کامل به صورت زیر هست:
حال توضیح برنامه به صورت زیر هست:
سطر اول مربوط به تعیین نوع میکرو هست و سطر دوم فرکانس کاری میکرو. توسط کد سطر 3 ما جهت پایه PA0 را تعیین کردیم که خروجی باشد . توسط دستور DO و LOOP که در سطر 4و9 هست ما یک حلقه بینهایت برای اجرای دستورات مابین این دو دستور ایجاد کردیم یعنی دستورات سطر های 5 تا 8 به صورت ردیفی از بالا به پایین اجرا شده و وقتی به دستور LOOP رسید به سطر 5 برگشته و دوباره تا سطر 9 ادامه میباد و این روال تا زمانی که تغذیه ایسی برقرار باشد ادامه میابد. اما دستور waitms 300 باعث توقف برنامه به مدت 300 میلی ثانیه یا همان 0.3 ثانیه میشود به عبارتی بعد از روشن کردن ال ای دی به مدت 300 میلی ثانیه روشن باقی میماند و سپس خاموش شده و به مدت 300 میلی ثانیه خاموش باقی میماند بعد از گذشت 300 میلی ثانیه به دستور loop رسیده و دو باره عملیات روشن خاموش اجرا میشود.
سایت مرجع یعنی الکترولب
واقعا از تلاش مدیر و دست اندر کاران الکترولب تشکر می کنم
ممنون از لطفتون
دوست عزیز چرا کانفیگ نداشت برای تنظیم میکرو