概要
Arduino ISP というモードを使うと Arduino を AVR マイコンのライタにすることができます
今回は Arduino Pro mini を Arduino ISP モードにしてライタとし ATTiny85 に L チカのスケッチを書き込んでみました
これであたなも AVR マイコンデビューです
環境
- Mac OS X 10.12.1
- Arduino IDE 1.6.12
- ATTiny85
- Arduino Pro mini (5V, 16MHz)
- Arduino Board for ATTiny 1.0.2
- 電解コンデンサ 100μF 25V 85度
Arduino ISP モードにする
まずは Arduino Pro mini をライタにするために ISP モードにします
とは言ってもスケッチを書き込むだけです
ファイル -> スケッチの例 -> 11. Arduino ISP -> Arduino ISP
でスケッチが開けます
開いたら Arduino Pro mini に書き込みましょう
今回は Arduino Pro mini なのでボード情報はそれに合わせましょう
- ボード: Arduino Pro or Pro Mini
- プロセッサ: ATmega328 (5V, 16MHz)
問題なくスケッチが書き込まれば OK です
自分は特に問題なく書き込めました
※一点注意として Arduino ISP を書き込むときはライタ用の配線から一旦外してから書き込んでください
そうしないと「avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
」となりエラーとなります
ATTiny に書き込めるようにボード情報をダウンロードする
書き込み先に ATTiny が指定できるようにボード情報をダウンロードします
Arduino -> Preferences -> 追加のボードマネージャの URL
で以下の json の URL を追記します
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
追加できたら OK としてダイアログを閉じます
続けてツールバーから
ツール -> ボード -> ボードマネージャ
を開きます
ダイアログが表示されたら「ATTiny」で検索してボードをインストールしましょう
「Davis A. Mellis」さんが作成したボードをインストールすれば OK です
問題なくインストールできればボードの一覧に ATTiny のボードが追加されています
今回インストールした 1.0.2 というバージョンだと以下のようにボードの種類がある程度まとめられてインストールされました
配線
では ATTiny にスケッチを書き込むための配線をしていきます
ICSP という SPI 通信を使った配線をします
反対側から
ちょっとややこしいので文字にすると以下の通り
- Arduino 13 Pin -> ATTiny Pin 2
- Arduino 12 Pin -> ATTiny Pin 1
- Arduino 11 Pin -> ATTiny Pin 0
- Arduino 10 Pin -> ATTiny Reset
- Arduino VCC -> ATTiny VCC
- Arduino GND -> ATTiny GND
- Arduino RST -> Arduino GND (電解コンデンサー 100μF)
が基本的な配線です
ATTiny85 のピン配列はこちら を御覧ください
配線の写真だとわかりづらいですが、表面の隅っこに丸ポチがあるので、それを上にして (写真だと Arduino Pro mini に向けて) ピン配列を見てください
今回は Arduino 7, 9 ピンに LED を追加しています
ここに LED を挿しておくと書き込んでいる状況がわかるのでいいと思います
一応 1kΩ の抵抗をプルダウンで接続しています
接続すると 9 ピン側 (写真だと赤色 LED) は L フワしています
そして一番のポイントだったのですが、Arduino Pro mini の RST <-> GND 間に電解コンデンサを挟んでください
これを行わないと自分の場合
stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14
※一部抜粋
というエラーが出て書き込みが行えませんでした
ちょっと写真だとわかりづらいですが、カソード (電解コンデンサにマイナスマークが書いてある方) を GND に接続してください
電解コンデンサは 10μF とかの容量でも全然大丈夫です
セラミックコンデンサの容量で動くかどうかは確認していません
回路図
P.S 20161128
fritzing で回路図を書いたので追加しておきます
いざ書き込み
配線できたらスケッチを書き込んでみます
今回は Arduino の Blink を使います
スケッチの例から「Blink」を選択しましょう
そのままだと LED_BUILTIN
が 13 ピンの制御になってしまっているのでそこだけ 0 に書き換えます
不要な部分を削除すると以下のスケッチになると思います
void setup() {
pinMode(0, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH);
delay(1000);
digitalWrite(0, LOW);
delay(1000);
}
Blink であれば ATTiny85 でも動作します (関数が完全に Arduino 互換ではないので使えない関数もあります)
で、ここがちょっとポイントですがツールからボードの設定を ATTiny 用にします
設定する箇所は以下の 4 つです
- ボード: ATtiny25/45/85
- プロセッサ: ATtiny85
- Clock: Internal 8 MHz
- 書込装置: Arduino as ISP
特にポイントなのは書き込み装置の部分でここに ISP モード化した Arduino Pro mini を指定することになります
設定できたら書き込みを行ってみましょう
まず「ブートローダを書き込む」を実行します
Arduino IDE 上にエラーが表示されず問題なく書き込まれば OK です
続けてスケッチを書き込んでください
こちらも問題なく書き込めれば OK です
動作確認
念のため動作確認してみました
ATTiny85 の Pin0 で L チカできれば OK です
電源確保が面倒だったので Arduino Pro mini の VCC と GND から取得しています
写真ですが、黄色の LED がチカチカしています
ちなみに Pin0 は写真向かって一番右下のピンになります
最後に
Arduino Pro mini を ATTiny85 等の 8 ピンの AVR マイコンのライタにしてみました
今後はこれをライタ専用機にしてもいいかもしれません
今回一番のポイントだったのは Arduino Pro mini の RST, GND 間の電解コンデンサでした
これがないとエラーとなり書き込めませんでした
とりあえずこれで AVR マイコンデビューができました
同じように 16 ピンや 24 ピンの AVR マイコンも ICPS を使えば Arduino as ISP を使えば書き込めると思います
ATTiny85 のピンも I2C やアナログリードなどはできるので、Arduino の代わりに ATTiny を使ってみてはいかがでしょうか
0 件のコメント:
コメントを投稿