顯示具有 Arduino 標籤的文章。 顯示所有文章
顯示具有 Arduino 標籤的文章。 顯示所有文章

2015年10月10日 星期六

[Arduino Uno當作Atmel ISP燒錄器] - 燒錄失敗解之一


最近與朋友一起做了一塊板子,用的是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