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

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از پروگرمر USBASP و Atmel Studio

برای پروگرم کردن میکروکنترلرهای AVR روش‌های زیادی وجود دارد. در این آموزش ما قصد داریم این کار را با استفاده از ورژن 2.0 پروگرمر سریال USBASP انجام دهیم و برای این کار از میکروی ATmega16 و نرم‌افزار Atmel Studio استفاده می‌کنیم. برای بررسی صحت کار نیز از برنامه‌ی LED چشمک‌زن کمک میگیریم.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

مراحل کار ما برای پروگرم کردن Atmega با استفاده از USBASP و Atmel Studio به شرح زیر است.

  1. نصب درایور USBASP
  2. دانلود و نصب Atmel Studio
  3. نصب یک زنجیره ابزار (External Toolchain) خارجی در نرم‌افزار؛ مثلا  WinAVR
  4. تنظیم کردن مدار سخت‌افزاری Atmega16 با اسیلاتور و یک LED
  5. نوشتن کد و بارگزاری آن روی میکروکنترلر

در ادامه هرکدام از این مراحل را با جزییات توضیح می‌دهیم. طبق مراحل بالا، قدم اول نصب درایور USBASP روی ویندوز 10 است. و البته نگران نباشید، با همین روش می‌توان آن را بر روی بقیه‌ی ویندوزها نیز نصب نمود و تفاوت چندانی وجود ندارد.

قدم اول: نصب USBASP درایور بر روی ویندوز 10

زمانی‌که از JTAG (USBASP) استفاده می‌کنید، ممکن است در حین کار از شما بخواهد که درایور را نصب کنید. (این اتفاق در حالتی رخ می‌دهد که در زمان نصب درایور به صورت اتومات نصب نشده باشد.) و اگر آن را نصب نکنید نمی‌توانید پورت مربوط به USBASP را در Atmel Studio پیدا کنید. پس در قدم اول این فایل زیپ را دانلود کنید و پس از آن مراحل زیر را به دقت دنبال کنید.

  1. فایل دانلود شده را از حالت زیپ خارج کنید و آن را روی دسکتاپ (یا هرجای دیگری که راحت هستید) قرار دهید.
  2. ماژول USBASP v2.0 را به کامپیوتر خود وصل کنید. اگر قبلا شکل ظاهری آن را ندیده‌اید، گوگل کنید.
  3. Device manager را باز کنید.
  4. حالا بگردید و در لیست دیوایس‌های موجود USBASP پروگرمر را پیدا کنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. بر روی USBasp راست کلیک کنید و گزینه‌ی Update Driver را بزنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. در صفحه‌ی بعدی گزینه‌ی Browse my computer for driver software را بزنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. حالا همان فولدر USBASP درایور را که دانلود و از حالت فشرده خارج کرده بودید را پیدا و باز کنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. اگر با موفقیت نصب شد و پیغامی‌مشابه تصویر زیر دریافت کردید؛ دیگر نیازی نیست مراحل بعدی را دنبال کنید. به قدم بعدی بروید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. اگر خطایی مانند تصویر زیر گرفتید باید Driver Signature Enforcement را غیرفعال کنید.
مطلب پیشنهادی:  دانلود گزارش کار آزمایشگاه میکروکنترلر

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

برای غیر فعال کردن این ویژگی مراحل زیر را دنبال کنید.

  1. کلید شیفت را نگه دارید و کامپیوترتان را restart کنید.
  2. برای این کار در حالی که کلید شیفت را نگه داشته‌اید به منوی استارت بروید و از آن جا گزینه‌ی restart را بزنید.
  3. دستگاه restart می‌شود اما شما هم‌چنان و تا زمانی‌که Advanced Options را روی صفحه‌ی آبی رنگی مانند تصویر زیر ندیده‌اید، شیفت را رها نکنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. زمانی‌که این صفحه را دیدید شیفت را رها کنید و گزینه‌ی Startup Settings را بزنید.
  2. Troubleshoot را بزنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. Advanced Options را بزنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. در صفحه‌ای که باز می‌شود شما لیستی از تمام Option‌های موجود می‌بینید و یک گزینه‌ی restart که در گوشه‌ی پایین سمت راست صفحه قرار دارد.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. Restart مذکور را بزنید.
  2. صبر کنید تا ویندوز مجددا بالا بیاید. پس از بوت شدن، می‌بینید که تعداد زیادی option در مقابل شما قرار دارد.
  3. اینجا مرحله‌ی پایانی برای غیرفعال کردن driver signature است. بین تمام آیتم‌های موجود، هفتمین مورد Disable Driver Signature Enforcement است.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. برای آنکه بتوانید آن را انتخاب کنید کافی است کلید شماره‌ی 7 را روی کیبردتان فشار دهید. دقت کنید که با F7 اشتباه نگیرید. شماره 7 در قسمت اعداد را بفشارید.
  2. زمانی که فشار دادید، دستگاه شما مجددا restart خواهد شد. به این ترتیب شما موفق شده‌اید driver signature را غیرفعال کنید.
  3. حالا دوباره مراحل 1 تا 8 قسمت قبلی را تکرار کنید و USBASP درایور را با موفقیت نصب کنید.

بسیار خب، تا اینجا قدم اول از پروگرم کردن Atmega16 را پشت سر گذاشته‌ایم. قدم بعدی نصب و تنظیمات Atmel Studio 7.0  است که از طریق آن بتوانیم کد مورد نظر را روی میکرو بارگذاری کنیم.

قدم دوم: دانلود و نصب Atmel Studio

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

  1. Atmel Studio 7.0 را دانلود کنید.
  2. WinAVR را هم به عنوان یک زنجیره ابزار خارجی برای پروگرم کردن میکرو نیاز داریم. آن را هم از طریق این لینک می‌توانید دانلود کنید.

حالا می‌خواهیم پروژه‌ی چراغ چشمک زن را در محیط این نرم‌افزار ایجاد کنیم. برای این کار به شکل زیر عمل کنید.

  1. USBASP v2.0 را به پورت USB سیستم‌تان متصل کنید و اجازه بدهید که در تمام مدتی که مشغول به کار هستید به همان شکل متصل باقی بماند.
  2. نرم‌افزار Atmel Studio را باز کنید.
  3. به قسمت File بروید، سپس New و از آنجا Project را بزنید.
مطلب پیشنهادی:  میکروکنترلرهای AVR XMEGA

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. نام پروژه و مسیر ذخیره شدن فایل‌های آن را انتخاب کنید و GCC C Executable Project را به عنوان کامپایلر انتخاب کنید. OK را بزنید و جلو بروید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. در این مرحله می‌توانید نوع میکروکنترلر مورد استفاده‌تان را انتخاب کنید. آن را در لیست پیدا و انتخاب کنید. مثلا در پروژه‌ی ما Atmega16A است. OK را بزنید و به مرحله بعدی بروید. توجه داشته باشید که با استفاده از همین پروگرمر می‌توانید میکروهای Atmega8 و Atmega32 را نیز پروگرم کنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. در این مرحله فایل c یعنی جایی که می‌توانید در آن کد بنویسید ایجاد شده است اما چند لحظه صبوری کنید و چند صفحه‌ی دیگر را هم OK بزنید تا مراحل ایجاد آن تکمیل شوند.

پس از اتمام این قدم، قدم بعدی و نهایی نصب زنجیره ابزار خارجی خواهد بود.

قدم سوم: نصب WinAVR در Atmel Studio به عنوان External Toolchain

  1. در محیط نرم‌افزار به تب Tools بروید و از آنجا External Tools را انتخاب کنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. در پنجره‌ای که باز می‌شود نام آن ابزار را وارد کنید.
  2. در قسمت Title نام را وارد کنید. این نام می‌تواند هرچیزی که خودتان دوست دارید باشد. مثلا ما آن را USBasp نام‌گذاری می‌کنیم. سپس گزینه‌ی Use Output Window را تیک بزنید و تیک گزینه‌ی Prompt for arguments را هم بردارید. مانند چیزی که در تصویر بعدی می‌بینید.
  3. حالا باید دستور (command) را وارد کنید. این دستور تعیین کننده‌ی مسیر exe خواهد بود که البته در زیر مجموعه‌ی مسیر نصب WinAvr قرار می‌گیرد. پس فقط کافی است که در درایو C (یا هرجای دیگری که WinAVR نصب شده است)، WinAVR-20100110 را پیدا کنید.
  4. در قسمت Arguments چه باید وارد کنیم؟ چیزی که در اینجا وارد می‌‌کنیم نقش بسیار مهمی ‌در درست انجام شدن برنامه‌ها دارد. از آنجایی که ما از یک External toolchain استفاده می‌کنیم؛ جمله‌ی ما به صورت زیر خواهد بود.
<avrdude -c usbasp -p atmega8 -U flash:w:$(ProjectDir)Debug$(TargetName).hex:i>        
  1. سایر Argument‌هایی که می‌توان در این بخش وارد کرد را در این لینک می‌توانید ببینید.
  2. پس از وارد کردن Argument، Initial directory را به همان صورتی که هست باقی بگذارید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. پس از تکمیل تمام جزییات، تنها کافی است Apply و سپس OK را بزنید.

بسیار خب، در پایان این مرحله نیز شما WinAVR را با موفقیت نصب کرده‌اید. حالا وقت آن رسیده است که برنامه‌ی blink.c را نوشته و بارگذاری کنیم. کد main این برنامه را در انتهای آموزش برای شما قرار داده‌ایم. می‌توانید همان را کپی کنید.

مطلب پیشنهادی:  دانلود کتاب مقدمه ای بر زبان اسمبلی میکروکنترلرهای AVR

قدم چهارم: تنظیم کردن مدار میکروکنترلر با اسیلاتور و LED

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

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

از طرفی میکروکنترلر و USBASP را هم مانند مدار زیر باید به هم متصل کنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

قدم پنجم: build و upload کردن برنامه‌بر روی میکرو

  1. فایل c که کد‌ها را در آن کپی کردید، ذخیره کنید.
  2. LED را مانند تصویر فوق به پورت A0 میکروکنترلر وصل کنید.
  3. به قسمت Build نرم افزار بروید و از آنجا Build Blink را انتخاب کنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. اگر برنامه ایرادی نداشته باشد و با موفقیت build شود شما باید پیغامی ‌مانند تصویر زیر دریافت کنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. حالا به تب Tools بروید و از آنجا زنجیره ابزار خارجی که در قسمت‌های قبل ایجاد کردیم را پیدا کنید. اگر به یاد داشته باشید نام آن را USBasp گذاشتیم. آن را باز کنید.

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

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

آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از USBASP پروگرمر و Atmel Studio 7.0

  1. در صورت موفقیت، باید LED به حالت چشمک زدن در بیاید. یعنی شما توانسته‌اید با استفاده از USBASP v2.0 و نرم افزار Atmel Studio 7.0 یک میکروکنترلر Atmega16 را برنامه‌ریزی کنید. هر کد و برنامه‌ی دیگری را هم که بخواهید با استفاده از همین روش می‌توانید بر روی میکرو بارگذاری کنید.

کد

/*
Blink.c
*/

#define F_CPU 1000000UL  /* Define CPU Frequency e.g. here its 16MHz */
#include <avr/io.h>
#include<util/delay.h>

int main(void)
{
DDRA=0x01;
while (1)
{
PORTA=~PORTA;     // Put value for PortA0
_delay_ms(500);

    }
}

اگر آموزش پروگرم کردن میکروکنترلر AVR Atmega16، با استفاده از پروگرمر USBASP و Atmel Studio 7.0 براتون مفید واقع شده ما را نیز دعا کنید و اگر خواستین می‌توانید از محتوا‌ی رایگان آموزشی حمایت مالی کنید. همچنین نظرات، پیشنهادات و درخواست‌های خود را در کامنت‌ها ⇓ بنویسید.

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

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

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

3 دیدگاه

  1. سلام ،

    اگر با ISP پروگرم کنم از پایه های miso ، mosi ، sck و … تو طی برنامه میتونم یه عنوان ورودی خروجی استفاده کنم ؟
    یا دیگه این پایه هارو فقط برای پروگرم باید آزاد بزارمشون.

  2. خیلی خیلی خیلی ممنونم از شما. بنده تجربه کار با میکرو رو ندارم و در شرایطی قرار گرفتم که واقعا کارم گیر کرده بود و این آموزش شما نجاتم داد. دعا میکنم هر وقت کارتون گیر کرد خدا همینجوری نجاتتون بده. یه دنیا ممنونم.

  3. سلام من دوره میکرو کنترل را خریدم
    و پروگرامر usbasp از همین جا
    سیم کشی های میکرو را کردم
    usb را معرفی کردم به سیستم
    ولی توی پکیج نرم افزار winavr نیست هر جا هم میگردم نمیتونم دانلود کنم
    و توی برنامه اتمل نمیشناسه و مروگرام نمیکنه . فقط در مورد پروگرامر sk500 گفتید و فیلم تهیه کردید توی سایت یه نت درمورد یو اس بی هست ولی فیلمی نیست . نمیتونم راهش بندازم گیر کردم چند روزه . حداقل یه فیلمی هم درمورد این مدل یو اس بی که گفتید و تهیه کردیم میزاشتیدکه بدونیم چطوری نصبش کنیم . یا اینکه ماهم باید دوباره همون پروگرانر ۵۰۰ را بخریم ؟؟
    دوره از اموزش صفر بود . هر چی میگردم این پایه اموزش نصب و شناسانرن این یو اس بی را پیدا نمیکنم که نمیکنم