最近與朋友一起做了一塊板子,用的是Atmel32U4作為MCU,想用順手的Arduino IDE作為開發環境,只是光是燒錄測試碼就遭遇小困難…
首先參考葉難的將Arduino Uno當做一台ISP線上燒錄器,燒錄bootloader或sketch到麵包板上的ATmega328P-PU晶片,按部就班的做
基本上有幾件事要確實做好:
- 從燒錄器(Arduino UNO)到目標板(Atmel32U4)的硬體線路,共計有
- MOSI
- MISO
- SCK
- RESET
- 5V
- GND
- 燒錄器本身是否準備完成?
- 打開範例->ArduinoISP,燒錄到燒錄器內(Arduino UNO)
- 最後就是將bootloader燒進目標板(Atmel32U4)
- 工具->燒錄bootloader
此時若 Arduino IDE->檔案->偏好設定,顯示詳細輸出皆勾選的話,可能會得到錯誤訊息:
燒錄bootloader時發生錯誤。
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x00ff00
avrdude: Expected signature for ATmega32U4 is 1E 95 87
Double check chip, or use -F to override this check.
avrdude done. Thank you.
signature指的是ATmega32U4晶片的辨識ID,顯然辨識錯誤
在AVRFreak找到可能解法之一,需要在下avrdude命令時加上 -B8選項(-B 與 8之間沒有空格!!) ,使得燒錄時的運作頻率不要那麼快。
加上此選項進行燒錄需要在命令列執行,我是在Windows下用Git shell:
$avrdude -CC:\Program Files (x86)\Arduino/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cstk500v1 -PCOM7 -B8 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xcb:m -Uhfuse:w:0xd8:m -Ulfuse:w:0xff:m
This method worked for me :).
參考資料:
avrdude reference