Home / آموزش بسکام / آموزش بسکام کار با پورت ها میکروکنترلر AVR (یک)
میکروکنترلر AVR
میکروکنترلر AVR

آموزش بسکام کار با پورت ها میکروکنترلر AVR (یک)

اگر وبلاگ الکترولب را دنبال کرده باشید ما سری آموزش هایی در مورد آموزش میکروکنترلر های AVR  به زبان C و در کدویژن داشتیم در ادامه و به خاطر پر طرفدار بودن زبان بیسیک و کاپایلر بسکام این زبان را هم در چند پست متوالی آموزش خواهیم داد و در پایان این آموزش به صورت کتاب جامع آموزش بسکام در اختیار شما قرار داده خواهد شد در این سری از آموزش ها همراه ما باشید.

آموزش بسکام

میکرو کنترلر های AVR ایسی های برنامه پذیری هستند که به زبانهای مختلف برنامه نویسی برنامه مربوط به این ایسی ها نوشته میشود از جمله این زبان های برنامه نویسی ها زبان بیسیک میباشد که میتوان با استفاده از این زبان برای کامپیوتر با استفاده از ویژوال بیسیک نوشت ولی برای میکروکنترلر های AVR   از نرم افزار بسکام استفاده میشود مثل تمام برنامه ها این برنامه هم ورژن های مختلف خود را دارد اما بهترین ورژن موجود برای این برنامه ورژن  1.11.9.8 چرا که اکثر برنامه های نوشته شده برای میکرو کنترلر ها در این ورژن بدون هیچ ایرادی اجرا میشود .

اصول کلی برنامه نویسی برای میکرو کنترلر :

برای برنامه ریزی میکروکنترلر مراحل زیر را اجرا میکنیم

  1. ابتدا کار یا عملکردی را که از ایسی انتطار دارید را در ذهنتان تجسم کنید. مثلا میخواهید 2 تا ال ای دی را در فواصل زمانی مشخص روشن یا خاموش کنید.
  2. نرم افزار بسکام را باز کنید و شروع به نوشتن کد برای ایسی مشخص کنید.
  3. بعد از تمام شدن نوشتن کدها برنامه را کامپایل compile  کرده و در صورت وجود ایراد یا Error ایراد ها رفع کنید .
  4. هنگام کامپایل کردن مکانی را که کد یا برنامه ایسی خود را ذخیره نموده اید باز کنید. فایلی با پسوندhex  را پیدا کرده و توسط نرم افزار دیگری و توسط سخت افزار خود (programmer) فایل را به داخل میکرو کنترلر بریزید و انچیزی را که که در مرحله اول در ذهن داشتید توسط ایسی اجرا میشود .

 

این اصول کلی برای برنامه ریزی میکرو کنترلر ها میباشد

AVR ها ایسی ها بسیار متنوعی هستند و مخصوص یک نوع ایسی نمی شوند.رایج ترین این ایسیها ایسی atmega32 میباشد که دارای 32 پایه ورودی و خروجی که این پایه ها علاوه بر ورودی یا خروجی بودن کارهایی نظیر اندازه گیری سطح ولتاژADC و … را دارست که شما توسط کدهای نوشته شده کارکرد هر پایه را مشخص میکنید.

 

شروع به کار:

در ابتدا ما کار کد نویسی را با مثال ساده چشمک زدن LED شروع میکنیم.در ابتدا پس از باز کردن نرم افزار بسکام و زدن دو کلید ctrl و  N به طور همزمان صفحه کدنویسی جدید باز میشود. در هر برنامه نویسی باید شما ابتدا نوع ایسی یا میکرو کنترلری را که قصد نوشتن کد برای آن را دارید توسط دستور زیر تعیین کنید مثلا برای ایسی ATMEGA32 دستور به صورت زیر هست:

bas

 

برای  ایسی ATMEGA8 نیز به صورت زیر هست:

bas1
هر میکرو کنترلی را میتوان با فرکانس کاری مختلفی راه اندازی کرد . منظور از فرکانس کاری به زبان بسیار ساده همان تعداد کار هایی که در یک ثانیه انجام میشود مثلا به طور پیشفرض میکروکنترلر ها در فرکانس 1MHz هست یعنی در هر ثانیه یک میلیون عمل انجام میدهد.

اما توسط دستور زیر ما به صورت نرم افزاری تعیین میکنیم که میکرو کنترلر ما در فرکانس 1MHz هست .(این نکته را در نطر بگیرید که هم باید توسط کد فرکانس تعیین شود و هم به صورت سخت افزاری توسط پروگرامر(programmer) )

bas2

 

حال بعد از تنطیمات اولیه میریم سراغ کار اصلی یعنی چشمک زدن یک یا چند ال ای دی برای این کار شما باید پایه ای ازمیکرو کنترلر رابرای وصل کردن به ال ای دی انتخاب کنید با توجه به برگه های اطلاعاتی(دیتاشیت)ایسی atmega32 یا مگا32 نام پایه های به صورت زیر هست:

bas 32

من به طور معمول پایه  PA0 رو به عنوان پایه ای که قراره LED به ان وصل شود را انتخابمیکنم .چون قرار نیست  LED اطلاعاتی یا دیتایی به ما بدهد . در واقع ما به ال ای دی دستور میدهیم پس این پایه باید خروجی باشد . برای خروجی یا ورودی کردن پایه ها از دستور زیر استفاده میکنیم:

bas3

 

DDRهمان دستور تعیین جهت پایه هست که در دستور سطر بالا  A.0 با دادن مقدار 1 خروجی

شد اگر 0 داده میشد این پایه به عنوان ورودی پیکره بندی میشد مثال زیر :

bas4
حال اگر به جای A.0فقط A قرار میدادیم در آن صورت پایه های PA0 تا PA7 کلا ورودی یا خروجی میشود.

برای پورت های دیگر نیز این دستور صادق هست وفقط باید به جای A نام پورت مورد نظر نوشته شود .این نکته را در ذهن داشته باشید که ایسی کد ها رو از سطر بالا به پایین سطر به سطر اجرا میکند اما بعد از تعیین جهت پایه حال جطور به این پایه مقدار 0 یا 1 بدهیم(0 همان صفر دیجیتال که محدوده ولتاژی بین 0 تا 1 وات دارد و1 همان 1دیجیتال که محدوده ولتاژی 4تا 5 ولت دارد به عبارتی با 1 کردن پایه در صورت خروجی کردن پایه ولتاژ5 ولت روی پایه میافتد) .
برای این کار از دستور زیر استفاده میکنیم:

bas5
که در دستور بالا مقدار 1 دیجیتال یا مقدار آنالوگ 5 ولت روی پایه PA0 میافتد پس اگر مدار رو به صورت زیر ببندید ال ای دی با دستور بالا روشن میشود:

bas6

حال اگه مقدار 1 رو به 0 تبدیل کنیم ولتاژ 0 ولت روی پایه میافتد و ال ای دی خاموش میشود مثل دستور DDR به جای A.0 اگر A  قرار دهیم کل پایه های PA0  تا  PA7 ایسی روشن یا خاموش میشود.

کد ما برای چشمک زن تقریبا تمام شده که کد کامل به صورت زیر هست:

bas7

 

 

 

 

 

 

 

حال توضیح برنامه به صورت زیر هست:

سطر اول مربوط به تعیین نوع میکرو هست و سطر دوم فرکانس کاری میکرو. توسط کد سطر 3 ما جهت پایه PA0 را تعیین کردیم که خروجی باشد . توسط دستور DO و LOOP که در سطر 4و9 هست ما یک حلقه بینهایت برای اجرای دستورات مابین این دو دستور ایجاد کردیم یعنی دستورات سطر های 5 تا 8 به صورت ردیفی از بالا به پایین اجرا شده و وقتی به دستور LOOP رسید به سطر 5 برگشته و دوباره تا سطر 9 ادامه میباد و این روال تا زمانی که تغذیه ایسی برقرار باشد ادامه میابد. اما دستور waitms 300 باعث توقف برنامه به مدت 300 میلی ثانیه یا همان 0.3 ثانیه میشود به عبارتی بعد از روشن کردن ال ای دی به مدت 300 میلی ثانیه روشن باقی میماند و سپس خاموش شده و به مدت 300 میلی ثانیه خاموش باقی میماند بعد از گذشت 300 میلی ثانیه به دستور loop رسیده و دو باره عملیات روشن خاموش اجرا میشود.

قسمت بعدی آموزش بسکام اتصال کلید به AVR

About یونس عباس زاده

2 comments

  1. حسن دیوان زاده

    سایت مرجع یعنی الکترولب
    واقعا از تلاش مدیر و دست اندر کاران الکترولب تشکر می کنم

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.