起因:從貿澤購買Arduino IC來做電路,卻發現買回來的IC不能燒錄bootloader,google一下才發現ATMega328P與ATMega328不同,Arduino IDE對這顆IC支援也不多。
P.S. 此篇不會記錄燒錄的方法,若想知道其方法,請自行google。
由於沒有特別買燒錄器,所以我是使用Arduino as ISP的方式進行燒錄bootloader
Step1. 先將作為燒錄器的Arduino板燒錄"ArduinoISP"韌體
Step2. 將Arduino板與目標IC接上
on the ICSP/SPI header:
| Arduino板 | 目標IC |
| MISO | MISO |
| MOSI | MOSI |
| SCLK | SCLK |
| 5V | 5V |
| GND | GND |
| D10 | RESET |
Step3. 新增燒錄項目
我的Arduino環境是使用1.5.8,以下是皆以此環境為例:
a.找到下面路徑
arduino-1.5.8-windows\arduino-1.5.8\hardware\arduino\avr\board.txt
b.在檔案內新增下列內容
############################################################## ##ATmega328 (non-picopower) ## ------------------------------------------------- atmega328npp.name=ATmega328 (non-picopower) atmega328npp.upload.tool=avrdude atmega328npp.upload.protocol=arduino atmega328npp.upload.maximum_size=30720 atmega328npp.upload.speed=57600 atmega328npp.upload.maximum_data_size=2048 atmega328npp.bootloader.tool=avrdude atmega328npp.bootloader.unlock_bits=0x3F atmega328npp.bootloader.lock_bits=0x0F atmega328npp.bootloader.low_fuses=0xFF atmega328npp.bootloader.high_fuses=0xDA atmega328npp.bootloader.extended_fuses=0x05 atmega328npp.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex atmega328npp.build.mcu=atmega328 atmega328npp.build.f_cpu=16000000L atmega328npp.build.core=arduino atmega328npp.build.variant=standard ##############################################################
Step.啟動IDE
選取剛剛建立的ATmega328 (non-picopower)項目
再選擇ArduinoISP的COM Port,接著按下Burn Bootloader進行燒錄。
番外篇:
ATMega328燒錄韌體的方式,目前我的解決方式也是透過ICSP/SPI的燒錄方式進行燒錄,
接線的方式跟燒錄bootloader方式一樣,Board & Port設定也一樣,
將程式完成之後,先進行編譯(Verify),之後再選擇File -> Upload Using Programming,
此時,就會將此程式燒錄在ATMega328上。
參考
1. http://troy.jdmz.net/micro/avr/atmega328.html
2. http://www.digitalmisery.com/2011/11/arduino-bootloader-with-atmega328-and-atmega328p/