最近與朋友一起做了一塊板子,用的是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
看不懂-B8 要下載那?可以詳細告知嗎?
回覆刪除補在內文裡嚕,其實-B8只是一個選項 加在命令的任何位置都可以 只要用空格跟前後選項隔開就好
刪除請問一下:如果我在 命令提示字元 底下下指令,也是直接下這行嗎?
回覆刪除可能不是 avrdude前面可能要帶絕對路徑
刪除感謝你的文章解決了我的問題.我的狀況是燒錄Atmega32u4用8MHz晶振,結果
回覆刪除avrdude: Device signature = 0xff03ff
avrdude: Expected signature for ATmega32U4 is 1E 95 87
Double check chip, or use -F to override this check.
用16MHz晶振就OK,看了你的文章加了-B8 用8MHz晶振就OK
avrdude -c usbasp -p ATmega32u4 -B8 -U flash:w:lilypad.hex -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xce:m
謝謝
很高興幫助到你
回覆刪除