آموزش Atmel Studio، مهاجرت از کدویژن به اتمل استودیو

توسط | 14 آذر, 1398 | AVR, میکروکنترلر, وبلاگ | 60 دیدگاه ها

مهاجرت-کدویژن-اتمل-استودیو-atmel-studio

آموزش AVR یوبرد

شاهکار 8بیتی اتمل

آموزش های رایگان AVR

فیلم های آموزش AVR

آموزش خصوصی AVR

اخبار جدید یوبرد در اینستاگرام

اتمل استودیو (Atmel Studio) یک IDE است که توسط شرکت Atmel ساخته شده و به صورت رایگان در اختیار توسعه دهندگان پروژه هایی بر مبنای میکروکنترلرهای AVR و همچنین برخی میکروکنترلرها با هستۀ ARM قرار گرفته است. در این نرم افزار هم می توانیم به زبان C برنامه بنویسیم و هم به زبان C++. محیط کدنویسی نرم افزار اتمل استودیو بر پایۀ نرم افزار Visual Studio استو در آن از کامپایلر قدرتمند GCC استفاده شده است.

دیگر نرم افزار میکروکنترلر AVR که بسیار پر استفاده است، نرم افزار CodevisionAVR است. این نرم افزار هم یک IDE است. یک محیط کدنویسی ساده به همراه کامپایلر دارد و همچنین قابلیت پروگرام کردن میکروکنترلر AVR نیز در آن وجود دارد. زبان برنامه نویسی در این نرم افزار C است. در این نرم افزار کتابخانه های راه اندازی برخی المان های پر استفاده وجود دارد. همین امر سبب شده که این نرم افزار استفادۀ فراوانی در انجام پروژه ها داشته باشد. امکان دیگری که در این نرم افزار وجود دارد کدویزارد (CodeWizardAVR) است. با استفاده از کدویزارد کاربر می تواند بدون درگیر شدن با رجیسترها و تنها با انتخاب مقادیر، گزینه ها و … و تیک زدن آنها در هنگام ساخت پروژه در کدویژن، رجیسترها را مقداردهی و برخی توابع آماده را به برنامه اضافه کند. کدویزارد یکی از دلایل پر طرفدار بودن این نرم افزار است.

در این نوشته نکات لازم برای مهاجرت از کدویژن به اتمل استودیو را بررسی خواهیم کرد. به همین منظور یک نمونه کد نوشته شده در کدویژن را به آن انتقال می دهیم، تغییرات لازم را انجام می دهیم. در پایان نیز روش اضافه کردن پروگرامر USBasp را به این نرم افزار خواهیم گفت.

ویدئوی 1 – کار با اتمل استودیو

ویژگی های اتمل استودیو

این نرم افزار ویژگی های فراوانی دارد که در این نوشته امکان بیان همۀ آنها نیست. تنها به مهم ترین ویژگی های کاربردی آن می پردازیم. یک ویژگی مهم اتمل استودیو، رایگان بودن آن است و همین موضوع باعث به کار گیری گستردۀ آن می شود. وجود کامپایلر قدرتمند GCC این اطمینان را حاصل می کند که برنامۀ نوشته شده بدون خطا و به صورت بهینه به کد Hex تبدیل می شود. ویژگی هایی مانند Goto Implementation و ویژگی های بصری، عملکرد کلیدهای میانبر و … باعث سرعت در نوشتن برنامه و سهولت نوشتن برنامه می شود. یک ویژگی مهم دیگر امکان اضافه کردن ابزارهاست. در این نوشته خواهیم دید که چطور پروگرامر USBasp را به عنوان یک ابزار خارجی به برنامه اضافه می کنیم.

اضافه کردن Extensionها به این نرم افزار نیز یکی از ویژگی های مهم آن است. برای مثال می توان یک ترمینال پورت سریال به آن اضافه کرد.  برخی ویژگی هایی که در سایت میکروچیپ برای اتمل استودیو گفته شده اند به شرح زیر است:

  1. پشتیبانی از بیش از 500 میکروکنترلر AVR و SAM؛
  2. کتابخانه های گسترده، شامل درایورها، Communication Stackها، بیش از 1600 پروژۀ نمونه با کد منبع، خدمات گرافیکی و عملکرد لمسی از طریق ASF؛
  3. برنامه های افزودنی IDE از طریق Atmel Gallery، فروشگاه برنامه های آنلاین برای ابزارهای توسعه و نرم افزارهای Embedded از Microchip و اشخاص ثالث؛
  4. نوشتن به زبان C، C++ و اسمبلی و دیباگ کردن برنامه با کامپایلر یکپارچه؛
  5. قابلیت دیباگ پیشرفته؛
  6. ویرایشگر یکپارچه به کمک ویژگی های بصری؛
  7. قابلیت برنامه ریزی ISP و فراهم کردن رابط دیباگ.

محیط-نرم-افزار-اتمل-استودیو

تصویر 1 – محیط نرم افزار اتمل استودیو

چرا اتمل استودیو؟ لزوم و اهمیت استفاده از آن

امروزه کتابخانه های راه اندازی المان های مختلف برای اتمل استودیو موجود است. بنابراین برای برنامه نویسی میکروکنترلرهای AVR، دلیلی بر عدم استفاده از آن باقی نمی ماند. زیرا علاوه بر رایگان بودن، کار کردن با آن نسبت به کدویژن راحت تر است و می توان اطمینان داشت که برنامۀ نوشته شده بدون خطا به کد هگز تبدیل می شود. یکی از دلایل برتری این نرم افزار پشتیبانی از زبان C++ برای AVR است. ویژگی های دیگر مانند Goto Implementation و ویژگی های بصری این نرم افزار باعث جذابیت و سرعت در انجام پروژه می شوند. ویژگی دیباگ خود به تنهایی می تواند دلیل قانع کننده ای برای استفاده از این نرم افزار باشد.

با توجه به این مطالب و ویژگی های گفته شده به این نتیجه می رسیم که استفاده از نرم افزار اتمل استودیو نه تنها راحت تر است، بلکه ما را در نوشتن برنامه یاری نیز می کند.

دیباگر-اتمل-استودیو

تصویر 2 – قابلیت پروگرامر و دیباگر Atmel Studio

توصیۀ ما اتمل استودیو است

در شروع استفاده از اتمل استودیو درنگ نکنید. اگرچه ممکن است کدویژن برای افرادی که کار با میکروکنترلرها و میکروکنترلرهای AVR را به تازگی شروع کرده اند، بهتر باشد، اما استفادۀ مداوم از کدویژن را توصیه نمی کنیم. کدویژن برای شروع کار با میکروکنترلرهای AVR به دلیل این که کاربر تا مدت زمانی درگیر ساخت کتابخانه در C یا C++ نمی شود، مناسب به نظر می آید. اما برای ورود به دنیای میکروکنترلرها لازم است با نرم افزارهای مختلف برای میکروکنترلرها برنامه نوشت. این کار کمک می کند که کار با دیگر میکروکنترلرها در آینده ساده تر شود.

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

کار-با-اتمل-استودیو

تصویر 3 – کار با Atmel Studio

در سطح اینترنت فیلم هایی تحت عنوان فیلم آموزشی اتمل استودیو یا آموزش برنامه نویسی اتمل استودیو یافت می شوند. گرچه این فیلم ها روند یادگیری را تسریع می کنند، برای شروع به کار با اتمل استودیو و ادامۀ روند انجام اکثر پروژه ها با این نرم افزار، خواندن این نوشته و به کار گیری توصیه های آن کفایت می کند. در ادامه به نحوۀ انتقال برنامه از کدویژن به Atmel Studio می پردازیم. در صورتی که یک برنامه در کدویژن نوشته ایم، می توانیم آن را در این نرم افزار قرار دهیم. ابتدا همۀ کدهای نوشته شده را از کدویژن به اتمل استودیو منتقل می کنیم. در کدهای منتقل شده مواردی هستند که باید تغییر کنند. در ادامه به این موارد اشاره خواهیم کرد.

ساخت پروژه در اتمل استودیو

برای کار در اتمل استودیو ابتدا در این نرم افزار یک پروژه می سازیم. همانند تصویر زیر در منوی File در بخش New روی Project کلیک و یا از کلیدهای میانبر Ctrl+Shift+N استفاده می کنیم.

ساخت-پروژه-در-اتمل-استودیو

تصویر 4 – ساخت پروژه در Atmel Studio

در این صورت پنجرۀ New Project باز می شود. در این پنجره می توان نوع پروژه را با توجه به زبان برنامه نویسی مورد نظر انتخاب کنیم. در سمت چپ این پنجره و در بخش Installed سه گزینه وجود دارد. گزینه های C/C++ و Assembler و AtmelStudio Solution. در بخش Assembler می توان به زبان اسملبی برای AVR کد نوشت. در بخش AtmelStudio Solution نیز یک پروژۀ خالی می توان ساخت. در بخش C/C++ نیز همان طور که در تصویر زیر مشخص است می توان پروژه هایی برای بردهای توسعه، بردهای آردوینو، خانواده های 8 بیتی و 32 بیتی AVR داشت. (فیلم آموزش آردوینو مقدماتی)

ما می خواهیم پروژه ای به زبان C داشته باشیم. بنابراین باید GCC C Executable Project را انتخاب کنیم. همچنین می توانیم GCC C++ Executable Project را انتخاب کنیم و در آن به جای نوشتن برنامه به زبان C++، برنامه به زبان C بنویسیم. بنابراین نوع پروژه را GCC C++ Executable Project انتخاب و نام و مسیر پروژه را  در تکست باکس Name و Location تعیین می کنیم. اگر چک باکس Create directory for solution را انتخاب کنیم در کنار فایل atsln که فایل Solution اتمل استودیو است، یک پوشه حاوی فایل ها و پوشه های پروژه ساخته می شود. در غیر این صورت بقیۀ فایل ها و پوشه ها در کنار این فایل قرار می گیرند. پس از تیک زدن این چک باکس، روی OK کلیک می کنیم.

تعیین-نوع-پروژه-اتمل-استودیو

تصویر 5 – ساخت پروژه در اتمل استودیو، انتخاب نوع پروژه

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

در مرحلۀ بعد پنجرۀ Device Selection باز می شود که باید میکروکنترلر مورد استفادۀ خود را انتخاب کنیم. در تکست باکس قسمت بالا و سمت راست آن می توان بخشی از نام میکروکنترلر را نوشت و یا به صورت کامل نام را وارد کرد. در این صورت باید میکروکنترلر مورد نظر را از بین میکروکنترلرهای یافت شده انتخاب کرد. در بخش Device Family می توان میکروکنترلرهای خانوادۀ ATautomotive و ATmega و ATtiny و ATxmega و SAM و … را انتخاب کرد. در زیر آن میکروکنترلرهای خانوادۀ انتخاب شده با نمایش مقدار حافظۀ Flash و حافظۀ SRAM لیست می شوند.

پس از انتخاب یک میکروکنترلر در بخش Device Info اطلاعاتی از قبیل نام و ولتاژ و فرکانس کاری میکروکنترلر، لینک دیتاشیت و صفحۀ مربوط به آن در سایت میکروچیپ و ابزارهایی که این میکروکنترلر را پشتیبانی می کنند، نمایش داده می شود. ما ATmega64A را جست و جو، آن را انتخاب و روی OK کلیک می کنیم.

انتخاب-میکروکنترلر-پروژه-اتمل-استودیو

تصویر 6 – ساخت پروژه در اتمل استودیو، انتخاب میکروکنترلر

فایل main پروژۀ ایجاد شده

بعد از ساخت پروژه اتمل استودیو یک فایل به نام main را با پسوند cpp باز می کند که در واقع فایل اصلی برنامه است. در ابتدای آن چند سطر کامنت حاوی نام فایل cpp، زمان ساخت پروژه و نویسندۀ پروژه قرار دارد. در ادامه کتابخانۀ io.h فراخوانی شده است. برای نوشتن برنامه و راه اندازی واحد های مختلف، وجود این کتابخانه الزامی است. تابع اصلی برنامه نیز در ادامه نوشته شده است. برای این که برنامه بدون خطا کامپایل شود، تنها لازم است که تابع اصلی برنامه در این فایل وجود داشته باشد. بنابراین اگر حلقۀ while بی نهایت و سطر فراخوانی کتابخانۀ io.h را پاک کنیم، باز هم برنامه بدون خطا کامپایل می شود.

اکنون ساخت پروژه در Atmel Studio به پایان رسیده است. در ادامه برای نوشتن برنامه در آن نیاز است کتابخانه هایی فراخوانی شود. این کتابخانه ها ممکن است در مسیرهای مختلفی قرار داشته باشند. برای مثال در تصویر زیر می بینید که کتابخانۀ io.h در پوشۀ avr قرار دارد. برای فراخوانی کتابخانۀ delay باید مسیر پوشۀ util را آورد. یا برای فراخوانی کتابخانۀ interrupt.h باید همانند کتابخانۀ io.h، مسیر پوشۀ avr را به برنامه داد.

فایل-main-پروژه-اتمل-استودیو

تصویر 7 – فایل اصلی برنامه در اتمل استودیو

انتقال برنامه از کدویژن به اتمل استودیو

در این مرحله کدهای نوشته شده در کدویژن را به Atmel Studio منتقل می کنیم. کدهای کدویژن را از بعد از  کتابخانه های آن کپی می کنیم. البته نحوۀ فراخوانی کتابخانۀ stdio.h در کدویژن و اتمل استودیو مشابه هم است. در اتمل استودیو ابتدا تابع main را پاک می کنیم. سپس کدهای کپی شده را در بعد از  کتابخانه های آن Paste می کنیم. در ادامه تابع main را به حالت قبل برمی گردانیم. تغییراتی را باید اعمال کنیم تا برنامه بدون خطا کامپایل شود. این تغییرات عبارتند از: فراخوانی کتابخانه ها، تغییر سینتکس نوشتاری روتین های وقفه، تغییرات توابع با توجه به تغییر کتابخانه ها، تصحیح سینتکس نوشتاری تابع main و … .

همچنین برای این که برنامه به طور صحیح عمل کند، نیاز است که تنظیماتی را اعمال کنیم. مثلاً برای تبدیل عدد float به رشته (از انواع متغیر در C) در اتمل استودیو، باید تغییراتی در تنظیمات Linker اعمال کنیم. در ادامه این تغییرات مورد بررسی قرار می گیرند.

انتقال-برنامه-کدویژن-اتمل-استودیو

تصویر 8 – انتقال برنامه از کدویژن به اتمل استودیو

تغییرات برنامه در اتمل استودیو

در این پروژه قصد داریم با استفاده از دو کلید که روی پایه های وقفۀ خارجی شماره 4 و 5 میکروکنترلر ATmega64A قرار دارد، دو عبارت را روی LCD کاراکتری نمایش دهیم. برای این منظور باید برنامه ای را که از کدویژن به اینجا منتقل کردیم، تغییر دهیم. در ادامه این تغییرات را با هم می بینیم.

  • فراخوانی کتابخانه ها در اتمل استودیو: در ابتدا باید کتابخانۀ h را فراخوانی کنیم. این کتابخانه در پوشۀ avr در محل نصب نرم افزار است. کتابخانۀ delay.h نیز در پوشۀ util قرار دارد. کتابخانۀ stdio.h را بدون تغییر می گذاریم. برای استفاده از LCD کاراکتری، با توجه به این که کتابخانۀ آن در اتمل وجود ندارد، باید یک کتابخانه را به پروژه اضافه کنیم. این کتابخانه را که فایل CharacterLCDLib.h است، در پوشۀ Libs قرار داده ایم. این پوشه در کنار فایل main.cpp است.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include "Libs/CharacterLCDLib.h"

  • سینتکس نوشتاری پروتوتایپ روتین های وقفه در اتمل استودیو: در اینجا سینتکس نوشتاری روتین های وقفه در AVR متفاوت است. باید عبارت ISR را بنویسیم و جلوی آن در پرانتز آدرس بردار وقفه را قرار دهیم. این آدرس ها در فایل h تعریف شده اند. اگر عبارت INT0_vect را بنویسیم و روی آن کلیک راست کنیم و روی گزینۀ Goto Implementation کلیک کنیم فایل iomxx.h باز می شود. تمامی بردارهای وقفه در آن فایل تعریف شده اند.
ISR (INT5_vect) { . . . }
ISR (INT4_vect) { . . . }

یافتن-بردار-وقفه-اتمل-استودیو

تصویر 9 – مراحل یافتن بردارهای وقفه

  • تغییرات توابع کتابخانه ای: در ابتدا تابع lcd_init را تغییر می دهیم. به کتابخانۀ h می رویم. می بینیم که این تابع بر خلاف نظیر خود در کدویژن، ورودی ندارد. تابع lcd_putsf نیز به lcd_puts تغییر می کند. توابع delay در اتمل استودیو نیز به صورت زیر در سطر سوم و چهارم است.
lcd_init();
lcd_puts("UBOARD");
_delay_ms(1000);
_delay_us(1000);
  • تعیین پایه های LCD: در defineهای ابتدای کتابخانۀ h باید تنظیمات پایه های LCD را انجام دهیم.

فعال سازی پرچم کلی وقفه ها، تابع main و فرکانس CPU

دستور اسمبلی برای فعال کردن پرچم کلی وقفه ها در اینجا بدون # و یا به صورت تابع نوشته می شود.

asm("sei"); or sei();

در اتمل استودیو بنا به استاندارد C99 که یک استاندارد ISO برای زبان C است، تابع main باید خروجی int داشته باشد. در نرم افزارهایی که از این استاندارد پیروی می کنند باید حتماً برای تابع main یک خروجی int در نظر گرفت. اگر در تابع main مقداری را return نکنیم، وقتی که برنامه از  این تابع به صورت معمولی خارج می شود، تابع یک خروجی صفر برمی گرداند. اگر برنامه به طریق دیگری مانند وقفه از این تابع خارج شود، تابع خروجی غیر صفر را برمی گرداند. که ما می توانیم متوجه شویم که آیا برنامه به صورت عادی از تابع main خارج شده و یا با وقفه خارج شده است.

int main (void) { . . . return 0;}

در اتمل استودیو باید فرکانس کاری میکروکنترلر را در سطر اول برنامه تعریف کنیم. در اینجا UL در آخر فرکانس برای کامپایلر یک راهنماست که این فرکانس یک عدد بدون علامت است.

#define F_CPU 8000000UL


با اعمال تغییرات فوق برنامه بدون ارور کامپایل می شود. برای کامپایل برنامه باید در منوی Build روی Build Solution یا روی آیکون مشخص شده در تصویر زیر کلیک کرد و یا کلید F7 کیبورد را فشرد. در پنجرۀ Error List خطاها، اخطارها و پیام ها نمایش داده می شوند.

کامپایل-برنامه-اتمل-استودیو

تصویر 10 – کامپایل کردن برنامه در اتمل استودیو

تبدیل اعداد float به رشته در تابع sprintf

برای نمایش اعداد float روی LCD، باید آن را به رشته تبدیل کنیم. معمولاً برای تبدیل یک متغیر به رشته از تابع sprint استفاده می کنیم. برای قرار گرفتن یک عدد float در ورودی این تابع باید تنظیماتی را انجام داد. ابتدا از منوی Project گزینۀ آخر یعنی Properties پروژه را انتخاب می کنیم. یک فایل باز می شود. در این فایل روی گزینۀ Toolchain کلیک می کنیم. از منوی General از زیر مجموعۀ AVR/GNU Linker تیک آخر یعنی Use vprintf library(-Wl,-U,-vfprintf) را می زنیم. سپس از همین منوی AVR/GNU Linker گزینۀ آخر یعنی Miscellaneous را انتخاب می کنیم. در تکست باکس موجود در این منو عبارت -lprintf_flt را تایپ می کنیم و این فایل را ذخیره می کنیم. با این کار عدد float نیز نمایش داده می شود.

-lprintf_flt

در این مرحله مهاجرت از کدویژن به اتمل استودیو انجام شده است. برای مشاهدۀ نتایج این مهاجرت می توانید فایل های پروژه و شبیه سازی پروتئوس را که در پیوست قرار دارند دانلود نمایید.

تنظیمات-linker-lprintf-اتمل-استودیو

تصویر 11 – تنظیمات Linker برای اعداد float

چند تفاوت کدویژن با اتمل استودیو در نوشتن برنامه

برخی تفاوت های نوشتن برنامه در کدویژن و Atmel Studio عبارتند از:

  1. در کدویژن برای نمایش روی LCD کاراکتری اگر از کتابخانۀ خود نرم افزار یعنی h استفاده کنیم، برای تنظیمات پایه های LCD باید در منوی Project روی گزینۀ Configure کلیک کنیم. در پنجرۀ Configure project در تب C compiler > Libraries > Alphanumeric LCD پایه های میکروکنترلر را برای متصل شدن به LCD کاراکتری تنظیم می کنیم. در Atmel Studio باید کتابخانه هایی را که خودمان نوشته ایم (یا دیگران نوشته اند) به نرم افزار اضافه کنیم. در این کتابخانه ها معمولاً در همان فایل با پسوند h. چند define وجود دارد که در آنها پایه های میکروکنترلر را برای اتصال به LCD تنظیم می کنیم.
  2. در کدویژن می توان در پنجرۀ Configure project در تب C compiler > Code generationفرکانس را تغییر داد. اما در Atmel Studio با define کردن آن در ابتدای فایل cpp این کار انجام می شود.
  3. برای تبدیل اعداد float به رشته در کدویژن کافی است در پنجرۀ Configure project در تب C compiler > Code generation در قسمت (s)printf Features گزینۀ float, width, precision را انتخاب کنیم و روی OK کلیک کنیم. آنگاه تابع sprint می تواند در ورودی خود عدد float را بپذیرد. اما در Atmel Studio باید به صورتی که توضیح داده شد تنظیمات Linker را تغییر داد.
  4. در Atmel Studio می توانیم کد نوشته شده را شبیه سازی کنیم. برای این منظور در منوی Project روی Properties کلیک می کنیم. در تب باز شده در قسمت Tool بخش Selected debugger/programmer را روی Simulator قرار می دهیم و آن را Save می کنیم. پس از آن از منوی Debug روی Start Debugging and Break کلیک می کنیم. در تصویر زیر می بینیم که مقدار رجیستر PORTE پس از اجرای سطر 41 برنامه تغییر کرده است.

اجرای-شبیه-ساز-اتمل-استودیو

تصویر 12 – اجرای شبیه ساز Atmel Studio

ابزار Goto Implementation در اتمل استودیو

یک ابزار مهم که این نرم افزار دارد این است که اگر روی توابع، ثابت ها و یا متغیرها کلیک راست کنیم و روی Goto Implementation کلیک کنیم، محل تعریف آن توابع، متغیر ها و دیفاین ثابت ها در ویرایشگر آورده می شود. این ویژگی مهم امکان بررسی و ویرایش هر چه سریع تر برنامه را فراهم می کند. این ابزار در کدویژن با نام Go to Definition/Declaration شناخته می شود. البته ممکن است این ابزار در کدویژن به خوبی عمل نکند. ممکن است برای رفتن به محل تعریف توابع و ثوابت و متغیرها لازم باشد بیشتر از یک بار از آن استفاده کرد. به ویژه اگر محل تعریف موارد مذکور در فایل دیگری باشد. همچنین در اتمل استودیو وقتی روی عبارتی کلیک راست می کنیم، این ابزار اولین گزینه است.

حتی با کلیدهای میانبر Alt+G می توان به جای کلیک راست و استفاده از آن استفاده کرد. بنابراین دسترسی به آن سریع است. اما در کدویژن وقتی کلیک راست می کنیم این ابزار تقریباً در انتهای کادر است و کلید میانبری برای آن تعریف نشده است.

نکته: مطالب گفته شده برای کدویژن، مربوط به نسخۀ 3.12 است.

ابزار-goto-implementation-اتمل-استودیو

تصویر 13 – استفاده از ابزار Goto Implementation در اتمل استودیو

پروگرامر USBasp در اتمل استودیو

پروگرامر USBasp یک پروگرامر ساده است که با میکروکنترلر ATmega8 یا ATmega88 ساخته شده است. در این پروگرامر از مبدل USB به سریال استفاده نشده است. و میکروکنترلر با برنامه ای که برای پورت IO آن نوشته شده است با پورت USB کامپیوتر به طور مستقیم ارتباط برقرار می کند. برای پروگرام کردن میکروکنترلرهای AVR با این پروگرامر هم می توان از نرم افزار ProgISP استفاده کرد و هم Atmel Studio. در هر دوی موارد باید ابتدا نصب درایور USBasp را انجام داده باشیم. در کار با نرم افزار ProgISP و پروگرام کردن میکروکنترلرهای AVR با آن، امکانات بیشتری در اختیار است. به عنوان مثال می توان با خواندن Signature ID میکروکنترلر از درست بودن قطعۀ تحت پروگرام اطمینان حاصل کرد.

در اتمل استودیو دیگر از محیط گرافیکی خبری نیست و USBasp به عنوان یک ابزار به منوی Tools اضافه می شود. با هر بار کلیک روی آن آخرین برنامۀ کامپایل شده به میکروکنترلر منتقل می شود. یکی از اهداف ما از این که این پروگرامر را به این نرم افزار اضافه کنیم این است که به انجام پروژه ها سرعت ببخشیم. خصوصاً اگر این پروگرامر روی برد توسعه یا برد الکترونیکی مورد استفاده در پروژه موجود باشد. در این صورت تنها کافی است برد را با یک کابل USB به کامپیوتر متصل کرد. و بدون استفاده از نرم افزار جانبی با کلیک روی یک ابزار در منوی Tools برد را پروگرام کرد.

در برد توسعۀ ATmega64Pin یوبرد از این پروگرامر استفاده شده است. پروگرامر روی این برد را در تصویر زیر سمت راست مشاهده می کنید. اگرچه این برد دارای یک مبدل USB به سریال CP2102 است، اما در پروگرام کردن با USBasp دخالتی ندارد و نیازی به نصب درایور CP2102 برای پروگرام کردن با USBasp نیست.

پروگرامر-usbasp-یوبرد

تصویر 14 – پروگرامر USBasp به صورت جداگانه و پیاده شده روی برد توسعۀ ATmega64Pin

روش اضافه کردن USBasp به اتمل استودیو

ابتدا نرم افزار AVRdude را دانلود و در جایی از درایو C ذخیره می کنیم. این نرم افزار در پیوست وجود دارد. در ادامه از منوی Tools روی گزینۀ External tools کلیک می کنیم. در پنجرۀ External Tools در تکست باکس Title نام ابزار خود را تایپ می کنیم. مسیر فایل AVRdude.exe را در تکست باکس Command تایپ می کنیم (و یا آن را Browse می کنیم). در تکست باکس Arguments باید یک عبارت را تایپ کنیم. این عبارت به صورت زیر است:

-p m64 -c usbasp -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:i

هرگاه بخواهیم میکروکنترلر ATmega64 را پروگرام کنیم، این عبارت را تایپ می کنیم. هرگاه بخواهیم میکروکنترلر ATmega32 را پروگرام کنیم به جای m64 عبارت m32 را قرار می دهیم. برای میکروکنترلرهای دیگر نیز به همین ترتیب. این عبارت در یک فایل txt در پیوست موجود است. در تکست باکس Initial Directory نیز عبارت زیر را تایپ می کنیم.

$(ProjectDir)

اگر در پنجرۀ External Tools تیک گزینۀ Use Output window را بزنیم، اطلاعات و نتیجۀ عملیات پروگرام شدن میکروکنترلر، در پنجرۀ Output اتمل استودیو نمایش داده خواهد شد. در نهایت روی OK کلیک می کنیم. پس از این کار در منوی Tools گزینۀ USBasp ظاهر می شود. که اگر روی آن کلیک کنیم، میکروکنترلر روی پروگرامر USBasp پروگرام می شود.

اضافه-کردن-usbasp-اتمل-استودیو

تصویر 15 – اضافه کردن USPASP به اتمل استودیو

نتایج مهاجرت از کدویژن به اتمل استودیو

  1. نرم افزار Atmel Sudioیک IDE رایگان ساخت شرکت Atmel برای برنامه نویسی و توسعۀ پروژه های مبتنی بر میکروکنترلرهای AVR و دیگر میکروکنترلرهای این شرکت است.
  2. Atmel Studioیک کامپایلر قدرتمند (GCC) دارد که کدهای نوشته شده را به بهترین شکل ممکن کامپایل می کند.
  3. محیط Atmel Studio بر پایۀ Visual Studio است.
  4. در Atmel Studio می توان به زبان C، C++ و اسمبلی برنامه نوشت.
  5. از ویژگی های مهم Atmel Studio عبارتند از: رایگان بودن، داشتن کامپیلر GCC، ابزار Goto Implementation، ویژگی های بصری، کلیدهای میانبر، امکان اضافه کردن Extensionها و ابزارها، قابلیت دیباگ پیشرفته و شبیه سازی برنامه و … .
  6. ممکن است برای کسانی که تازه وارد دنیای میکروکنترلرها شده اند و می خواهند با میکروکنترلرهای AVR کار کنند، کار با کدویژن مفید باشد. اما توصیه می کنیم در ادامۀ روند کار با این میکروکنترلرها، از نرم افزار Atmel Studio استفاده شود.
  7. Atmel Studioبر خلاف کدویژن کتابخانه هایی برای راه اندازی المان ها ندارد. این کتابخانه ها را خود برنامه نویس باید بنویسد یا از جایی دیگر (مثل اینترنت) تهیه کند و به برنامه اضافه کند.
  8. برای مهاجرت از کدویژن به Atmel Studio لازم است نکاتی رعایت شود. این نکات شامل تغییر کدهای برنامه، اضافه کردن کتابخانه های جدید و تغییر تنظیمات نرم افزار است.
  9. در Atmel Studio برای تعیین فرکانس میکروکنترلر باید F_CPU را define کنیم.
  10. از تفاوت های کدویژن و Atmel Studio عبارتند از: وجود کتابخانه های برخی المان ها در کدویژن و عدم وجود آنها در Atmel Studio، نحوۀ تعیین فرکانس، تنظیمات برای تبدیل اعداد اعشاری به رشته، قابلیت شبیه سازی و دیباگ در Atmel Studio و عدم وجود آن در کدویژن.
  11. در Atmel Studioابزار کاربردی و مهمی به نام Goto Implementation وجود دارد. این ابزار در کدویژن با نام Go to Definition/Declaration شناخته می شود.
  12. برای اضافه کردن پروگرامر USBasp به Atmel Studio کافی است از منوی Tools پنجرۀ External Tools را باز کرد و در تکست باکس های آن عبارات و آدرس نرم افزار exe را وارد کرد.

پیوست

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

سفارش پروژه میکروکنترلر یوبرد

زیرساخت مطمئن صنعت

جدیدترین تاپیک های AVR

برنامه-نویسی-میکروکنترلر-ویژوال-استودیو

برنامه نویسی میکروکنترلرها با ویژوال استودیو

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

رله-relay

رله، سوییچ تحریک پذیر

تعریف رله، تاریخچه، طرز کار رلۀ الکترومکانیکی، اصطلاحات، انواع الکترومکانیکی، رلۀ حالت جامد، رلۀ هیبریدی، رلۀ حرارتی و انواع تحریک شونده با عوامل غیر الکتریکی، انواع موجود در صنعت برق و برق صنعتی، رلۀ ایمنی و برخی انواع حفاظتی، رلۀ دیجیتال، لزوم استفاده و راه اندازی رله، مشخصات الکتریکی

پروتکل-i2c-protocol

پروتکل I2C، ادغامی از USART و SPI توسط Philips

پروتکل I2C، تاریخچه I2C، ویژگی ها و کاربردهای I2C، عبارات و اصطلاحات I2C، باس، اتصالات و گسترش شبکه I2C، سیگنال های I2C، قالب داده و آدرس در I2C، انتقال داده در I2C، آدرس دهی 10 بیتی، قابلیت Multi-master، حکمیت، مشخصات الکتریکی و زمانی، مقدار مقاومت های پول آپ، Clock Stretching

سون-سگمنت-seven-segment

سون سگمنت، نمایشگر هفت قسمتی

سون سگمنت چیست؟ انواع 7-segment، تاریخچه 7-segment، ساختار 7-segment و نمایش در آن، تعداد ارقام و 7-segmentهای مالتی پلکس، کاربردها، انواع اندازه ها و رنگ ها و مدار راه اندازی 7-segment، بایاس 7-segment، مقدار مقاومت در راه اندازی 7-segment، درایور سون سگمنت، پایه های 7-segment

60 دیدگاه ها

  1. سلام
    بابت اطلاعات مفیدتون ممنون ،آیا در اتمل استودیو میشه مانند کدویژن آکولاد ها را جمع کرد

    پاسخ
    • سلام. خواهش میکنم. لطف دارید. به طور معمول توابع رو میشه جمع کرد اما آکولادهای دیگه مثلاً آکولادهای مربوط به یه if که نوشتیم رو نمیشه. حالا ممکنه تنظیماتی وجود داشته باشه براش که بنده اطلاعی ندارم که چطور میشه این کارو کرد

      پاسخ
  2. سلام
    ظاهرا اتمل هم مثل کدویژن باکهای زیادی داره هر دو نرم افزار تو مقدار دهی و تعریف متغیر ها تو توابع محلی مشکل دارند حواستون باشه

    پاسخ
    • سلام. ممنون از نظرتون. گاهی اوقات کامپایلرها خطا می کنن. مثلاً همین الآن توی Keil به یه مشکل برخوردم. میخواستم برای تست بخشی از برنامه، یک LED رو با یه تأخیری روشن و خاموش کنم. به جای delay دو تا حلقۀ for تو در تو نوشتم. و تأخیرش زیاد شد. برای کاهش تأخیر، for داخلی رو کامنت کردم. و از این به بعد LED چشمک نمیزد و کلاً روشن بود.در واقع حلقۀ for بیرونی هم اجرا نمیشد. علاوه بر اون، دستور خاموش شدن LED هم اجرا نمی شد.این موضوع با دیباگ کردن واضح بود و برای حلقه های for و دستور خاموش شدن LED نمیشد Break point قرار داد. این موضوع به دلیل اینه که من توی حلقۀ for داخلی، شمارنده ای داشتم. حالا for داخلی رو کامنت کردم. اما شمارندۀ اون تعریف شده بود و توی برنامه استفاده نشده بود. کامپایلر هم برای بهینه سازی هر جایی که شمارندۀ اون for توش استفاده شده بود رو کامپایل نمی کرد. در واقع توی بهینه سازی اشتباه میکنه و قسمت های دیگه رو هم که لازمش داریم، کامپایل نمیکنه. و خطای برنامه به همین دلیل بود. کامپایلر ها از این خطاها دارن.

      پاسخ
  3. سلام خوب هستین، من با یه مشکل در اتمل استودیو مواجه شدم که کل امروز هرکاری که کردم نتونستم برطرفش کنم.
    فایل hex برام تولید نمیشه
    روش های مختلفی رو از یوتیوب نگاه کردم و چندتا از اشکالاتم رو برطرف کردم ولی بازهم فایل hex درست نشد. خوشحال میشم بتونین کمکم کنین

    پاسخ
  4. ممنون از مطالب خوبتون

    پاسخ
    • خواهش میکنم. ممنون از همراهی تون

      پاسخ
  5. سلام تو آموزش هاتون نوشته برای دانلود کدها به پیوست مراجعه کنید اما هرچی میگردم پیوستی نمیبینم

    پاسخ
    • سلام. پیوست در انتهای نوشته قرار گرفت.

      پاسخ
  6. سلام .
    بنده در اتمل استودیو به مشکل چالش برانگیزی برخوردم .
    بنده یک فایل کتابخانه .h برای ماژول Nokia 5110 LCD نوشتم و قصد دارم که با تعریف یک آرایه از کد های تصویر bitmap در حافظه flash (باprogmem) اقدام به نمایش تصویر روی LCD کنم . پروژه بدون هیچ مشکلی build شد و خطایی نداشت .
    اما در شبیه سازی با Proteus با خطای invalid opcode مواجه میشم و در متن خطا دیدم که یکی از کدهای bitmap رو داره به عنوان invalid opcode در یک آدرس از flash شناسایی میکنه و مدار در عمل هم کار نمیکنه .
    کلی بهش ور رفتم و فهمیدم با حذف آرایه مشکل برطرف میشه و کتابخانه nokia5110 درست کار می‌کنه ولی چرا؟
    چطور کامپایلر کد داده و opcode رو قاطی می‌کنه ؟ راه حلش چیه ؟
    ممنون میشم راهنمایی کنید …..

    پاسخ
    • سلام. بجای progmem از const استفاده کنید.

      پاسخ
  7. با سلام و وقت بخیر
    ی سوالی داشتم: اینکه سایتی هست که یکسری از کتابخانه های پرکاربرد رو داشته باشه برای برنامه اتمل استودیو؟

    و اینکه برای هر بار کد زدن ما باید کتابخانه رو اضافه کنیم؟ اینطور نیست که یک بار برای همیشه اینکارو کنیم؟

    پاسخ
    • سلام وفت بخیر. ما چنین سایتی را نمی شناسیم. بطور کلی شما باید به مرور خودتان نوشتن کتابخانه را بیاموزید. برای هر پروژه باید یک مرتبه کتابخانه را اضافه کنید.

      پاسخ

یک دیدگاه بنویسید

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

دیگر آموزش های یوبرد

آموزش زبان C و MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش میکروکنترلرهای ARM STM32 یوبرد

شروع بازی ST

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

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

یادگار فیلیپس

آموزش های شاخص

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است