در این پست از سایت اِمیک, نحوه ریختن بوت لودر اردوینو روی میکروکنترلر AVR را توضیح خواهم داد. ما در این مطلب اموزشی بوت لودر اردوینو را با استفاده از پروگرامر STK500 (یا هر نوع پروگرامر دیگری که دارید) روی میکروکنترلر می ریزیم.
من چند روز پیش در حال کار کردن با برد اردوینو UNO بودم و داشتم یک پروژه ای را تست می کردم که در سایت قرار بدم و بعد از چند بار پروگرام کردن برد اردوینو, دیگه برد پروگرام نمیشد و نرم افزار اردوینو هنگام پروگرام کردن در مرحله …Uploading می موند و LEDهای مربوط به TX و RX برد اردوینو که قبلا هنگام پروگرام کردن برد چشمک میزدن, دیگه مثل قبل روشن نمیشدن و چشمک نمیزدن و برد اردوینو نیز پروگرام نمی شد. بعد از سرچ کردن متوجه شدم که بوت لودر روی میکروکنترلر اردوینو خراب شده و باید دوباره بریزم, که بعد از انجام این کار و ریختن بوت لودر برد اردوینو دوباره درست شد. بنابراین تصمیم گرفتم که در این پست نحوه ریختن دوباره ی بوت لودر اردوینو روی میکروکنترلر را اموزش بدم تا دوستانی که به این مشکل برخورد کردند بتوانند به راحتی برد اردوینو خود را دوباره درست کنند.
در ابتدا می خواستم با خود نرم افزار اردوینو و با استفاده از گزینه Burn Bootloader بوت لودر را دوباره روی برد اردوینو بریزم که موفق نشدم و هنگام Burn کردن خطا می داد. بنابراین تصمیم گرفتم که میکروکنترلر را از روی برد اردوینو جدا کنم و با استفاده از پروگرامر که من پروگرامر STK500 داشتم, بوت لودر اردوینو را روی میکروکنترلر بریزم. همانطور که گفته شد پروگرامر من STK500 هست ولی با پروگرامرهای دیگه هم میشه این کار رو کرد و مشکلی وجود ندارد. این اموزش برای ریختن بوت لودر روی برد اردوینو UNO هست که دارای میکروکنترلر ATmega328 می باشد و البته برای بردهای اردوینو دیگر هم می شود از این روش استفاده کرد.
از نرم افزار AVR Studio برای پراگرام کردن میکروکنترلر استفاده می کنیم. ابتدا میکروکنترلر را از روی برد اردوینو جدا کنید و روی پروگرامر قرار دهید و پروگرامر را به کامپیوتر خود متصل کنید.

در ادامه نرم افزار AVR Studio را باز کنید. قبلا در پستی نحوه پروگرام کردن میکروکنترلر با نرم افزار AVR Studio را اموزش داده بودم که می توانید ان پست را در اینجا مشاهده کنید. در ان پست نحوه انتخاب نوع پروگرامر و… توضیح داده شد که شما تا مرحله 3 ان پست را انجام دهید و در ادامه مراحل زیر را انجام دهید.
1- از قسمت Main نوع میکروکنترلر برد اردوینو خود را انتخاب کنید, که برای برد اردوینو یونو ATmega328P می باشد و Programming Mode and Target Settings را هم روی ISP mode قرار دهید.

2- در قسمت Program ابتدا با کلیک بر روی Erase Device حافظه فلش میکروکنترلر را پاک کنید.

در بخش Flash باید ادرس فایل هگز بوت لودر را وارد کنید که می توانید در مسیر نصب نرم افزار اردوینو که پیش فرض ان بصورت زیر است, فایل هگز بوت لودر اردوینو برای میکروکنترلرهای مختلف را مشاهده کنید.
|
1 |
C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot |
که ما برای برد اردوینو UNO که دارای میکروکنترلر ATmega328 می باشد, فایل هگز زیر را انتخاب می کنیم:

و در نهایت روی Program کلیک کنید تا بوت لودر اردوینو روی میکروکنترلر ریخته شود.
3- در این مرحله ما باید فیوزبیت های میکروکنترلر را تنظیم کنیم که برای این منظور ابتدا باید تنظیمات فیوزبیت ها را برای برد اردوینو خود بدست اوریم. به مسیر زیر در نصب نرم افزار اردوینو می رویم:
|
1 |
C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt |
و فایل boards را با نرم افزاری مانند Notepad باز کنید. در این فایل Text مقدار رجیسترهای مختلف برای بردهای اردوینو مختلف را مشاهده می کنید که البته ما به همه ی این مقادیر نیاز نداریم. در تصویر زیر فیوزبیت های مورد نیاز ما با فلش قرمز مشخص شده اند که این مقادیر برای برد اردوینو UNO می باشند, فیوزبیت های سایر بردها را نیز می توانید در این فایل مشاهده کنید.

در ادامه در قسمت Fuses مقدار سه رجیستر LOW و HIGH و EXTENDED را با توجه به تصویر بالا مقدار دهی می کنیم. یعنی:
- EXTENDED=0xFD
- HIGH=0xDE
- LOW=0xFF

روی Program کلیک کنید تا فیوزبیت های میکرو مقدار دهی شوند. از قسمت Lock Bits نیز فیوزبیت اخر را بصورت زیر مقدار دهی می کنیم و دوباره روی Program کلیک کنید تا فیوزبیت LOCKBIT نیز مقدار دهی شود.

بازم میگم که این مقادیر برای برد اردوینو یونو هست و برای سایر بردها باید طبق توضیحات بالا این مقادیر را بدست بیاورید.
و در نهایت می توانید میکروکنترلر را از پروگرامر جدا کنید و روی برد اردوینو نصب کنید و برای اطمینان از اینکه بوت لودر به درستی روی برد اردوینو ریخته شده می توانید یک مثال ساده مانند Blink را اجرا کنید. برای اموزش اجرای مثال Blink اینجا کلیک کنید.
نظر یادتون نره…





سلام مهندس یک عدد آی سی atmega8 از دستگاهی با پروگرامر Avr پروگرام کردم ک قفل نیست. آنرا Read و Save کردم حالا فیوزبیت هایش را باید دستی یادداشت کنم که در موقع پروگرامر کردن آی سی جدید که میخوام پروگرام کنم دستی وارد کنم یا اینکه روش دیگه ای دارد لطف کنین راهنمایی کنین سپاس از شما
عالی بود .. فقط مهندس اگه مقدوره برای بقیه آردینو ها مثل نانو و پرو مینی هم یه اموزشی بزار ممنون میشم ..🙏🏻🙏🏻
خیلی عالی و کاربردی
من با پروگرامر progisp انجام دادم
خیلی ممنون
سلام من یک usbasp و اردوینو مگا 2560 دارم که بوت لودر 16u2اردینو مگا خراب شده و به عنوان کیبورد شناسایی می شود
چطور میتونم درستش کنم که به عنوان اردوینو مگا 2560 شناخته بشه؟
خیییلییی عالی بود ، واقعا ممنون
سلام باهمین روش میشه کدهای نوشته شده داخل کامپایلراردوینوروهم بدون نیازبه برداردوینوروی میکرواپلودکرد؟واگه میشه دکمه ریست پراکرمرروبه جای دکمه اردوینوبایدفشابدیم ممنون.
سلام, تست نکردم تا حالا ولی به احتمال زیاد میشه. دکمه ریست را برای چی فشار بدیم؟
میشه بوت لودر رو روی مگا 32 یا مگا 16 ریخت آخه شنیدم میشه از طریق بوت لودر میکرو میکرو رو از طریق راه دور پروگرام کرد درسته میشه این موضوع رو هم آموزش بدید ؟
اطلاع زیادی از نحوه پروگرام کردن از راه دور ندارم. در اینده اگر وقت شد حتما در این مورد تحقیق میکنم و نتیجشو بصورت یک پست اموزشی در سایت قرار میدم
خیلی دمت گرم مهندس خداخیرت بده موفق باشی همیشه…
سلام .خسته نباشید
درایور stk 500 رو دارین