با توجه به اینکه هنوز میکروهای AVR کاربرد زیادی دارند یکی از مشکلات آنان پروگرام کردن آنها است.
در بازار پروگرامرهای مختلف و با قیمت های مختلف وجود دارد که هر کدام به روش های متفاوتی کار می کنند.
نحوه اتصال پروگرامر به سیستم یکی از نکات مهم در انتخاب یک پروگرامر است.
بهترین روش و نوع اتصال به صورت USB است در این صورت پروگرامر شما با کابل USB به سیستم وصل می شود. امروزه تمام سیستم ها حتی لپ تاپ های معمولی پورت USB را دارند پس این نوع پروگرامر بهترین نوع است.
در بین پروگرامرهای بازار می توان انواع مختلفی را از لحاظ ساختار مشاهده کرد.
ما در این مطلب قصد داریم تا پروگرامری بسازیم که شما احتیاج به مهارت خاصی برای ساخت نخواهید داشت.
و اینکه از یک سری ماژول های آماده بازار استفاده می کنیم.
شاید ماژول Arduino را شنیده باشید. Arduino همان میکرو AVR است که رو بردی سوار شده است و قابلیت اتصال آن به سیستم و پروگرام کردن آن از طریق پورت USB فراهم شده است.
یکی از ارزان ترین و کارامدترین مدل ها، مدل UNO است.
شما می توانید از آن برای ساخت خیلی از پروژه ها استفاده کنید هم اینکه ما از همین مدل برای پروگرام کردن آی سی AVR استفاده کرده ایم.
نرم افزار ماژول های Arduino با AVR متفاوت است. اما اصلا نگران نباشید چون قرار نیست شما برنامه نویسی کنید. فقط کافی است برنامه ی زیر را در نرم افزار کپی و بر روی ماژول پروگرام کنید.
#include <SPI.h> const int PRESSURE = 0x1F; const int PRESSURE_LSB = 0x20; const int TEMPERATURE = 0x21; const byte READ = 0b11111100; const byte WRITE = 0b00000010; const int dataReadyPin = 6; const int chipSelectPin = 7; void setup() { Serial.begin(9600); SPI.begin(); pinMode(dataReadyPin, INPUT); pinMode(chipSelectPin, OUTPUT); writeRegister(0x02, 0x2D); writeRegister(0x01, 0x03); writeRegister(0x03, 0x02); delay(100); } void loop() { writeRegister(0x03, 0x0A); if (digitalRead(dataReadyPin) == HIGH) { int tempData = readRegister(0x21, 2); float realTemp = (float)tempData / 20.0; Serial.print("Temp[C]="); Serial.print(realTemp); byte pressure_data_high = readRegister(0x1F, 1); pressure_data_high &= 0b00000111; unsigned int pressure_data_low = readRegister(0x20, 2); long pressure = ((pressure_data_high << 16) | pressure_data_low) / 4; Serial.println("\tPressure [Pa]=" + String(pressure)); } } unsigned int readRegister(byte thisRegister, int bytesToRead ) { byte inByte = 0; unsigned int result = 0; Serial.print(thisRegister, BIN); Serial.print("\t"); thisRegister = thisRegister << 2; byte dataToSend = thisRegister & READ; Serial.println(thisRegister, BIN); digitalWrite(chipSelectPin, LOW); SPI.transfer(dataToSend); result = SPI.transfer(0x00); bytesToRead--; if (bytesToRead > 0) { result = result << 8; inByte = SPI.transfer(0x00); result = result | inByte; bytesToRead--; } digitalWrite(chipSelectPin, HIGH); return(result); } void writeRegister(byte thisRegister, byte thisValue) { thisRegister = thisRegister << 2; byte dataToSend = thisRegister | WRITE; digitalWrite(chipSelectPin, LOW); SPI.transfer(dataToSend); SPI.transfer(thisValue); digitalWrite(chipSelectPin, HIGH); }
ماژول UNO نیاز به نصب درایور دارد.
اگر درایور و نرم افزار Arduino را ندارید در قسمت نظران اعلام نمایید تا برایتان ارسال شود.
حال شما نیاز به یک کریستال 16 مگ و دو خازن 22 ژول هم دارید.
اکنون طبق زیر میکرو را به ماژول وصل کنید:
ATmega 8 > Arduino 1 > 10 7 > VCC 8 > GND 9 > Crystal > Capacitor1 > GND 10 > Crystal > Capacitor2 > GND 17 > 11 18 > 12 19 > 13 20 > VCC 22 > GND
حال به ترتیب زیر عمل کنید:
1-نرم افزار Arduino را باز کنید.
2-تمام کدها را وارد نرم افزار کنید
3-کدها را در ماژول UNO آپلود کنید
4-از منوی Tools وارد Programmer شوید و گزینه Arduino as ISP را بزنید.
5-دوباره از منوی Tools وارد Burn bootloader شوید
6-برنامه AVR خود را لود کنید
7-از منوی Sketch روی گزینه Upload using programmer کلیک کنید.
8-برنامه AVR شما با موفقیت روی میکرو پروگرام می شود.
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
سلام. من متوجه نشدم. الان یعنی با این روش و این بردی که ساختیم رو روی آردوینو نصب می کنیم و کار هایی که گفتید رو انجام میدیم و بعد اون هر وقت با کدویژن یک کد نوشتیم فایل hex اون رو با چه برنامه ای باید آپلود کرد؟ با این پروگرام های آماده هاتل فایل hex کد مون رو با خود نرم افزار هاتل به راحتی پروگرام میکنیم و پس از پروگرام کردن نیازی به کریستال و اینجور چیزا نیست. میشه توضیح بدین روند آپلودش با چه نرم افزاریه
سلام
اگه پروگرام آماده نداشته باشید میتونید با این روش یک پروگرامر بسازید. اگه پروگرامر دارید میتونید از همون برای انتقال کدها به میکروکنترلر استفاده کنید. (این روش جایگزین خرید یک پروگرامر هست)
سلام خدا قوت
در مرحله ششم که نوشتید
برنامه avr خود را لود کنید.
این یعنی چی؟ یعنی دقیقا همون برنامه ای که قبلا رو آردینو میریختیم الان میتونیم روی میکرو بریزیم؟
سلام
این آموزشِ ساخت پروگرامر هست. یعنی شما به واسطهٔ این برنامه و ابزار میتونید کدهای avr رو روی میکرو avr بریزید.
سلام ایا با استفاده از موبایل هم میشه با این روش میکروکنترلرها را پروگرم کرد؟
سلام
ما اطلاعی در این مورد نداریم.
سلام برای پروگرام کردن باید حتما پایه های میکرو کنترلر با میکرو کنترلی که روی اردوینو هست برایر باشه؟
سلام
منظورتون تعداد پایه هست؟
در ساخت پروگرامر باید صرفاً پایههای موردنیاز رو به میکرو متصل کنید. ممکنه ICها پایههای متفاوتی داشته باشند که بهتره از data sheet اونها کمک بگیرید.
به طور مثال روی اردوینو میکروکنترلری که هست ۲۸ پایه هست با این روشی که گفتید میشه میکروکنترلرهایی که بیشتر از ۲۸ پایه دارند را پروگرم کرد
چون بخش الکترونیک مجموعه غیرفعال شده، متأسفانه نمیتونیم راهنمایی دقیقی داشته باشیم. پیشنهاد میکنیم از دیتاشیت میکرو و راهنماهای مستندات آردوینو کمک بگیرید.
سلام مهندس ، امکان ریست کردت میکروی مورد نظر وجود دارد؟ اگه میشه توضیع بدید چطوری
سلام
منظورتون میکروی AVR هست؟ اگه بله یه راهحل اولیه اینه که طبق مستندات IC پایههای مربوط به ریست رو پیدا و سختافزاری ریستش کنید.
میشه ابزار mightycore رو از github استفاده کرد. استفاده ازش خیلی راحت هست.
github.com/MCUdude/MightyCore
سلام؛ ممنون بابت اشتراکگذاری دانشتون 🙂
در آینده این ابزار رو بررسی میکنیم و اگر نیاز بود یک آموزش کوتاه براش آماده میکنیم تا دوستان بهتر بتونن استفاده کنند.
سلام میشه با atmega 328را هم باهاش پروگرم کرد؟
سلام
در باکس انتهای آموزش پایههای اتصال پروگرامر به ATmega8 ارائه شده. این پایهها رو با پایههای میکروی مورد نظرتون تطبیق بدید و متصلشون کنید.
Atmega32 چطور؟
سلام، متاسفانه اطلاع دقیقی در مورد تطابق پایهها نداریم. پیشنهاد میکنم پایههای atmega8 رو با 32 تطبیق بدید.
خسته نباشید
میشه برای atmega8 استفاده کرد؟
اگه میشه ترتیب پایه ها چطوریه؟
سلام
بله، باکس انتهایی قبل از عکس تطبیق شماره پایههای آی سی ATMega 8 هست.
سلام منم همین مشکل دوستمون دارم که اسمش مهدی همه چی رو چک می کنم درسته نمیدونم چرا این پیغام میده
سلام امکانش رو دارید یه برنامه دیگه داخل آردوینو بریزید؟ میخوام مطمئن بشید که مشکل از بورد یا اتصالاتش نیست.
تیم پشتیبانی هم سعی میکنن کد رو burn کنند که تست بشه.
سلام . بنده گزینه burn bootloader رو میزنم این ارور رو میده
سلام
این خطا معمولاً برای عدم ارتباط درست با برد Arduino هست.
از شناختهشدن برد آردوینو توسط IDE مطمئن هستید؟ از منوی Tools قسمت Ports میتونید چکش کنید.
اگر به درستی شناخته شده بود، از درست بودن اتصال COM هم مطمئن بشید.
موفق باشید.
سلام و با تشکر
این کار رو میشه برای میکروکنترلر های Atmega168 و Atmega8 کرد
ممنون میشم پاسخ بدید با تشکر.
سلام
این کد و تصویر اتصالات مدار برای میکرو ATmega8 هست. برای میکروی دیگه باید پایههای دو میکرو رو با هم تطابق بدید تا پایههای مدار جدید مشخص بشه.
موفق باشید.
سلام
من برای
atmega328
درستش کردم و یه سوال دارم : ما مثلا برنامه ای داریم که از تمام پین های آردوینو (میکرو کنترلر خامی که روشه)استفاده شده ولی تمام پین ها در اتصال به آردوینو نبوده اند .سوالم اینه که مشکلی ایجاد می کنه؟
سلام
خیر هیچ مشکلی ندارد.
سلام واقعا ممنون من انجام دادم درست شد فقط یه سوال اینکه هر برنامه ای که روی آردوینو اصلی خودمون میریختیم رو میتونیم رو همین میکروکنترلر بریزیم میکروی من همون atmega328P یعنی با انتخاب کردن upload using programmer میشه هر برنامه رو روش ریخت؟
سلام
خوشحالیم که براتون مفید واقع شده
برنامه های avr که به زبان c هستند قابل پروگرام کردن می باشند.
سلام این کدی رو که گفتید باید به اردینو پروگرام کنیم برای چی و داستانش چی؟
سلام
این برنامه کار انتقال برنامه از کامپیوتر یا همان پورت USB به میکرو AVR را انجام می دهد.
سلام میخواستم بدونم که می تونم میکرو atmega8Lخام رو بخرم و رو این پروگرامر بزارم و با نام افزار آردینو بهش برنامه بدم؟ (بوت لودر دیگر نیازی نیست)؟
سلام
با روشی که توضیح دادیم فقط می توانید برنامه AVR خود را روی میکرو AVR بریزید
برنامه های آردوینو کار نمی کنند.
خازن با واحد ژول؟ میشه درمورد این خازن توضیح بدین
سلام
انرژی ذخیره شده در خازن را ژول می گویند.
در اینجا شما می توانید از خازن 22nf استفاده کنید.
سلام جناب مهندس باید از خازن های 22pfاستفاده کنیم نه خازن های22nf گفتم یادآوری کرده باشم. خدانگهدار.
خیلی ممنون بابت مطالب مفیدتون
یه سوال داشتم من یه برنامه در کدویژن نوشتم که خیلی طولانیه و نمیخوام تغیرش بدم پروگرمرم گم شده نمیخوام هزینه بیخودی بدم با این اموزشی که دادین میتونم کد مو روی atmega بریزم بدون نیاز به تغیر یا باید اونو در محیط IDE با سینتکس arduino تغیرش بدم و بعد اپلود کنم؟
ممنون میشم به جوابتونو به ایمیلم ارسال کنید یا ایدی تلگرامم ……………. با تشکر
با سلام
خیر باید کد را تغییر دهید.
ولی پیشنهاد ما این است که یک پروگرمر آماده برای خود تهیه کنید.
سلام
1- فیوز بیت ها را چطور تنظیم کنیم
2- بوت لودر را برای atmega8 چطور پروگرام کنیم
سپاس از پاسخ شما
سلام
با استفاده از این روش فقط می توانید برنامه خود را پروگرام کنید.
در رابطه با طرح ساختن پروگرام با اردینو میخوام بگم برنامه ای که گفتید کپی کنیم در ماژول وسپس اسکیج کنیم ولی جواب نمیده فکرکنم برنامه ناقص است خواهش
بررسی فرمایید
با سلام
برنامه بررسی گردید.
مشکلی نیست و بدون خطا کامپایل می شود.
خازن ۲۲ ژول؟! منظور شما میکروفاراده؟
خیر
در عکس مشخص می شود.
22 نانو فاراد
سلام
برای پروگرام کردن mega328 بوسیله uno چه پایه هایی را به چه صورت باید وصل کنم.
لطفا راهنمایی بکنید.
با تشکر
سلام
در جدول آخر مطلب اتصال پایه ها رو قرار دادم که مربوط به میکرو ATMega8 هست.
میکرو ATmega8 رو با میکرو مورد نظر خودتون منطبق کنید، پایه ها مشخص می شود.
سلام این کریستال و خازن ها به کجا باید وصل بشه و چجوری لطفا یک راهنمایی کامل بکنین ممنون از سایت خوبتون…
با سلام مهندس برنامتون خطا میده اخه
با سلام
چه خطایی می دهد؟
ببخشید میخواستم بدونم که میکرو کنترلر atmega16 رو هم میشه با اردیونو uno برنامه ریزی کرد و کریستال خارجی ان هم باید 16 مگا هرتز باشه؟میشه atmega16 رو تبدیل به اردیونو کرد
سلام
نباید تفاوتی در سری های Atmega داشته باشه و معمولا تمام سری های ATmega با این روش پروگرام می شوند.
برای تبدیل میکرو avr به آردوینو باید در اینترنت دنبال فایل بوت لودر بگردین.
با سلام
من یک آردوینو UNO دارم که آی سی اون سوخته و میخوام همون ای سی را بخرم و بزارم روی برد ولی گفتن باید پروگرام بشه میشه راهنمایی کنید.
ممنون
با سلام
شما باید بوت لودر مربوط به همان ورژن (UNO) را از اینترنت دانلود کنید و توسط پروگرم های AVR آن را روی میکرو بریزید و سپس میکرو را روی ماژول آردوینو قرار داده و استفاده کنید.
سلام ببخشید چطور میتونم 3 یا 6 پروگرامر رو باهم به یک کامپیوتر وصل کنم؟
لطفا راهنمایی کنید.
منتظرم.ممنون
با سلام
لطفا بیشتر توضیح دهید….
Attiny13 کریستال خارجی نمیپذیره چیکار باید کرد؟
سلام
ظاهرا امکان پذیر نیست.
سلام خسته نباشید
Attiny 13 رو میشه با این روش پروگرام کرد؟؟
سلام
دقیق درجریان نیستم زیرا این مدل را تست نکرده ایم.
ممنون از مطلبتون ، تست کردید جواب داده؟؟
سلام
بله تست شده است.
خوب بود ممنون. برای هر میکروی avr میشه؟؟ با آردویینو mega 2560 هم میشه پروگرام کرد؟؟
سلام
بله امکان پذیر است.