2016年11月8日火曜日

Arduino Pro mini で ATTiny85 にスケッチを書き込んでみた

概要

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

pro_mini_attiny85_write_isp_mode.png
でスケッチが開けます
開いたら Arduino Pro mini に書き込みましょう

今回は Arduino Pro mini なのでボード情報はそれに合わせましょう

  • ボード: Arduino Pro or Pro Mini
  • プロセッサ: ATmega328 (5V, 16MHz)

pro_mini_attiny85_write_port_info.png

問題なくスケッチが書き込まれば OK です
自分は特に問題なく書き込めました

※一点注意として Arduino ISP を書き込むときはライタ用の配線から一旦外してから書き込んでください
そうしないと「avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00」となりエラーとなります

ATTiny に書き込めるようにボード情報をダウンロードする

書き込み先に ATTiny が指定できるようにボード情報をダウンロードします

Arduino -> Preferences -> 追加のボードマネージャの URL

pro_mini_attiny85_write_preferences.png

で以下の json の URL を追記します

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

pro_mini_attiny85_write_add_url.png

追加できたら OK としてダイアログを閉じます
続けてツールバーから

ツール -> ボード -> ボードマネージャ

を開きます
ダイアログが表示されたら「ATTiny」で検索してボードをインストールしましょう
「Davis A. Mellis」さんが作成したボードをインストールすれば OK です
pro_mini_attiny85_write_install_board.png

問題なくインストールできればボードの一覧に ATTiny のボードが追加されています
今回インストールした 1.0.2 というバージョンだと以下のようにボードの種類がある程度まとめられてインストールされました
pro_mini_attiny85_write_boards_check.png

配線

では ATTiny にスケッチを書き込むための配線をしていきます
ICSP という SPI 通信を使った配線をします
pro_mini_attiny85_circuit1.jpg

反対側から
pro_mini_attiny85_circuit2.jpg

ちょっとややこしいので文字にすると以下の通り

  • 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 で回路図を書いたので追加しておきます
attiny_writer_circuit.png

いざ書き込み

配線できたらスケッチを書き込んでみます
今回は 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

pro_mini_attiny85_config_board.png

特にポイントなのは書き込み装置の部分でここに ISP モード化した Arduino Pro mini を指定することになります
設定できたら書き込みを行ってみましょう
まず「ブートローダを書き込む」を実行します
Arduino IDE 上にエラーが表示されず問題なく書き込まれば OK です

続けてスケッチを書き込んでください
こちらも問題なく書き込めれば OK です

動作確認

念のため動作確認してみました
ATTiny85 の Pin0 で L チカできれば OK です
電源確保が面倒だったので Arduino Pro mini の VCC と GND から取得しています

pro_mini_attiny85_ret_attiny85.jpg

写真ですが、黄色の 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 件のコメント:

コメントを投稿