0

آموزش مقدماتی AVR – بخش ششم | نحوه پروگرام ATmega16

دسته بندی ها : avr, آموزش‌های مقدماتی, آموزش‌های متفرقه ۴ دی ۱۳۹۷ محمد نصر 2027 بازدید
پروگرام کردن اولین پروژه

سلامی دیگر به علاقه‌مندان الکترونیک. امیدوارم هرجا که هستید شاد و پیروز باشید. در این قسمت قراره با نحوه پروگرام atmega16 آشنا بشیم؛ اولین برنامه‌ی کاربردی که یک رقص نور ساده هست رو بنویسیم، شبیه‌سازی کنیم و در نهایت بر روی ATmega16 پروگرام کنیم. همراه ما باشید.

نحوه پروگرام ATmega16

اولین قدم برای فراگیری نحوه پروگرام atmega16 ، ایجاد یه پروژه جدیده. برای این کار، پس از باز شدن CodeVision از منوی File روی گزینه new و سپس Project کلیک کنید.

ایجاد پروژه در CodeVision

از شما سؤالی پرسیده می‌شود مبنی بر اینکه آیا تمایل به استفاده از CodeWizard دارید یا خیر؟ گزینه Yes را انتخاب کنید. به عنوان یک توضیح مختصر محیط wizard برای مقداردهی اولیه به امکانات میکروکنترلر مثل تایمرها، رابط‌های سریال، پورت‌ها و موارد مختلف است و اگر گزینه No انتخاب شود، مراحلی که در زیر توضیح می‌دهم ظاهر نخواهد شد و مستقیماً به صفحه کدنویسی می‌روید.

انتخاب دسته mega برای برنامه‌نویسی

پس از انتخاب Yes، صفحه بالا ظاهر می‌شود. دو گزینه انتخاب وجود دارد: سری mega و tiny یا سری xmega. در مورد انواع دسته‌بندی میکروکنترلرهای AVR در قسمت اول صحبت کردیم. بنابراین چون میکرو ما ATmega16 است گزینه‌ی اول را انتخاب کرده و OK را بزنید. صفحه زیر باز می‌شود.

مقداردهی اولیه ATmega16 در CodeWizard

صفحه بالا در واقع صفحه‌‎ی اصلی Wizard است. در پنجرۀ سمت چپ تمام امکانات میکروکنترلر به اضافه‌ی مواردی مثل اتصال LCDهای کاراکتری یا گرافیکی وجود دارد. در آینده تمام رجیسترهای مربوط به این موارد را به شما آموزش خواهیم داد و قادر خواهید بود بدون استفاده از Wizard به هر نحوی که خواستید از این امکانات استفاده کنید. اما برای ایجاد یک پروژۀ ساده از منو سمت راست مدل میکرو را روی ATmega16 و فرکانس آن را روی 1MHz تنظیم کنید. در نهایت روی علامتی که شبیه چرخ دنده است بزنید. یک نام و یک مسیر برای پروژه باید وارد کنید. توجه شود که پنجره باز شده 3 بار تکرار می‌شود.

نوشتن برنامه رقص نور

دومین گام در جهت یادگیری نحوه پروگرام atmega16 ، نوشتن یه برنامۀ کاربردی و تست کردن اونه. برای این کار، پس از باز شدن محیط کدنویسی، کد زیر را وارد کنید.

در این برنامه ابتدا هدرهای mega16.h و delay.h را الحاق کردیم. اولی برای معرفی میکرو و دومی برای وارد کردن توابع تاخیر. در تابع main تمام پایه‌های پورت A به صورت خروجی تعریف شد و سپس مقدار آن را با ریختن 0x00 درون PORTA کاملا خاموش کردیم. در این لحظه تمام LEDها خاموش هستند. اما با رفتن CPU درون حلقه while (که بی‌انتها است) حلقه for اجرا شده که مقدار i مرتباً بین 0 تا 7 تغییر می‌کند. اما در درون for با استفاده از دستور شیفت منطقی به سمت چپ (>>)، عدد ثابت 0x01 به تعداد i بار به چپ شیفت داده می‌شود. با تریس کردن (trace) برنامه پس از هر بار تکرار حلقه for به ترتیب اعداد 0x04 , 0x02 , 0x01 و … روی پورت با تاخیر 300 میلی‌ثانیه ظاهر می‌شوند.

برای خروجی گرفتن از CodeVision، یا کلید ترکیبی Ctrl+F9 را بزنید یا روی گزینۀ زیر کلیک کنید.

build کردن پروژه در codevision

صفحه‌ای باز می‌شود که شامل تمام گزارشات برنامه است. اما مهم‌ترین آنها شامل سه مورد می‌شود؛ تعداد خطاها (Errors)، تعداد هشدارها (Warnings) و مقدار فضای اشغال شده حافظه flash در صورت پروگرام کردن میکروکنترلر است.

گزارش نهایی build کردن پروژه

همانطور که می‌بینید، برنامۀ ما هیچگونه خطا و اخطاری ندارد و فضای مورد نیاز برنامه 226 بایت است. در این وضعیت، در مسیر پروژه در فولدر Debug سپس Exe فایلی با پسوند hex. تولید می‌شود. این همان فایلی است که باید روی میکروکنترلر پروگرام گردد.

شبیه سازی در Proteus

سومین بخشی که در این آموزش (که در مورد نحوه پروگرام atmega16 هستش) به اون می‌پردازیم، بحث شبیه‌سازی در محیط نرم‌افزار proteus هست. ابتدا محیط isis پروتئوس را باز کنید و از قسمت کتابخانه که با علامت P مشخص شده است، mega16 ، Led-Green و res (مقاومت) را به لیست قطعات وارد کنید. سپس مدار زیر را ببندید.

مدار رقص نور در پروتئوس

برای شبیه‌سازی برنامه نوشته شده، روی میکروکنترلر دابل کلیک کنید تا صفحه زیر باز شود.

وارد کردن فایل hex در پروتئوس

ابتدا از گزینه Program File فایل hex که در مرحله قبل تولید شد را وارد کرده و در قسمت CKSEL Fuse که در مورد آنها و عملکردشان در جلسه چهارم آموزش صبحت کردیم، آن را روی حالت اسیلاتور RC داخلی با فرکانس 1 مگاهرتز قرار دهید. کارمان تمام است. ok کرده و از قسمت پایین نرم افزار دکمه پلی (یک مثلث کوچک) را بزنید. مشاهده میکنید که تک تک LED ها مطابق برنامه خاموش و روشن می‌شوند.

پروگرام کردن میکروکنترلر با Progisp

و برای آخرین گام جهت یادگیری اولیه‌ی نحوه پروگرام atmega16 به سراغ پروگرام کردن به وسیله‌ی Progisp خواهیم رفت. در واقعیت برای برنامه‌ریزی میکرو به یک پروگرامر نیاز داریم. پروگرامر ما از نوع USB-ISP است و باید از نرم‌افزار progisp استفاده کنیم. این نرم‌افزار نسخه‌های مختلف دارد که از نظر گرافیکی دارای تفاوت هستند اما اکثر گزینه‌های آن‌ها مشترک است. ما از نسخه 1.6.7 استفاده می‌کنیم که محیط ساده‌تر و یکپارچه‌تری دارد. ابتدا پروگرامر را به سیستم متصل و سپس نرم افزار را باز کنید.

پروگرام کردن با progisp

چندین مورد باید رعایت شود:

  1. در پنل سمت چپ فیوزبیت‌ها را مشاهده می‌کنید. زیر این پنل سه گزینه Default , Read و Write وجود دارد. با زدن Read وضعیت فعلی فیوزبیت‌های میکروکنترلر متصل به پروگرامر، خوانده شده و نشان داده می‌شود. با زدن Default حالت پیشفرض و با زدن Write موارد حال حاضر روی میکروکنترلر پروگرام می‌شود.
  2. چون فرکانس میکرو داخل برنامه روی 1 مگاهرتز تنظیم است، ما هم وضعیت 4 بیت CKSEL را روی اسلاتور RC داخلی تنظیم کردیم.
  3. از گزینه Load Flash فایل hex را باید وارد کرد.
  4. سه گزینه Chip Erase و Program Flash و Verify Flash را تیک بزنید.

پس از انجام موارد بالا با زدن Auto، مراحل مورد 4 به ترتیب اجرا می‌شوند: ابتدا حافظه میکرو پاک شده. سپس برنامه روی حافظه ریخته می‌شود و در نهایت مقایسه‌ای بین برنامه داخل میکرو با فایل hex انجام می‌گردد. مورد آخر برای اطمینان از سالم بودن عمل پروگرام است. اگر همه چیز اوکی باشد، یک پیغام موفقیت آمیز (…Successful) در پنل اعلانات داده خواهد شد.

این بخش از آموزش هم (که بیشتر سعی کردیم مقدماتی برای آموزش نحوه پروگرام atmega16 بیان کنیم)، به اتمام رسید و امیدوارم بدون مشکل مراحل را پیش برده باشید. اگر ایرادی یا اروری وجود داشت، در بخش کامنت‌ها مطرح کنید؛ تیم رزدینو در کمترین زمان پاسخگوی شما عزیزان خواهد بود.

مطلب بعدی مبحث حافظه EEPROM می‌باشد همچنین برای آموزش‌های بیشتر با رزدینو همراه باشید.

محمد نصر
محمد نصر

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

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

چنانچه دیدگاهی توهین آمیز باشد و متوجه اشخاص مدیر، نویسندگان و سایر کاربران باشد تایید نخواهد شد.

چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.

چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.

چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.

چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

نظرات کاربران

پاسخی بگذارید

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

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

لینک کوتاه :