2010年3月5日 星期五

Arduino Duemilanove 初體驗

Arduino Duemilanove

圖片摘自
arduino.cc
以前讀書的時候想玩微控制器要花幾千到幾萬才搞的定
自已 DIY 要搞定 硬體測試板, 燒錄器, 編譯軟體........
想到就覺得... >_< , 還是用學校現成的就好了..... 但是時代在改變
過年前在網路上看到的小玩具(參考 arduino.tw 網站)

2010 年過完年之後
網路上訂購的 Duemilanove (ATMega168-20PU, 也可用ATMega 328P) 來了,
(補充說明: 最新版本是 UNO, 用的全是 ATMega328P )
最近手邊最有趣的事非這個新玩具莫屬

是的, 就是它, 讓 Alan 動手玩微控制器的美夢成真了
先記錄一下到手後作的第一件事, 燒一顆備用的 MCU 以免手笨毀了手邊的唯一一顆
參考網路上的資料
Burning the Bootloader without external AVR-Writer

是的! 免用燒錄器, 寫入Bootloader
文件中使用的是Diecimila, 但有註明可用於Arduino NG, Arduino Duemilanove
(ATMega328P Fuse bit 設定與 ATMega168 不太一樣)

利用 Arduino 的 USB Chip FTDI公司的 FT232R 的 bitbang 模式, 將Bootloader寫入 ATMega168-20PU, 連燒錄器也免了, 不用買 MK II , USBasp, ...啥都不用


只要將x3 的4支腳焊上, 杜邦線接一接(有兩種接法都可以,請注意順序, 務必參考上面或下面的資料喔....)
** Arduino UNO 目前還看不到類似的作法, 原廠的Forum 也說 UNO 暫不能拿來作為 ArduinoISP使用, Duemilanove 也較便宜, 有Duemilanove 的人就可以省下 USBasp的錢囉.....

接線的方式有兩種

接完線長這樣

或這樣

從網路上下載下列的程式
serjtag
解壓縮後 Copy 至 C:\Program Files
avrdude.conf 將此檔案複製到 serjtag 的安裝路徑"C:\Program Files\avrdude-serjtag\binary" 中
此檔案修改加入ATmega328P,168P and 88P的晶片資料
avrdude-GUI
解壓縮後 Copy 至 C:\Program Files, 是 avrdude 的圖形介面(需要有 .NET Framwork 2.0)....
進一步要設定配合avrdude

打開 C:\Program Files\avrdude-GUI-1.0.x\avrdude-GUI
依設定及測試步驟操作即可完成寫入 Bootloader 的工作

i 設定 avrdude 程式的路徑: C:\Program Files\Avrdude-serjtag\binary\avrdude.exe
ii 設定Programmer TYPE :當然是 FT232R Synchronous BitBang (diecimila)
iii 選擇Device : 依您的晶片選擇
(ATmega168 選擇如圖, ATmega328p 請下拉後另選 "ATmega 328P (m328p)")
iV 程式參數: -P ft0 -B 4800 (-P ft0 是設定用 BitBang 模式 -B 是設定速度 4800 baud)
請注意 Port 欄不要設定任何參數, 留空白即可

將您的 Arduino 接上即可測試是否正確接線及燒錄
1 測試
按下 Fuse 的 Read 鈕 若可正確讀到 Fuse 的3 個值即表示您的接線及程式設定正確
若不正確, 請檢查接線或將 -B 4800 刪掉 試試看....
2燒錄
插上一個新的MCU (記得先拔掉USB接頭),
重新接上 Arduino, 啟動 avrdude-GUI 按 Chip Erase後, 再按 Read 讀取 Lock Bit 的值(確認是3F)
Fuse 欄位設定 hFuse=CA, iFuse= DF, eFuse= 後按 Write (ATMega8 適用)
Fuse 欄位設定 hFuse=DD, iFuse= FF, eFuse= 00 後按 Write (ATMega168 適用)
Fuse 欄位設定 hFuse=DA, iFuse= FF, eFuse= 05 後按 Write (ATMega328P 適用)

載入Bootloader 的 Hex 檔 (C:\Program Files\arduino-00xx\hardware\bootloaders\atmega\ATmegaBOOT_168_diecimila.hex 也可用於 Duemilanove) 其他的Arduino Bootloader在不同資料匣(如 C:\Program Files\Arduino\arduino-00xx\hardware\arduino\bootloaders\optiboot\optiboot_atmega328.hex)
後按 Erase-Write-Verify 進行寫入
Lock Bit 欄位中寫入 "0F" 後按 Write
OK , 完成一顆新的 Arduino Ready 的 ATMega168-20PU/ATMega328p-pu 囉.....

將Arduino變身為真正的 AVR ISP 燒錄器
拿一個 Arduino 改造一下, 加上 供電的接腳, 即可將您的 Diecimila 或 Duemilanove 當成 AVR-ISP
接線修改如下:

Ya 一個現成的 USB介面 AVR 燒錄器(ISP) 就 OK 了
(** 我只拿來燒 過 ATMega168-20PU和ATMega328P-PU啦**)

詳細資料及照片來自於 Kimio Kosaka 的網站 , 我只是參考照做而已.... ^_^

Kimio Kosaka 還有另一篇大作 , "將 FTDI BitBang 整合進 Arduino IDE"

"FTDI Bitbang method" with the Arduino-IDE

這樣用 Arduino-IDE 就可以直接進行 Bootloader 燒錄囉....
(個人覺得, ardude-GUI , 就很好用了! 另外那篇, 有空再翻譯唄)
(這篇文章藝科資訊可能有人翻過, 不過要會員才給看, 不符合 Arduino 的開放精神喔... ^_^ )