本篇先行闡述工作遇到的問題狀況,以及改進問題的方法。
遇到的狀況有:
1. 晶片 FUSE 裡的 SPIEN 鎖死,而 SPIEN 鎖死常見有以下三個狀況
- 錯誤的 Clock
- SPI port 禁用,使 MCU 進入保護模式,無法再對該設備進行燒錄
- Reset port 禁用
2. Driver、Firmware、Bootloaer 可安裝,但無法正確使用硬體設備
- Driver 方面無論是 Arduino 和 USBasp、 AVRISP mkII ,這三個硬體的 Driver 安裝後,都無法在 Arduino 2560上正常使用,燒錄程式。
- Firmware 要針對 8U2、16U2(for R3)的 USB to serial 晶片作燒錄,因為 Arduino 2560 有分R3版本,以及早期版本。
- ATmega 2560本身需要的 Bootloader 也是需要挑選,亦有版本差異。
基於這塊板子是從大陸工廠寄過來的板子,當初在工廠怎麼操作使用,實在不清楚。
遇到上述狀況後,解決順序與方案說明如下:
1. Arduino Bootloader 損壞,購買了一個 USBasp($ NT 222 )。
預估更新後應該可以正常使用,未料於 Arduino IDE 下挑選正確燒錄器與正確韌體後,
竟然無法燒錄。
圖片來源:Google
預估更新後應該可以正常使用,未料於 Arduino IDE 下挑選正確燒錄器與正確韌體後,
竟然無法燒錄。
只好改採 USBasp 專用燒錄軟體進行燒錄,在網路上找了四種 USBasp 燒錄用程式,
Arduino 2560 的 Bootloader 可在 USBasp 專用程式顯示燒錄成功,
但在 Arduino IDE 依舊無法上載 Sketch。
Arduino 2560 的 Bootloader 可在 USBasp 專用程式顯示燒錄成功,
但在 Arduino IDE 依舊無法上載 Sketch。
基於實驗精神,拿起自己的 Arduino Duemilanove 與 Arduino Diecimila,
皆可正常於 Arduino IDE 燒錄 Bootloader,並上傳Sketch 。
測試了兩天後,我放棄採用 USBasp 燒錄 Arduino 2560 ,
皆可正常於 Arduino IDE 燒錄 Bootloader,並上傳Sketch 。
測試了兩天後,我放棄採用 USBasp 燒錄 Arduino 2560 ,
改採 AVRISP的理由有二:
(1) 因為自己平時在家都會玩一些 Arduino 和 AVR 單晶片,買一台高階一些的燒錄器,
未來若需要用到就方便多了。
(2) 網路上大多數的 Bootloader 教學文章都是已 ISP 燒錄器居多,
因此買一台來加快修正速度。
因此方法 1 的心得是: USBasp 便宜好用,但是僅適合用在 Arduino 328、168 這類板子上,
才能正常使用 Arduino IDE 燒錄 Bootloader 與上傳 Sketch。
=======================================================================
選擇使用 AVRISP mkII 作為我們的程式燒錄器後,所要作的目標為:
選擇使用 AVRISP mkII 作為我們的程式燒錄器後,所要作的目標為:
所有的 Sketch 都將透過 AVRISP mkII上傳
整體工作步驟為:
安裝 AVRISP mkII 驅動程式 -> 開啟 Arduino IDE -> 設置燒錄設定 ->
燒錄 Bootloader -> 開啟範例程式 -> 燒錄範例程式
2. 由於 AVRISP mkII 是比 USBasp 專業很多的東西,因此有很多細節要更小心使用。
使用這台的好處是最後燒錄USB晶片韌體、燒錄 bootloader、燒錄 sketch 都有成功且順利。
使用 AVRISP mkII 前,要先安裝 mkII 專用的驅動程式,但請先依照下列步驟:
- 電腦連接USB插上 mkII,接著會跳出要求安裝驅動程式畫面,選擇由其他地方選擇驅動程式
- 挑選 C:\ arduino-1.0.1\hardware\tools\avr\utils\libusb\bin
請注意:
這個驅動程式是由你下載解壓縮後的 arduino 軟體資料夾內夾帶的,
筆者在此所解壓縮的位址在 C:\ ,因此請以自己的解壓縮位置去搜尋
arduino 資料夾
<< mkII的驅動安裝完成後,請先不要移除與電腦的USB連接 >>
- 將 Arduino 2560 用USB接上電腦,並AVRISP mkII 用附贈的 10pin 線用轉接頭轉為 6 pin 後,插入Arduino 2560上的 ICSP pin ( MISO腳位在最右上角)
圖片來源:Google
圖中紅色框框處為 ICSP 腳位,綠色圓圈處為 ICSP的 MISO 腳位。
無論是透過 USBasp,還是 AVRISP mkII,都是經由這個腳位下載 Bootloader。
稍候我們所要上載的 Sketch 也是經由這個 ICSP 腳位。
- 打開 Arduino IDE,在 Tools -> Board 選擇 Arduino Mega 2560
- 接著在 Tools -> Programmer 選擇 AVRISP mkII
- 最後點選 Tools -> Burn Bootloader,等待燒錄完成即可
Bootloader 燒錄完成後,請先不要將 AVRISP mkII拔除,
燒錄範例程式中最簡單的 Blink 是否正常即可。
燒錄範例程式:
燒錄過程中 RX、TX的燈並不會閃爍,是因為經由 ICSP 腳位燒錄並未通過 USB 通訊晶片,因此 RX、TX不會閃爍,請別誤以為損壞了,上傳進度請以 IDE 狀態視窗顯示的資訊為準。
正常燒錄成功的話,應該可以看到 LED 不斷閃爍,到這裡恭喜你已經完成:
- 將 AVRISP 正確安裝驅動程式,並可以在 Arduino IDE 中正常使用
- 使用 AVRISP 燒錄更換 Bootloader
- 使用 AVRISP 上傳 Sketch 至 Arduino
======================================================================
因為這篇只是前言,並把利用 Arduino IDE 燒錄 Bootloader 這個比較簡單的方法寫出來,
因此有其他比較多的細節部份,後續有時間會慢慢寫後續的續篇。
燒錄 Bootloader 當然不只有用 Arduino IDE 可以作到,AVR studio 這個官方提供的編輯環境也作的到,而且調整細節的選項部份更多元,但避免搞混,加上為了讓各位以最短的時間解決問題,我先提供了最容易的作法。
這邊要探討幾件事情:
1. 為什麼下載程式不用 USB 直接上傳 Sketch 到 Arduino 呢?
因為我手邊這片 Arduino 2560 只有在更新 Bootloader 後的第一次上傳 Sketch 可以成功,
第二次就會在上傳時卡住,然後就毫無反應。因此改採 AVRISP mkII 的方式上傳。
2. 用 AVRISP mkII 上傳有什麼好處嗎?
用 AVRISP mkII 上傳有幾個好處:
- 當程式透過 USB 上傳至 AVR 晶片後,在執行撰寫的程式動作之前,需要透過 Bootloader 將要執行動作的腳位、記憶體初始化等引導工作。 若需要完整利用到 AVR 晶片全部的記憶體空間,可以把 Bootloader 去掉,利用 AVRISP mkII 上傳 Sketch,完整利用了全部空間。而原本的初始化動作就變成 AVRISP mkII 的工作了。
- 燒錄速度因為不需要在等待 AVR 晶片上的 Bootloader,因此燒錄速度也較快。
我手上這片 Arduino 2560 無法用 USB 下載程式的問題,我現階段也不想多花時間探討細節,畢竟這塊板子裝上要控制的物件後,基本上就不會再需要拆下、更換程式,因此就採用 mkII 的燒錄方案來解決這一切吧!
之後還會有兩篇有關使用 『 USBasp 安裝,並於Arduino Atmega 168 與 328 上傳 Sketch 』 ,
和 『 AVRISP mkII 與 AVR Studio 於 Arduino 燒錄設定 』 ,希望下週前可以寫的出來。
和 『 AVRISP mkII 與 AVR Studio 於 Arduino 燒錄設定 』 ,希望下週前可以寫的出來。
有問題的朋友,歡迎留言討論,感謝!