آردوینو سخت افزار میکروکنترلر AVR

آموزش برنامه نویسی AVR با استفاده از بوت لودر و نرم افزار آردوینو

programming-avr-with-arduino-ide-and-bootloader-digispark-
نوشته شده توسط علی زاهدی

در واقع بوت لودر فایل هگزی بر روی میکروکنترلر می باشد که این اجازه را به ما میدهد تا پس از روشن شدن میکروکنترلر بتوان از طریق درگاه UART میکروکنترلر را پروگرام کنیم. این شبیه به BIOS است که بر روی کامپیوتر اجرا می شود. در این آموزش قصد داریم تا بوت لودر آردوینو را بر روی میکروکنترلر Atmega8 انتقال دهیم و سپس با استفاده از مبدل USB to TTL و نرم افزار Arduino IDE میکروکنترلر Atmega8 را پروگرام کنیم. در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.

 


انتقال بوت لودر به میکروکنترلر Atmega8


ابتدا مدار را طبق نقشه زیر بر روی بِردبُرد ببندید و سپس کد را بر روی برد آردوینو آپلود کنید. با این کار بوت لودر بر روی میکروکنترلر منتقل می‌شود. سریال مانیتور را باز کنید تا از اینکه بوت لودر به طور صحیح انتقال یافته و هیچ خطایی وجود ندارد مطمئن شوید.

 

کدهای زیر مخصوص بوت لودر برای آی سی میکرو هستند. کافیست یکبار روی آی سی آپلود شوند. پس از آن امکان پروگرام کردن تراشه‌های میکروکنترلر با مبدل USB to TTL وجود دارد. بنابراین کدهای زیر را کپی کرده و بر روی برد آردوینو آپلود کنید. کتابخانه optiLoader.h را همراه با کد زیر میتوانید از لینک دانلود فرمایید.

 


تنظیمات نرم افزار آردوینو


حالا بوت لودر بر روی میکروکنترلر اپلود شده و اماده برای انتقال برنامه می باشد. برد آردوینو را جدا کنید و  مدار را طبق نقشه زیر بر روی بِردبُرد ببندید.

 

حالا باید برای انتقال برنامه بر روی میکروکنترلر Atmega8 آن را بعنوان یک برد به نرم افزار آردوینو معرفی کنیم، برای این کار ابتدا باید از منو ی File گزینه ی Preferences را انتخاب کنید. داخل بخش Additional Boards Manager URLs آدرس زیر را کپی کنید. (اگر از قبل آدرس دیگری داخل این بخش موجود بود، از , استفاده کنید و سپس لینک را جلو , کپی کنید) و سپس گزینه OK را انتخاب کنید.

از منو ی Tools گزینه ی Board بخش Boards Manager را انتخاب کنید. سپس کلمه MiniCore را سرچ کنید و سپس گزینه ی Install را انتخاب کنید. پس نصب برد، مبدل USB to TTL را به سیستم متصل کنید و از منو ی Tools گزینه ی Board میکروکنترلر Atmega8 را انتخاب کنید. کد زیر را داخل نرم افزار آردوینو کپی کنید. سپس کلید بر روی بِردبُرد را نگه داشته و گزینه ی Upload را انتخاب کنید. تا زمانی که داخل نوار ابی قسمت پایینی نرم افزار آردوینو ...Compiling sketch نوشته شده است کلید را نگه دارید و به محض تغیر کلمه به …Uploading کلید را رها کنید.

 


لوازم مورد نیاز


 

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

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

علی زاهدی

برنامه نویس و طراح سیستم های مبتنی بر میکروکنترلر

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۱۲ دیدگاه

  • سلام خسته نباشید یک سوال داشتم همون کد های که روی برد آردوینم میریخیتم روی این میکروکنترلر هم میتونیم بریزیم؟

    • سلام، از توجه شماسپاس گزارم
      بله فرقی نمیکنه، کد رو داخل آردوینو بنویسید و به راحتی با مبدل USB to TTL بر روی میکروکنترلر انتقال بدین.

  • سلام،
    ۱- بعد از این روش میشه از ATMEGA8 مثل قبل استفاده کرد منظورم استفاده از اون و پروگرام کردنش با avr و کد های هگز کدویژن هست، امکانش هست؟
    ۲- بجای استفاده از مبدل usb میشه از خود بورد آردوینو استفاده کرد برای پروگرام کردن؟
    ۳- در استفاده کردن آی سی که کد های آردوینو داخلش هست باید کریستال ۱۶ مگ هم قرار داده بشه تا کار کنه یا خیر؟
    تشکر از راهنمایی و پاسخ هایی که به ترتیب به سوال ها میدید.

    • سلام، با تشکر از توجه شما
      ۱٫ بله با انتقال بوت لودر آردوینو به میکرو مشکلی برای میکرو ایجاد نمی شود و پس از آن قابل استفاده می باشد.
      ۲٫بله میتوانید استفاده کنید، فقط در قسمت برد ها باید Atmega8 انتخاب شود.
      ۳٫بله فیوز بیت ها بر روی ۱۶ مگاهرتز تنظیم شده است و کریستال حتما باید در مدار موجود باشد.

      • نمیشه بدون کریستال اینکارو کردش؟
        و با خود بورد آردوینو چطوری باید پروگرم کرد اتمگا رو؟ (اگر میشه کامل بفرمایید)

        • سلام مجدد،
          برای این که بدون کریستال استفاده کنید، باید هنگام پروگرام کردن میکرو کریستال را بر روی اسیلاتور داخلی میکروکنترلر تنظیم کنید و سپس میکرو را پروگرام کنید.
          برای پروگرام کردن با برد اردینو باید پایه های RX و TX میکرو را به پایه های ۰ و ۱ برد اردینو متصل کنید و تغذیه مدار هم از برد آردوینو باید تامین شود سپس در نرم افزار اردوینو بجای انتخاب برد Uno باید Atmega8 را انتخاب کنید.

    • با سلام،
      بله روش همین است. اما تفاوت هایی از جمله کتابخانه و نوع برد وجود دارد که باید در نظر بگیرید.

  • با سلام
    این ارور را میدهد

    Arduino: 1.8.10 Hourly Build 2019/03/27 05:33 (Windows XP), Board: “ATmega8, Yes (UART0), BOD 2.7V, LTO enabled, 16 MHz external”

    Sketch uses 1706 bytes (22%) of program storage space. Maximum is 7680 bytes.
    Global variables use 198 bytes (19%) of dynamic memory, leaving 826 bytes for local variables. Maximum is 1024 bytes.
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x20
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x10
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x10
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x50
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x10
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x39
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x50
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x38
    An error occurred while uploading the sketch

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

      • سلام
        ممنون از آموزشتان
        موقع پروگرام برنامه این ارور را میدهد
        ممنون میشم راهنمایی فرمایید.

        • با سلام
          موقع پروگرام بوت لودر و یا موقع پروگرام برنامه؟ لطفا بفرمایید ارور چیست؟

          • سلام من هم همین مشکل رو دارم موقع آپلود کردن برنامه(بوت لودر بدون مشکل آپلود شد) فکر کنم دلیلش این هست که من بجای کلید فشاری از کلید کشویی استفاده می کنم و سرعت قطع شدن کم هست؟

  • سلام و خسته نباشید
    میتونم بجای مبدل ttl به سریال از پروگرامر هاتل استفاده کنم؟ممنون

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

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

    • با سلام
      بزودی در بخش های بعدی این آموزش، نحوه انتقال بوت لودر بر روی میکروکنترلر های دیگر مثل Atmega32 را منتشر خواهیم کرد.

  • سلام ببخشید اگه منفی اشتباها به پین ده میکروکنترلر وصل کنیم میکروکنترلر می سوزه؟.
    خواهشاً جوابمو بدید

    • با سلام
      بستگی به جنس میکرو خریداری شده دارد اما اکثرا میکرو با دریافت ولتاژ بیش از حد آسیب می‌بیند و با اتصال اشتباه سیم های تغذیه نمی‌سوزد.

  • سلام ببخشید
    توی قسمت سرچ minicore رو زدم اما چیزی نمیاره
    اگه میشه راهنمایی کنید و سیستم عامل من هم ubuntu 20.04 هست

  • سلام مهندس امکان داره یک فیلم کوتاه بزار از نحوه انجام مراحل و چگونه پروگرام کردن مگا ۸ با خود برد اردینو
    تشکر و سپاس از شما

  • سلام مهندس من با یک روشی روی میکرو ۸ و ۱۶ بوت لودر آردوینو رو میریزم و از داخل برد هام گزینه NG or old رو باید انتخاب کنم و قبلش هم بوت لودر رو burn میکنم از طریق uno ولی خب یه مشکلی که وجود داره روی میکرو های ۸ همیشه بعد از پروگرام ۷-۸ ثانیه طول میکشه تا میکرو بالا بیاد بعد شروع میکنه به کار ،این روش پیشنهادی شما آیا اون ۷ ثانیه Delay رو دیگه نداره ؟ یا این کلا بوت لودر آردوینو با میکرو ۸ این مشکل رو داره؟

    • با سلام
      خیر با استفاده از این روش تنها کمی از حافظه میکرو برای بوت لودر استفاده می شود. و باعث تاخیر در برنامه نمی شود.

  • با سلام و خسته نباشید
    خیلی ممنون که این آموزش را در اختیارمون گذاشتین من دو روز تموم همه راهی رفتم تا AVR رو با آردوینو پروگرام کنم ولی نشد تا اینکه این روش جدید رو دیدم و کارم راه افتاد
    خیلی ممنون

  • کتابخانه واسه من نمیاد داخل خود نرم افزار آردوینو هم سرچ کردم نیست لطفآ راهنمایی کنید ممنون

  • درود و خسته نباشید . میخواستم یه آردینو خودم بسازم . از atmega8a میشه استفاده کرد بجای ۳۲۸p ? در کل میخوام بدونم برفرض یک پروژه میخواستم با اردینو کار کنم حالا بجای اینکه از خود آردینو uno بخوام استفاده کنم خودم با میکرو mega8a اون اردینو رو بسازم . و میخوام بدونم برای استفاده ازش مدار و خروجی و وردی ها در کل فرقی نخواهند داشت در انتها؟ سپاسگذارم

    • با سلام، از توجه شما سپاسگزارم
      میکرو کنترلر های Atmega328 و Atmega8 از نظر ترتیب پایه ها با یکدیگر تفاوتی ندارند. اما بایستی توجه داشته باشید Atmega328 دارای حافظه ی بیشتری است. اگر شما در پروژه ی خود از Atmega8 به همراه بوت لودر آردوینو استفاده نمایید. حجم قابل توجهی از حافطه ی میکرو بابت بوت لودر اشغال می‌شود.

  • سلام خیلی متشکرم از مطالبی که قرار میدهید.
    میشه این کد رو روی اردواینویuno _ smd ریخت.
    ممنون میشم توضیح دهید.

    • با سلام
      این مورد بایستی تست شود. اما به دلیل این که نرم افزار آردوینو این برد را بصورت پیشفرض شناسایی میکندو احتمالا ارور بدهد. بهتر است که از مبدل usb to ttl استفاده شود.

  • سلام و عرض ادب
    خط ۶۵۰ کد Serial.print(addr, HEX); ارور میده هر کاری میکنم درست نمیشه میشه راهنمایی کنید.

  • سلام راستی اون درست شد
    خط ۶۵۲ کد Serial.println(spi_transaction(0x4C, (addr >> 8) & 0xFF, addr & 0xFF, 0), HEX); رو اشکال میگیره.

  • راستی اونم حل شد
    چند ثانیه طول میکشه تا پروگرم بشه آی سی و چراغ های اردواینو چجوری روشن خاموش میشن
    میخواستم از کارم اطمینان داشته باشم.

    • با سلام
      در صورتی که اروری وجود نداشته باشد. موفقیت آمیز بودن پروگرام داخل سریال مانیتور داخل سریال مانیتور نمایش داده میشود.

  • خیلی بد توضیح دادی. درجاهایی که باید توضیح دقیقی میدادی دقیقا پرش زدی. هر که تازه کار باشه واقعا نمیتونه از این آموزش استفاده کنه

    • با سلام از توجه شما سپاسگزارم
      هرجای آموزش که احساس میکنید نیاز به توضیح بیشتر دارد را مشحص کنید تا بنده آموزش را تکمیل کنم.

    • با سلام
      خیر اجباری به استفاده ازخازن های عدسی نیست، اما بهتر است که از این خازن ها استفاده شود.

  • سلام مهندس.
    ببینید تمام پایه های اتمگا ۸ مثل اتمگا ۳۲۸ است و هیچ فرقی ندارد.
    من میخواهم طبق گفته های شما بوتلودر را روی اتمگا ۸ بریزم و بعد اتمگا ۳۲۸ را از روی برد اردوینو بردارم و بجایش اتمگا ۸ را بزارم ایا میشه؟؟

  • سلام. من با avrstudio و پروگرامر AVRISP MKII برنامه optiLoader را روی میکروatmega8 پروگرام کردم و فیوزبیت ها رو هم تنظیم کردم.ولی در ۱٫۸٫۵ Arduino برای پروگرام کردن برنامه خودم از مبدل سریال usb به ttl استفاده کردم و هنگام پروگرام پایه reset در میکرو را زمین می کنم ولی خطای زیر رخ میده و آپلود نمیشه لطفا راهنمایی کنید. ممنون.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x23
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x23
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x23
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x23
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x23
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x23
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xf0
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xf0
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xf0
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xf0

    • باسلام
      میتوانید از منوی Sketch گزینه Export commpiled Binary را انتخاب کنید سپس داخل پوشه پروژه دو فایل با پسوند .bin موجود میشود که در ادامه نام یکی از فایل ها نوشته شده است with bootloader میتوانید با استفاده از پروگرامر این فایل را بر روی میکروکنترلر پروگرام کنید.

  • سلام مهندس خسته نباشی
    میشه بعد از بوتلودر اتمگا۸رو بجای اتمگا۳۲۸ بزاریم رو برد اردینو بزاریم و برنامه اپلود کنیم

    • با سلام
      بله این امکان وجود دارد. فقط توجه داشته باشید که چیپ های نامبرده شده تفاوت هایی بایکدیگر دارند و این تفاوت ها در برنامه نویسی بایستی مورد توجه قرار گیرد.

    • با سلام ا توجه شما سپاسگزارم
      البته روش های بسیار آسان تر هم برای این کار موجود است که در آینده آموزش آن را منتشر می‌کنیم.

  • سلام.
    ببخشید من هرکاری می کنم نمی تونم کتابخونه رو نصب کنم می شه راهنماییم کنید؟ با تشکر

    • با سلام
      خیر با استفاده از برد آردوینو از طریق پروتکل SPI بوت لودر را بر روی میکروکنترلر mega8 انتقال می‌دهیم. سپس آردوینو را مانند قبل میتوانید استفاده کنید.

  • سلام.
    واقعا دستتون درد نکنه.اتفاقا اردوینو اونوی من خراب شده و می خوام میکروکنترلر رو جدا پروگرامش کنم و بوت لودر رو با اردوینو نانو روی میکروکنترلر انتفال بدم.خیلی خیلی ممنون از سایت بی نظیرتون

      • سلام .ممنون اموزش خیلی عالی است.یک مشکل در اجرای مراحل کار برایم پیش امده من وقتی در برد منیجر اردینو MiniCoreرا تایپ میکنم صفحه سفید میشود وگزینه Installرا نمیاورد مشکل چیست.از سایت گیت هاب هم دانلود کردم اما نمیدانم ایراد کار کجاست.ایا روش دیگری غیراز استفاده از مبدل یواس بی وجود دارد ک مستقیم با خود اردینو میکرو را پروگرام کنیم؟

        • با سلام
          شما میتوانید پس از نصب پکیج minicore از منوی Sketch گزینه Export commpiled Binary را انتخاب کنید سپس داخل پوشه پروژه دو فایل با پسوند .bin موجود میشود که در ادامه نام یکی از فایل ها نوشته شده است with bootloader میتوانید با استفاده از پروگرامر این فایل را بر روی میکروکنترلر پروگرام کنید.

  • سلام این کد اخری ک درمیکرو ریخته میشود چیست؟کد مربوط ب برنامه ریزی میکرو در مراحل بعدی است یا یک کد نمونه است ک مثلا معلوم بشه که کدها امکان اپلود را دارد.

  • سلام.
    ببخشید من هر کاری می کنم میکروکنترلرم پروگرام نمی شه.نباید مبدل usb to tll پایه dtr داشته باشه؟ ممنون

  • در ضمن کریستالم هم ۱۲ مگاهرتز هست و توی نرم افزار هم به جای ۱۶ مگاهرتز ۱۲ مگاهرتز رو جای گذاری کردم

      • سلام.ازپاسخهای شما ممنون من توانستم بوت لودر را در میکرو بارگذاری کنم حال دو سوال ازخدمت شما.چگونه میتوان کدهای هر پروژه ای را ازین به بعد با اردینو در میکروکنترل ریخت؟ایا امکان کدگذاری میکروهای دیگر ازقبیل مگا۱۶ومگا۳۲با اردینو هست بدون بوت لودر واستفاده از arduino asp

        • با سلام
          همانطور که داخل متن آموزش نوشته شده است شما با استفاده از مبدل USB to TTL میکروکنترلر را پروگرام کنید. برای پروگرام میکروکنترلر های atmega16,32 با استفاده از آردوینو بایستی پکیج های مربوطه را دانلود کنید. و به نرم افزار آردوینو اضافه کنید.

          • ممنون ازپاسخ شما .من میکروهای avrاز قبیل مگا۳۲ومگا۱۶وهمچنین میکروهای attinyرا کامل در نرم افزار اردینو دارم اما مراحل کد گذاری انها را نمیتوانم انجام دهم .در چند سایت خارجی مراحل پیچیده ای را برای برنامه ریزی انها گذاشته ک نتوانستم اجرا کنم چون متوجه خیلی از راهنماییها نشدم.مثلا یکی با winavrومک فایل مراحل طولانی را اجرا کرده ک تا چند مرحله من جلو رفتم اما الباقی را متوجه نشدم .دیگری با.board.txtوhardwareک متاسفانه هرقدر تلاش کردم نتیجه نگرفتم.اگر ممکنه مراحل پروگرام این میکروکنترلها را هم اموزش بدهید.متشکر ازشما وسایت خوبتان

  • من یه آردوینو دارم یه میکرو ATMEGA328P روی اون قرار داره اگه برنامه Blink رو روی اون اپلود کنم و میکرو رو بزارم روی یه بردبرد و یه LED روی پایه اش قرار بدم آیا برنامه عمل میکنه؟

    • با سلام
      بله عمل میکند. اما پیشنهاد میکنم میکروکنترلر برد آردوینو را جدا نکنید. یک میکروکنترلر ATmega8 تهیه کنید و برنامه را با استفاده از این آموزش روی آن پروگرام کنید.

    • با سلام
      در صورتی که منظور شما مبدل USB to TTL است. این مبدل با ویندوز ۱۰ هیچ مشکلی ندارد. در صورتی که درایور مناسب نصب شود، به راحتی کار می‌کند.

    • با سلام
      بله! برای انجام این روش، مدل درایور موجود بر روی برد آردیونو و یا مبدل اهمیتی ندارد.

  • سلام ممنون از آموزش خوبتون من این مشکل رو دارم Arduino: 1.8.10 (Windows 10), Board: “ATmega8, Yes (UART0), EEPROM retained, BOD 2.7V, LTO disabled, External 16 MHz”

    Sketch uses 1484 bytes (19%) of program storage space. Maximum is 7680 bytes.
    Global variables use 210 bytes (20%) of dynamic memory, leaving 814 bytes for local variables. Maximum is 1024 bytes.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x80
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x80
    Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    پروگرمر روی usbasb هستش لطفا کمکم کنید زمان آپلود برنامه جشمک زن این ارور میاد

    • با سلام
      درصورتی که امکتن پروگرام از روشی که داخل آموزش توضیح داده شده است را ندارید از روش زیر اقدام کنید.
      شما میتوانید پس از نصب پکیج minicore از منوی Sketch گزینه Export commpiled Binary را انتخاب کنید سپس داخل پوشه پروژه دو فایل با پسوند .bin موجود میشود که در ادامه نام یکی از فایل ها نوشته شده است with bootloader میتوانید با استفاده از پروگرامر این فایل را بر روی میکروکنترلر پروگرام کنید.

  • سلام وقت به خیر من میخواهم زمانی که بوت لودر را روی اتمگا ریحتم از یوزارت آن هم استفاده کنم.البته نه برای پروگرام کردن،بلکه برای استفاده دیگر مثلا ماژولی را بهش متصل کنم.

    • با سلام
      این روش برای استفاده از USART مشکلی ایجاد نمی‌کند. \س از \روگرام با یک بار ریست کردن میکروکنترلر میتوانید از USART به راحتی استفاده کنید.

  • سلام خسته نباشید این روش برای mega32 هم عملیه؟ اگر عملیه روشش رو قرار بدین ممنون

  • سلام مهندس چرا این ارور رو میده

    Arduino: 1.8.14 (Windows 10), Board: “ATmega8, Yes (UART0), EEPROM retained, BOD 2.7V, LTO disabled, External 16 MHz”

    C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\zahra\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\zahra\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\zahra\Documents\Arduino\libraries -fqbn=MiniCore:avr:8:bootloader=uart0,eeprom=keep,BOD=2v7,LTO=Os,clock=16MHz_external -vid-pid=1A86_7523 -ide-version=10814 -build-path C:\Users\zahra\AppData\Local\Temp\arduino_build_208707 -warnings=none -build-cache C:\Users\zahra\AppData\Local\Temp\arduino_cache_877180 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino18 -prefs=runtime.tools.avrdude-6.3.0-arduino18.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino18 -prefs=runtime.tools.arduinoOTA.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -verbose C:\Users\zahra\Documents\Arduino\sketch_may23b\sketch_may23b.ino

    C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\zahra\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\zahra\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\zahra\Documents\Arduino\libraries -fqbn=MiniCore:avr:8:bootloader=uart0,eeprom=keep,BOD=2v7,LTO=Os,clock=16MHz_external -vid-pid=1A86_7523 -ide-version=10814 -build-path C:\Users\zahra\AppData\Local\Temp\arduino_build_208707 -warnings=none -build-cache C:\Users\zahra\AppData\Local\Temp\arduino_cache_877180 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino18 -prefs=runtime.tools.avrdude-6.3.0-arduino18.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino18 -prefs=runtime.tools.arduinoOTA.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\zahra\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -verbose C:\Users\zahra\Documents\Arduino\sketch_may23b\sketch_may23b.ino

    Using board ‘8’ from platform in folder: C:\Users\zahra\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.1.2

    Using core ‘MCUdude_corefiles’ from platform in folder: C:\Users\zahra\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.1.2

    Detecting libraries used…

    “C:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega8 -DF_CPU=16000000L -DARDUINO=10814 -DARDUINO_AVR_ATmega8 -DARDUINO_ARCH_AVR “-IC:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\MiniCore\\hardware\\avr\\2.1.2\\cores\\MCUdude_corefiles” “-IC:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\MiniCore\\hardware\\avr\\2.1.2\\variants\\standard” “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707\\sketch\\sketch_may23b.ino.cpp” -o nul

    Generating function prototypes…

    “C:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega8 -DF_CPU=16000000L -DARDUINO=10814 -DARDUINO_AVR_ATmega8 -DARDUINO_ARCH_AVR “-IC:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\MiniCore\\hardware\\avr\\2.1.2\\cores\\MCUdude_corefiles” “-IC:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\MiniCore\\hardware\\avr\\2.1.2\\variants\\standard” “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707\\sketch\\sketch_may23b.ino.cpp” -o “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707\\preproc\\ctags_target_for_gcc_minus_e.cpp”

    “C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags” -u –language-force=c++ -f – –c++-kinds=svpf –fields=KSTtzns –line-directives “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707\\preproc\\ctags_target_for_gcc_minus_e.cpp”

    Compiling sketch…

    “C:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega8 -DF_CPU=16000000L -DARDUINO=10814 -DARDUINO_AVR_ATmega8 -DARDUINO_ARCH_AVR “-IC:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\MiniCore\\hardware\\avr\\2.1.2\\cores\\MCUdude_corefiles” “-IC:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\MiniCore\\hardware\\avr\\2.1.2\\variants\\standard” “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707\\sketch\\sketch_may23b.ino.cpp” -o “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707\\sketch\\sketch_may23b.ino.cpp.o”

    Compiling libraries…

    Compiling core…

    Using precompiled core: C:\Users\zahra\AppData\Local\Temp\arduino_cache_877180\core\core_52b9899e88a6a19eb681a282608e6163.a

    Linking everything together…

    “C:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc” -w -Os -Wl,–gc-sections -mmcu=atmega8 -o “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/sketch_may23b.ino.elf” “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707\\sketch\\sketch_may23b.ino.cpp.o” “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/..\\arduino_cache_877180\\core\\core_52b9899e88a6a19eb681a282608e6163.a” “-LC:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707” -lm

    “C:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy” -O ihex -j .eeprom –set-section-flags=.eeprom=alloc,load –no-change-warnings –change-section-lma .eeprom=0 “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/sketch_may23b.ino.elf” “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/sketch_may23b.ino.eep”

    “C:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy” -O ihex -R .eeprom “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/sketch_may23b.ino.elf” “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/sketch_may23b.ino.hex”

    cmd /C “C:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objdump” –disassemble –source –line-numbers –demangle –section=.text “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/sketch_may23b.ino.elf” > “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/sketch_may23b.ino_atmega8_16000000L.lst”

    “C:\\Users\\zahra\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size” -A “C:\\Users\\zahra\\AppData\\Local\\Temp\\arduino_build_208707/sketch_may23b.ino.elf”

    Sketch uses 854 bytes (11%) of program storage space. Maximum is 7680 bytes.

    Global variables use 9 bytes (0%) of dynamic memory, leaving 1015 bytes for local variables. Maximum is 1024 bytes.

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x05

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x05

    Problem uploading to board. See https://support.arduino.cc/hc/en-us/sections/360003198300 for suggestions.

    • با سلام
      لطفا مشخص کنید این ارور را هنگام پروگرام بوت رودر روی میکروکنترلر دریافت می‌کند؟
      و یا بوت لودر روی میکروکنترلر پروگرام شده و هنگام دانلود برنامه این ارور دریافت می‌شود؟

  • سلام من یک usbasp و اردوینو مگا ۲۵۶۰ دارم که بوت لودر ۱۶u2اردینو مگا خراب شده و به عنوان کیبورد شناسایی می شود

    چطور میتونم درستش کنم که به عنوان اردوینو مگا ۲۵۶۰ شناخته بشه؟

  • با سلام. ممنون از مطلب مفیدتون. جایی مطالعه میکردم نوشته بود میکرو atmega328 یا atmega8 رو اگر با ۳٫۳v و ۸mhz راه اندازی کنید، مصرف میکرو خیلی خیلی پایین تر میاد. سوالم اینه بعد از اینکه تونستیم میکرو رو با arduino را اندازی کنیم، آیا میشه فرکانس کاریش رو تغییر داد و بالتبع با ۳٫۳ ولت کار کنه؟

    • با سلام
      بله پس از انتقال بوت لودر بر روی میکروکنترلر میتوانید وارد بهش tools شده و فرکانس کاری میکروکنترلر را انتخاب کنید. همچنین برای اعمال ولتاژ ۳٫۳ به میکروکنترلر نیاز به تنظیم خاصی نیست. اکثر میکروکنترلر های AVR هر دو ولتاژ ۳٫۳ و ۵ را ساپورت می کنند.