بوت لودر ATmega8 در Arduino
بوت لودر ATmega8: همان طور که می دانید در بردهای Arduino برد Atmega8 وجود ندارد ولی این امکان وجود دارد با نوشتن یک بوت لودر در ATmega8 به راحتی با این میکروکنترلر در Arduino برنامه نویسی کرد. حالا من آموزش کاملی رو واستون می ذارم تجهیزاتی که لازم است
۱. Arduino ورژن 1.0.5 (من با این ورژن تست زدم ولی احتمالا بالاتر هم جواب بده)
۲.ATmega8A-PU (نگران نباشید با دیگر سری ها هم جواب می دهد ولی واسه شروع از این استفاده کنید که شک یا شبه ایی پیش نیاد)
۳. دو/۲ عدد برد Arduino Uno (اول به این شکل انجام بدید تا حساب کار دستتون بیاد بعد برید روی Breadboard)
ATmegaBOOT اول از هر کاری به مسیر hardware/arduino/bootloaders/atmega8 بروید سپس بررسی کنید فایل ATmegaBOOT-prod-firmware-2009-11-07.hex در فولدر جاری باشد اگر نبود فایل رو از لینک بالا دانلود کنید و در مسیر فوق کپی کنید و بعد از حالت فشرده خارج کنید. سپس در لینک زیر فایل فشرده رو دانلود کنید سپس از حالت فشرده خارج کنید و دو تا فایل pins_arduino.h و pins_arduino.c رو در مسیر hardware/arduino/cores/arduino کپی کنید. pins_arduino خوب حالا می رویم سراغ سخت افزار ها. دو عدد برد Arduino Uno یکی رو اول به کامپیوتر وصل کنید و سپس Arduino رو اجرا کنید و مطابق عکس برد Arduino Uno رو انتخاب کنید و بعد پورت سریال رو هم انتخاب کنید.
حالا مطابق عکس پایین در نوار ابزار بر روی File کلیک کنید و سپس در Examples بر روی ArduinoISP کلیک کنید حالا برنامه رو Upload کنید.
تنظیم فیوز بیت ها ATMega8
الان Bootloader Burner آماده است. خوب حالا برد Arduino Uno بعدی رو باید میکروکنترلر ATmeag328P رو از روش بردارین و یک ATmega8 جایگزین کنید.نگران نباشد چون ترتیب پایه های ATmega328P و ATmega8 دقیقا مثل هم هستند. بعد از انجام این کار دقیقا مطابق عکس پایین اتصالات رو برقرار می کنید.اما قبل به مسیر Arduino/hardware/arduino برید و فایل boards.txt باز کنید. دنبال Arduino NG or older w/ ATmega8 بگردید حالا باید فیوز بیت های میکرو رو نتظیم کنید دو تا خط مثل زیر واسه میکرو تعریف شده
atmega8.bootloader.low_fuses=0xdf
atmega8.bootloader.high_fuses=0xca
بایت کم ارزش روی df و پر ارزش روی ca تنظیم کنید از آدرس Engbedded AVR Fuse Calculator هم می توانید استفاده کنید.
Bootloader Burner Arduino Uno With ATmega8
5V+ ========================> +5V
GND ========================> GND
SCK ========================> SCK
MISO ========================> MISO
MOSI ========================> MOSI
SS ========================> Reset
خوب حالا بعد از اتصالات می ریم سراغ نوشتن بوت لودر. ابتدا کابل USB رو به بردی که به عنوان Bootloader Burner آماده کردیم متصل می کنیم و مطابق عکس پایین Programmer رو بر روی Arduino as ISP قرار می دهیم.
نوشتن بوت لودر در ATMega8
و بعد مطابق عکس پایین برد Arduino NG or order w/ATmega8 رو انخاب می کنیم و بعد در نوار ابزار بر روی Tools کلیک کنید و بروی Burn Bootloader کلیک کنید. LED های TX و RX بر بروی برد Arduino Uno که به عنوان Bootloader Burner آماده شده روشن می شوند و خاموش می شوند و بعد از زمان خیلی کوتاه دوباره روشن می شوند و عملیات نوشتن Bootloader آغاز می شود. و با پیغام تکمیل شدن نوشتن بوت لودر توسط کامپایلر به پایان می رسد.
حالا کابل USB رو به بردی که ATmeag8 رو جایگزین کردید متصل کنید و بعد پروژه چراغ چشمک زن رو Upload کنید و لذت ببرید.
بروز رسانی در تاریخ 1396/05/24
برای استفاده از میکروکنترلر های زیر در آردوینو 1.6 و بالاتر که مدیریت برد دارند
ATmega8*
ATmega48*
ATmega88*
ATmega168*
از لینک زیر استفاده کنید و در صورت تهیه آموزش های جدید، در همین جا اضافه خواهد شد
https://github.com/MCUdude/MiniCore
برای نوشتن بوت لودر و تست همزمان من از روش بالا به وسیله برد یونو و مبدل USBasp v2.0 استفاده می کنم. میکروکنترلری هم که الان روی برد Uno گذاشتم Atmega8 هست و به خوبی کار کرد ، البته فکر می کنم بعضی از کتابخانه ها کار نکنن که اونا رو هم تست میزنم.
این پست دارای 28 نظر است
سلام
من طبق کارهای شما پیش رفتم ولی موقع پروگرام کردن خطای
“efuse” memory type not defined for part “ATMEGA8”
میده
مشکل از چیه؟
در ضمن من از نسخه 1.5.6 اردوینو استفاده میکنم.
با تشکر
سلام دوباره
من اردوینو 1.05 رو نصب کردم اما اینبار خطای
core.a(main.cpp.o): In function `main’:
C:\Program Files\Arduino\hardware\arduino\cores\arduino/main.cpp:11: undefined reference to `setup’
C:\Program Files\Arduino\hardware\arduino\cores\arduino/main.cpp:14: undefined reference to `loop’
رو میده…
سلام مجدد؛
بعد از باز و بستن برنامه همه چیز به خوبی پیش رفت و بوت لودر آپلود شد.
فقط یه نکته و اونم اینکه بعد از اینکه برد آنو با میکرو اتمگ 8 بوت شد از این به بعد برای ریختن برنامه داخل اون باید در قسمت “برد” به جای “اردوینو انو” باید گزینه
“Arduino NG or order w/ATmega8 ” رو انتخاب کرد.
با تشکر
بله درسته همین گزینه باید انتخاب بشه
Pingback: بوت لدر آردینو به چه صورته ؟ - صفحه 2
Pingback: کمک برای بوت لودر کردن atmega8 باآردوینو
شما باید اول طبق همون فایل boards.txt فیوز بیت های میکرو رو با یه نرم افزار مثل avr studio یا eXtreme Burner – AVR نظیم کنی بعد بوت لودر روی میکرو بریزی.
درضمن توی همین نرم افرار ها هم می تونی بوت لودر رو روی میکرو بنویسی.
http://turbodigital.ir/?p=40
چطوری ممکن هست که این میکرو 8 داخل برد اردوینو جواب میده اما وقتی بیرون از برد میزاری و کرستال 16 بهش وصل میکنی جواب نمیده؟
تا حالا خودتون امتحان کردید؟ ببنید میکرو بیرون از برد اردوینو هم جواب میده یا نه؟
من برنامه ال ای دی چشمک زن رو ریختم روی میکرو…داخل برد اردوینو کار میکنه ولی بیرون برد نه…مشکل از کجاست؟
بله امتحان کردن، یه مبدل PS2 به سریال درست کردم اینم عکساش


شما با نرم افزار اردوینو برنامه رو نوشتید و بعد از طریق برد آردوینو “انو” برنامه رو ریختید داخل میکرو؟؟
بله
میشه یوزر تلگرامتون رو برام بفرستید سریعتر به نتیجه برسیم و بعد اینجا نتیجه رو بگیم….چون من الان نتونستم چشمک زنرو به این روش راه اندازی کنم. البته یه سری جزیات داره که اگر ممکنه داخل تلگرام بهتون بگم.
ممنون
@amiramraei
سلام مقاومت10کیلو از پین 1به +5 وخازن 0.1نانو زمین
سلام من چه جوری میتونم توی قسمت بردهای نرم افزار آردوینو آی سی atmega 8 رو اضافه کنم؟
هر کاری میکنم نمیشه و به برد ها اضافه نمیشه
http://s1.picofile.com/file/8264460576/photo_2016_08_20_15_45_35.jpg
توی فایل boards.txt فیوز بیت ها خودش تنظیم بود
خواهشا راهنمایی کنید واقعا لازم دارم
##############################################################
atmega8o.name= Atmega8 Optoboot
atmega8o.upload.tool=arduino:avrdude1
atmega8o.upload.protocol=arduino
atmega8o.upload.maximum_size=7680
atmega8o.upload.speed=115200
atmega8o.bootloader.tool=avrdude1
atmega8o.bootloader.low_fuses=0xbf
اینا رو به آخر فایل boards.txt اضافه کن
atmega8o.bootloader.high_fuses=0xdc
atmega8o.bootloader.path=optiboot
atmega8o.bootloader.file=optiboot\optiboot_atmega8.hex
atmega8o.bootloader.unlock_bits=0x3F
atmega8o.bootloader.lock_bits=0x0F
atmega8o.build.mcu=atmega8 atmega8o.build.f_cpu=16000000L
atmega8o.build.core=arduino:arduino
atmega8o.build.variant=arduino:standard
با سلام و خسته نباشید ممنون از مطالب مفیدتون فقط یه سوال برام پیش امد ایا به این روش میتوان یه فایل هگزا تنها این فایل در دست داشته باشیم وارد میکرو کرد ؟؟؟مثلا برنامه ای قبلا توسط بسکام نوشته شده و بشکل فایل هگزا در امده و اگر میشه لطفا راهنمایی کنید و در اخر فیوز بیتها هم میشه با توجه به کد نویس فایل هگزا تاکید شده اینجا تغییر داد؟
سلام.
من طیق آموزش عمل مردم ولی دایم با این خطا مواجه می شوم:
: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
لینک گروه تلگرام
https://t.me/joinchat/B2oyXEBm_F4atJQshE30EA
اینجا راحتر می تونم کمک کنم
سلام لطفا بصورت کامل اگر امکانش هست بفرمایید چطوری فقط با یک بورد آردوینو پروگرم کنیم اتمگا8 رو
کمی صبر کنید آموزش های کاملی به زودی ارائه می دهم در مورد ATmega8 , ATmega328p
و ESP8266 – DS1307 – NRF و….
سلام و سپاس از آموزشهای خوب شما.
من طبق آموزشهای شما بوت لودر برای atmega8 را انجام دادم ولی وقتی میخواهم برنامه بریزم خطایی زیر را نمایش میده.
Arduino: 1.8.10 (Windows 10), Board: “Arduino/Genuino Uno”
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\mpc\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0403_6001 -ide-version=10810 -build-path C:\Users\mpc\AppData\Local\Temp\arduino_build_487381 -warnings=none -build-cache C:\Users\mpc\AppData\Local\Temp\arduino_cache_594522 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\mpc\Desktop\MyPro Ardino\LEDPin13\LEDPin13.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\mpc\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0403_6001 -ide-version=10810 -build-path C:\Users\mpc\AppData\Local\Temp\arduino_build_487381 -warnings=none -build-cache C:\Users\mpc\AppData\Local\Temp\arduino_cache_594522 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\mpc\Desktop\MyPro Ardino\LEDPin13\LEDPin13.ino
Using board ‘uno’ from platform in folder: C:\Program
Using core ‘arduino’ from platform in folder: C:\Program
Detecting libraries used…
“C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR “-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino” “-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard” “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381\\sketch\\LEDPin13.ino.cpp” -o nul
Generating function prototypes…
“C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR “-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino” “-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard” “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381\\sketch\\LEDPin13.ino.cpp” -o “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381\\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\\mpc\\AppData\\Local\\Temp\\arduino_build_487381\\preproc\\ctags_target_for_gcc_minus_e.cpp”
Compiling sketch…
“C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR “-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino” “-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard” “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381\\sketch\\LEDPin13.ino.cpp” -o “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381\\sketch\\LEDPin13.ino.cpp.o”
Compiling libraries…
Compiling core…
Using precompiled core: C:\Users\mpc\AppData\Local\Temp\arduino_cache_594522\core\core_arduino_avr_uno_0c812875ac70eb4a9b385d8fb077f54c.a
Linking everything together…
“C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-gcc” -w -Os -g -flto -fuse-linker-plugin -Wl,–gc-sections -mmcu=atmega328p -o “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381/LEDPin13.ino.elf” “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381\\sketch\\LEDPin13.ino.cpp.o” “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381/..\\arduino_cache_594522\\core\\core_arduino_avr_uno_0c812875ac70eb4a9b385d8fb077f54c.a” “-LC:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381” -lm
“C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy” -O ihex -j .eeprom –set-section-flags=.eeprom=alloc,load –no-change-warnings –change-section-lma .eeprom=0 “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381/LEDPin13.ino.elf” “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381/LEDPin13.ino.eep”
“C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy” -O ihex -R .eeprom “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381/LEDPin13.ino.elf” “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381/LEDPin13.ino.hex”
“C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-size” -A “C:\\Users\\mpc\\AppData\\Local\\Temp\\arduino_build_487381/LEDPin13.ino.elf”
Sketch uses 1004 bytes (3%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x9a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x9a
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.
برای atmega 8 در آردوینو باید MiniCore رو نصب کنید
https://github.com/MCUdude/MiniCore
در منوی آردوینو توی BoardManager هم می تونید نصبش کنید
به نام خدا.سلام.من تمام تنظیمات رو انجام دادم اما وقتی burn bootloader v رو میزنم سزیع eror میده :
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Error while burning bootloader.
ورژن برنامه آردوینو من 1.8.9 هست به ورژن ربطی داره ؟
؟
سلام نه
شما از روش خوده آردوینو برای نوشتن بوت لودر استفاده می کنید؟
یعنی با دو تا آردوینو uno؟
سلام . مشکل حل شد . وقتی ATMEGA8 روی آردوینو هست کار میکنه… اما می خوام مداری ببندم که روی برد برد کار کنه یه مداری بستم ولی درس کار نمیکنه file:///C:/Users/TORANJ/Desktop/schematic_1.png
سلام متوجه نشدم
حل شد یا نه؟
لینک گروه تلگرامی برای ارسال عکس:
https://t.me/joinchat/B2oyXER9Oa4WrN3Ju7414g
لینک گروه سروش برای ارسال عکس:
https://sapp.ir/joingroup/rW0SKnfqJvMuHVsap3R4zk28