我們會希望arduino可以自己重開機(reset),此時看門狗(Watch Dog Timer)就是個好幫手
但當我把專案從Uno移至Nano時情況並不順利
每當Nano遇到看門狗作用而使機器reset時,D13-LED就閃個不停而不能成功重置
經過一番搜尋,原因都導向是Nano的boot loader問題
所以解決方法就是將Nano的boot loader刷成optiboot
optiboot的專案網站提供完整了韌體檔案
https://code.google.com/p/optiboot/
但實際試過了之後發現並沒有辦法成功上傳
不知原因為何,但這讓我試了整夜都無法成功更新韌體
但幸好我找到這個部落格提供了另一個方法
Installing the Optiboot Loader on an Arudino Nano to Fix the Watch Dog Timer (WDT) Issue
這位前輩發現了一件事
就是在arduino IDE 1.06中,optiboot早已為內建韌體,且一些板子譬如uno的設定就是使用optiboot的版本,但Nano的設定卻沒有啟用optiboot
這個設定檔位於arduino根目錄\hardware\arduino\boards.txt
可以比較一下UNO和NANO的設定差異
所以最簡單的方式就是直接修改這個檔案讓Arduino IDE直接對Nano啟用optiboot
再用Arduino IDE直接燒錄韌體進去Nano
但為了避免把這檔案弄得一團糟
所以改用新增板子資訊的方式將optiboot的板子設定匯入boards.txt
於是先下載optiboot版本的boards.txt
然後找到本機上的arduino根目錄\hardware\arduino\boards.txt
使用wordpad開啟
再將optiboot版本的boards.txt同樣方法開啟並把所有板子資訊都複製貼上附加到本機上的boards.txt內容
接著重新啟動arduino IDE 1.06,應該就會在板子清單多了很多OPTIBOOT的板子
所以只要在燒錄Nano的韌體時選取[optiboot] arduino duemilanove or nano with atmega 328
就可以將你的Nano燒錄成optiboot 的boot loader
WDT的錯誤就迎刃而解啦!!
但有個要注意的事情是!!! 已燒錄成optiboot 的Nano在上傳程式碼時請把板子選成Arduino UNO
===========================
附加: 利用arduino UNO燒錄Nano韌體的方法
1. 將UNO接上電腦,在arduino IDE範例中開啟ArduinoISP的程式碼並上傳
2. 將UNO連接至Nano 的ICSP的6個pin
此圖的NANO USB方向朝右
uno d10 - nano reset
uno d11 - nano MOSI
uno d12 - nano MISO
uno d13 - nano SCK
uno 5v - nano Vcc
uno GND- nano GND
3.將arduino IDE的工具/板子設定成你要燒錄的設定檔
譬如本篇文章用的就是[optiboot] arduino duemilanove or nano with atmega 328
4.將arduino IDE工具/燒錄器設定改為ARDUINO as ISP
5.執行arduino IDE工具/燒錄bootloader,待執行完畢則燒錄完成!
沒有留言:
張貼留言