17-1 利用ArduinoISP燒錄ATTINY85
by 梅克2工作室
一、 材料
表 17‑1 零件清單與規格表
零件名稱 | 規格型號 | 數量 |
Arduino微電腦控制板 | 可以是Uno、Leonardo或OZONE板,本節以Uno板為例,後面會提及Leonardo。 | 1 |
麵包板 | 1 | |
AVR晶片 | ATtiny85 | 1 |
電容 | 10uF | 1 |
LED | 紅色 | 1 |
電阻 | 330Ω | 1 |
二、 安裝 arduino-tiny
(一) 下載 arduino-tiny:網址為http://arduino-tiny.googlecode.com/files/arduino-tiny-0100-0012.zip(二) 將arduino-tiny壓縮檔內的tiny資料夾複製到Arduino IDE程式資料夾的hardware資料夾下。
(三) 重新啟動 Arduino IDE。
(四) 點選Tools→Board選單,應該可以看到如圖17‑1多出很多ATtiny板子可供選擇的畫面。
圖17‑1 ATtiny85板的選單
三、 把 Arduino 變成燒錄器
欲使用Arduino板來燒錄ATmega328、ATtiny等AVR晶片,首先須將Arduino板變成燒錄器(In-System Programmer,ISP),方法是將Arduino IDE範例中的ArduinoISP程式檔燒錄至Arduino板中,操作步驟如下:(一) 啟動 Arduino IDE,打開 File→Examples→ArduinoISP 這支程式。
圖17‑2 開啟ArduinoISP 程式
(二) 在開啟的ArduinoISP程式中,往下捲動程式,尋找燒錄過程中負責定義RESET的腳位,並將其內容改為10,如下所示。因Uno板的SS(slave select周邊選擇線)即定義為10,故使用Uno板的使用者可忽略此操作,若是Leonardo、OZONE板則需要進行此動作(因Leonardo板的SS原定義為17,為了配合底下的接線改為10)。
(三) 點選Tools→Board選擇使用的Arduino板子,例如Uno。
(四) 點選Tools→Serail Port選擇串列埠,例如Com7。
(五) 晶片燒錄方式請選擇Tools→Programmer→AVRISP mkII。
(六) 按圖示上載燒錄ArduinoISP程式。
四、 連接 Arduino 與 ATtiny85
接著要連接 Arduino 與 ATtiny85,首先來看ATtiny85晶片的外觀與腳位,圖17‑3所示為ATtiny85兩種不裝的外觀,其中有一凹陷點的為接腳 1 的位置(即RESET腳),圖17‑4為ATtiny85 的腳位圖,除了電源與RESET外,共有5個I/O(D0~D4)可使用。
(a)DIP包裝 (b)SOP包裝
圖17‑3 ATtiny85外觀
圖17‑4 ATtiny85接腳圖
(a)Uno板 (b)Leonardo板
圖17‑5 Arduino板的ICSP腳位接應
圖17‑6 Arduino UNO燒錄ATtiny85的配線圖
圖17‑7 Leonardo板、OZONE板燒錄ATtiny85的配線圖
五、 燒錄 ATtiny(Leonardo板的使用者請先看第六點)
接著我們就可以用Arduino來燒錄ATtiny85了,也就是透過Arduino將程式上傳到ATtiny85上,步驟如下。(一) 點 File→Examples→01. Basics→Blink,打開LED閃爍程式。
(二) 把Blink.ino原本程式中的led變數從13改成0。
(三) 點選工具列Tools→Board 選擇 "ATtiny85 @ 1 MHz (internal oscillator; BOD disabled)"
(四) 選擇通訊埠,點選Tools→Serial Port,例如COM7。
(五) 燒錄器(Programmer)請選擇Arduino as ISP。Leonardo或OZONE的使用者請進行第六點操作後選擇Arduino as ISP (Leonardo)。
圖17‑8 燒錄器請選擇Arduino as ISP
(六) 點選File→Upload Using Programmer,或者按Ctrl+Shift+U上載燒錄程式。(七) 過幾秒鐘後,狀態列上就會顯示 Done uploading 的訊息,如圖17‑9所示;訊息欄中可能會看到底下兩行訊息,不過別擔心,程式是有正確上傳的,此時應可看到LED正常的閃滅動作,圖17‑10(a)所示。
圖17‑9 燒錄後的訊息
(八) 測試成功後,即可拆下與Arduino的連線,此時獨立接上電源就是小型化的應用了,如圖17‑10(b)所示。
(a)ArduinoISP燒錄器接線圖 (b)燒錄後獨立運作圖
圖17‑10 測試實體圖
六、 Leonardo板燒錄器的變更
利用Arduino進行ArduispISP,預設燒錄的通訊協定是採用stk500v1,此協定不適用在Leonardo二合一的ATmega32u4晶片上,故使用ATmega32u4為核心的Arduino板需新增一個通訊協定為arduino的燒錄器才行,操作步驟如下:(一) 建立新類型燒錄器:建立的方式有二種:
- 打開Arduino IDE程式路徑(例如C:\arduino-1.0.5\)的「hardware\arduino」資料夾,並使用「Notepad++」或附屬應用程式中的「記事本」開啟programmers.txt檔案,於檔案的最後加上圖17‑11的四行並存檔。
註: 由於CR與LF的換行問題使得一些檔案由「記事本」開啟後,所有行都連成一行,不容易編輯,若有此情況,建議下載「Notepad++」取代「記事本」操作。或者按ctrl-A全選記事本中的文字,然後按ctrl-X剪下後貼到新開啟的Word文件中,再按ctrl-A全選Word中的文字,ctrl-X剪下後貼回記事本即可。
- 在Arduino IDE的「hardware\」資料夾,建立一個名稱為leofix的資料夾,然後在leofix資料夾下建立一個檔名為programmers.txt的文字檔,並以「記事本」編輯,內容輸入底下四行。
圖17‑11 Leonardo燒錄器的參數設定
圖17‑11中各行參數的用途說明如下: - 指定燒錄器(Programmer)中顯示的名稱,名稱可任意指定,主要能方便辨識即可。
- 指定通訊方式為串列(serial)。
- 設定通訊協定方式為arduino(Uno板的協定為stk500v1)。
- 設定通訊的傳輸鮑率為19200bps。
圖17‑12 選擇Leonardo的ArduinoISP燒錄器