خانه / مطالب علمی / آردوینو - Arduino / روش تبدیل میکروکنترلر AVR به آردوینو

روش تبدیل میکروکنترلر AVR به آردوینو

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

برای پروگرام کردن تقریبا تمام میکروکنترلرهای avr از پروگرامر ISP  که حاوی 6 پین است، استفاده می شود. ISP استانداردی برای پروگرام کردن میکروکنترلرهای AVR هست. این پین ها عبارتند از:

Pins in Arduino UNO Micro Pins ISP Programmer Pins NUMBER
PIN12 MISO MISO 1
VCC VCC VCC 5V 2
PIN 13 SCK SCK 3
PIN 11 MOSI MOSI 4
RES RESET RESET 5
GND GND GND 6

 

اما سوال اینجاست که چگونه بردهای آردینو تنها توسط 2 پین می توانند پروگرام شوند، اینجاست که مفهوم بوت لودر برای آردینو مشخص خواهد شد. برنامه ای که قرار است روی میکرو پروگرام شود ابتدا از طریق پورت سریال و توسط 2 پین RX و  TX توسط بوت لودر دریافت شده و روی حافظه فلش ذخیره خواهد شد. در واقع در آردینو مبدل های USB به Serial این کار را بر عهده دارند. در آردینو UNO R3 یک میکرو مجزا ATMEGA16U2 انجام این عملیات را عهده دار میشود،  و در برخی آردینوهایی که اغلب در چین تولید می شود برای کاهش هزینه از CH340 برای این کار استفاده می شود. به این صورت که پس دریافت برنامه از USB ، اطلاعات را به سریال تبدیل کرده و به میکرو انتقال می دهد.

 

وظایف بوت لودر آردینو چیست؟

برنامه ی بوت لودر آردینو دو کار روی میکروکنترلر انجام میدهد. در برنامه Arduino این آیتم از منوی Tools و گزینه Burn Bootloader قابل دسترسی است.

  • پروگرام کردن برنامه بوت لودر در میکروکنترلر
  • تنظیم فیوزبیت های مخصوص آردینو روی میکروکنترلر

پروگرام کردن برنامه بوت لودر در میکروکنترلر به سادگی انجام خواهد پذیرفت؛ اما برای تنظیم فیوزبیت های مخصوص آردینو بر روی میکروکنترلر بایستی نکاتی را که در زیر به آنها اشاره شده است در نظر گرفت:

  • فرکانس کای تمامی آردینو های UNO 16 مگا هرتز خارجی است، آردینو پرو مینی بعضا در فرکانس های کاری 8 و 16 مگا هرتز خارجی کار می کنند. مقدار فیوزبیت کلاک پیش فرض میکروکنترلر 1 مگا هرتز داخلی است که به نسبت تنظیمات مورد نیاز تغییر خواهد نمود.
  • فیوزبیت دیگری وجود دارد که برای تبدیل میکروکنترلر AVR به Arduino بایستی تنظیم شود،در این فیوزبیت برای میکرو و پروگرامر مشخص خواهد شد که عملیات رایت برنامه از کیلو بایت چندم(معمولا کیوبایت سوم) به بعد انجام دهد تا محتویات بوت لودر که در کیلوبایت اول قرار دارند، پاک نشوند.

 

نحوه ی پروگرام کردن بوت لودر روی میکروکنترلر توسط نرم افزار آردینو

به 3 طریق می توان بوت لودر را بروی میکرکنترلر پروگرام نمود. که هر قسمت توضیح داده خواهد شد.

  1. از طریق تبدیل آردوینو به پروگرامر usb asp
  2. از طریق پروگرامر ISP
  3. از طریق سوکت ISCP1 در آردوینو uno R3

 

 تبدیل آردوینو به پروگرامر ISP

در این روش ابتدا برد آردینو به یک پروگرامر تبدیل خواهد شد.

  • ابتدا برنامه آردینو را باز نمایید:
  • سپس از منوی File گزینه Examples را انتخاب نموده و از آنجا برنامه ی شماره 11 (ArduinoISP) را کلیک نمایید.
  • برنامه را بر روی برد آپلود نمایید.
  • از منوی Tools از قسمت Programmer گزینه Arduino as ISP را انتخاب نمایید سپس گزینه Burn Bootloader رو بزنید.

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

avr-arduino

پروگرام کردن بوت لودر از طریق پروگرامر USB ASP

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

  • ابتدا میکروکنترلر را بر روی زیپ سوکت قرار دهید.
  • از منوی Tools و از گزینه Programmer، آیتم USB ASP انتخاب شود.
  • سپس گزینه Burn Bootloader رو بزنید.

 

نویسنده: cjmj

موضوع اصلی در انجمن: https://www.eca.ir/forums/thread71735.html

 

درباره علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شده تا بنویسم. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

2 کامنت

  1. سلام ببخشید من از روش اول سعی کردم بوت لودر آردوینو رو روی
    Atmega8 A-PU بریزم
    ولی هر جوری امتحان کردم خطای singnotur میده
    یعنی فکر کنم چیپ رو نمیشناسه
    میتونید کمک کنید درستش کنم
    اینم بگم که با یه Attiny 2313 امتحان کردم کار کرد
    که البته باز تبدیل USB to TTL که داشتم رو ویندوز نمیشناخت ولی با همون Arduino as ISP پروگرام کردن کار کرد.

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

نشانی ایمیل شما منتشر نخواهد شد.

*

code