برنامه‌نویسی میکروکنترلر AVR در محیط ویژوال استودیو (جلسه دوم)

0
1060
برنامه‌نویسی میکروکنترلر AVR در محیط ویژوال استودیو
برنامه‌نویسی میکروکنترلر AVR در محیط ویژوال استودیو

در جلسه اول برنامه‌نویسی میکروکنترلر AVR در محیط ویژوال‌استودیو شما را با مجموعه کامپایلرهای گنو (GCC) آشنا کردیم. در این جلسه قصد داریم شما را با ویژوال‌استودیو بیشتر آشنا کنیم. با ما همراه باشید.

شرکت اتمل با تولید میکروکنترلرهای ۳۲بیتی، ARM نسخه‌ی جدیدی از نرم‌افزار avr studio را تحت عنوان Atmel Studio طراحی کرد. افزوده‌شدن امکانات جدید و همچنین پشتیبانی از میکروکنترلرهای ARM ازجمله تفاوت‌هایی است که در این نسخه اعمال‌شد.

تا این قسمت از آموزش گفتیم که از کامپایلر رایگان و سورس‌باز avr-gcc که شرکت اتمل نیز در پکیج برنامه‌نویسی خود (اتمل استودیو) بکار برده‌است، استفاده می‌کنیم.

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

گفتیم که برای برنامه‌نویسی میکروکنترلرهای avr، علاوه‌بر کامپایلر، وجود ابزارهای دیگری نیز ضروریست. زیرا avr-gcc به خودی خود تنها یک مترجم تحت خط‌فرمان است. در شرایط کاملا عادی برای کامپایل برنامه‌ی نوشته‌شده توسط avr-gcc باید برنامه را در ویرایشگر کدی مانند Notepad ویندوز به یکی‌از زبان‌های C یا ++C نوشت. سپس بااستفاده‌از محیط cmd و دستورالعمل‌های کامپایل که توسط avr-gcc ارائه شده، برنامه را به زبان ماشین ترجمه٬کرد.

انجام این کارها (پروسه کامپایل) هنگامی‌که برنامه‌ی ما تنها از یک فایل اصلی، هدرفایل و سورس فایل‌های خود کامپایلر تشکیل شده باشد، چندان دشوار نخواهدبود، اما فرض‌کنید هدف ما کامپایل برنامه‌ای است که علاوه‌بر موارد فوق، شامل کتاب‌خانه‌هایی است که توسط شخص سومی نوشته‌شده! در این مواقع کامپایل برنامه به‌روشی که در بالا گفته‌شد بسیار زمان‌بر و دشوار است، زیرا می‌بایست ابتدا هرکدام از فایل‌ها بصورت مجزا کامپایل و درنهایت به یکدیگر لینک شوند. همچنین لازم‌به ذکر است برای انجام هربار عمل کامپایل، می‌بایست دستورات کامپایل در محیط cmd مجددا نوشته‌شوند که باعث اتلاف‌زمان زیادی است. برای حل این مشکلات از Makefile استفاده می‌کنیم. به بیان‌ساده makefile فایلی است که دستورات مربوط‌به کامپایل، تنظیمات کامپایلر، دیباگر، پروگرامر و بسیاری‌از موارد دیگر در آن اعمال می‌شود. هر پروژه دارای یک makefile است که می‌بایست این فایل در دایرکتوری پروژه با همین نام (makefile) کپی‌شود.

قسمتی از یک makefile:

 MCU name#

MCU = atmega32

. Processor frequency#

   This will define a symbol, F_CPU, in all source code files equal to the#

   processor frequency. You can then use this symbol in your source code to#

   calculate timings. Do NOT tack on a 'UL' at the end, this will be done#

 .automatically to create a 32-bit value in your source code#

     :Typical values are#

         F_CPU =  1000000

        F_CPU =  1843200 #

        F_CPU =  2000000 #

         F_CPU =  3686400 #

        F_CPU =  4000000 #

       F_CPU =  7372800 #

         F_CPU =  8000000 #

         F_CPU = 11059200 #

        F_CPU = 14745600 #

        F_CPU = 16000000 #

        F_CPU = 18432000 #

        F_CPU = 20000000 #

F_CPU = 1000000 #

( Output format(can be srec, ihex, binary#

FORMAT = ihex

( Target file name (without extension#

TARGET = main

 Object files directory#

     To put object files in current directory, use a dot (.), do NOT make#

     this an empty or blank macro#

.=OBJDIR 

(*List C source files here. (C dependencies are automatically generated#

SRC = $(TARGET).c

(List C++ source files here. (C dependencies are automatically generated#

.=CPPSRC 

List Assembler source files here#

    Make them always end in a capital .S.  Files ending in a lowercase .s#

     will not be considered source files but generated files (assembler#

OPT = s

 

استفاده‌از makefile و notepad نیز روش چندان مناسبی نیست زیرا درمواقعی‌که نیازبه طیف وسیعی از ابزارها داشته‌باشیم، به‌دلیل عدم‌وجود رابط کاربری گرافیکی (GUI)، کار برنامه‌نویس دوباره مشکل می‌شود. بهترین و ساده‌ترین روش حل مشکلاتی که در این چندسطر بیان‌شد، استفاده‌از محیط توسعه یکپارچه (IDE) می‌باشد. IDE درواقع پکیجی است که تمام ابزارهای موردنیاز برای برنامه‌نویسی را در یک محیط با رابط کاربری گرافیکی عالی مجتمع می‌کند. به‌عنوان‌مثال همین اتمل استودیو یک IDE است.

IDEهای رایگان زیادی برای اینکار وجود دارند، مانند:

  1. CodeBlocks
  2. EmBitz
  3. eclipse
  4. Visual Studio
  5. و…

آموزش‌های متعددی برای استفاده‌از محیط‌های Codeblocks ،embitz و eclipse وجود دارد. اما آموزش فارسی در رابطه با استفاده‌از ویژوال استودیو برای برنامه‌نویسی میکروکنترلرها (AVR) وجود ندارد. به‌همین‌جهت ادامه‌ی آموزش را به این محیط اختصاص می‌دهیم.

Visual Studio IDE:

ویژوال استودیو نرم‌افزاری توسعه‌یافته برای تولید برنامه‌های رایانه‌ای است که توسط شرکت مایکروسافت تهیه‌شده‌است. از آن برای تولید وبگاه، برنامه‌های کاربردی وب و یا سرویس‌های وب استفاده می‌شود. از Visual studio می‌توان برای نوشتن برنامه‌های کنسولی، ویندوزی، سرویس‌های ویندوز، برنامه‌های کاربردی موبایل , سیستم‌های نهفته و … استفاده‌کرد. (نقل‌قول از گوگل)

Visual Studio IDE
Visual Studio IDE

 

درکنار این نرم‌افزار، ابزار visualGDB نیز باید دانلود و نصب شود. VisualGDB یک افزونه بسیار قدرتمند برای ویژوال استودیو می‌باشد که توسط آن قادر خواهیم‌بود تا سیستم‌های امبد‌شده را دیباگ یا رفع‌اشکال کنیم. این نرم‌افزار از محیط کاربری بسیار جذابی بهره می‌برد که دارای ویژگی‌های فراوانی برای دیباگ یا رفع اشکال کدهای ما می‌باشد. VisualGDB دارای یک Wizard نیز هست که به ما در دیباگ‌کردن برنامه کمک می‌کند و نقش یک راهنمای قوی را برعهده دارد. علاوه‌بر این ویژگی‌های بسیار فراوان دیگری در این برنامه وجود دارد که به دسته‌های Common features ،Advanced features ،Usability features Linux features ،Android features تقسیم می‌شوند. تصویر زیر ایجاد پروژه با visualGDB را نشان می‌دهد:

ایجاد پروژه با visualGDB
ایجاد پروژه با visualGDB

 

در محیط ویژوال استودیو پروژه‌ی جدیدی را ایجاد و سپس VisualGDB Embedded Project Wizard را بازکنید:

انتخاب نوع پروژه
انتخاب نوع پروژه

 

در صفحه‌ی بازشده تنظیمات پیش‌فرض را تغییر نمی‌دهیم. در این بخش توجه به دونکته ضروری‌ست:

  1. در بحش Language standard می‌توان زبان برنامه‌نویسی موردنظر را تعیین‌کرد.
  2. چنانچه علاوه‌بر فایلهای bin. و elf. به فایل هگز برای برنامه‌ریزی میکروکنترلر نیاز داشتید، تیک hex را فعال‌کنید.
اعمال تنظیمات
اعمال تنظیمات

 

صفحه‌ی بعد برای تعیین ابزار برنامه‌نویسی موردنظرما (avr toolchain) می‌باشد. اگر ابزار موردنظر نصب نبود، visualGDB می‌تواند بااستفاده‌از اینترنت به‌صورت اتوماتیک آن را دانلود و نصب‌کند.

تعیین ابزار برنامه‌نویسی
تعیین ابزار برنامه‌نویسی

 

همچنین می‌توانیم تولچین موردنظر را به‌صورت دستی از سایت www.gnutoolchain.com دانلود کنیم. درنهایت دایرکتوری را که قصددارید تولچین در آنجا نصب‌شود، مشخص‌کنید.

محل نصب تولچین
محل نصب تولچین

 

پس‌از نصب ابزار (هر تولچین فقط یک مرتبه نیاز به نصب دارد) میکروکنترلر موردنظر را از لیست قطعات پشتیبانی‌شده توسط ابزار انتخاب‌کنید. به‌عنوان‌مثال ما می‌خواهیم نتیجه‌ی برنامه‌ی نوشته‌شده را بااستفاده‌از برد Arduino Uno مشاهده‌کنیم در اینصورت می‌بایست میکروکنترلر atmega328p انتخاب‌شود.

انتخاب میکروکنترلر atmega328p
انتخاب میکروکنترلر atmega328p

 

صفحه‌ی بعد (sample selection) باعث ایجاد کد ساده‌ای (چشمک‌زن) در سورس فایل ما می‌شود. در برد آردوینو، led کوچکی به پایه شماره ۱۳ (PD7) میکروکنترلر وصل‌شده‌است. بنابراین در قسمت port group، پورت D و در port number، عدد ۷ را وارد می‌کنیم.

تنظیمات port group
تنظیمات port group

 

با بازشدن صفحه‌ی debug method، مبدل عیب‌یابتان را به یکی‌از پورت‌های usb متصل و روی گزینه‌ی detect کلیک کنید تا بصورت اتوماتیک شناسایی شود. افزونه‌ی visualGDB بااستفاده‌از ابزار AVaRICE که می‌تواند با دیوایس‌های l JTAG ICE Mk JTAG ICE Mk II و AVR Dragon کار کند. دیباگ میکروکنترلرهای AVR را پشتیبانی می‌کند. visualGDB می‌تواند JTAG ICE Mk II و AVR Dragon به‌طور اتوماتیک شناسایی و درایورهای آن‌ها را نصب‌کند.

visualGDB
visualGDB

 

در پایان صفحه‌ی زیر ایجاد می‌شود:

تغییرات کانفیگ پروژه
تغییرات کانفیگ پروژه

 

تغییرات کانفیگ پروژه، اضافه کردن سورس فایل و هدر فایل به پروژه و … تا حدودی مشابه اتمل استودیو می‌باشد.

در جلسه سوم “برنامه نویسی میکروکنترلر AVR در محیط ویژوال استودیو” ایجاد پروژه بااستفاده‌از میک فایل آموزش داده می‌شود. در این مجموعه مقالات ما را همراهی نمایید.

 

 

 

منبع:‌سیسوگ

مطلب قبلیهمه‌چیز درباره باتری‌ها قسمت چهارم: مشخصات و اصطلاحات
مطلب بعدیهوشمند سازی کنتورهای قدیمی

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید