ArduinoISPでATtinyへスケッチを書き込む(その1)


UNO+ArduinoISPを使ってATtinyにプログラムを書き込む方法は、こちらこ ちらなどで紹介されていますが、
Arduino IDE 1.6.4から大幅に仕様が変わって、ATTinyの様な非標準のマイコンを使う場合、
「built-in boards manager」を使うようになったようです。
(古いバージョンのIDEを使ったことがないのでそれ以前のことは分かりません)

以下のページに詳細が記載されていますが、日本語のページがなかったので紹介します。
http://highlowtech.org/?p=1695

以下のページからATtinyFemtoCowのURLをクリップボードにコピーします。
https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls#list-of-3rd-party-boards-support-urls

ATtiny(https://raw.githubusercontent.com/damellis/attiny/ide- 1.6.x-boards-manager/package_damellis_attiny_index.json)
以下のATtinyをサポートしていますが、ATtiny Universalの方が対応チップが多いので、個人的にはほとんど使っていません。
ATtiny45/85 ATtiny44/84

ATtiny Universal(http://drazzy.com /package_drazzy.com_index.json)
以下のATtinyをサポートしています。サポートモデルは多いのですが、一部のライブラリを使うとなぜかコンパイルエラーとなります。(原因不 明)
ATtiny25/45/85 ATtiny24/44/85 ATtiny261/461/861 ATtiny87/167 ATtiny48/88 ATtiny2313/4313 ATtiny441/841 ATtiny1634 ATtiny828

FemtoCow ATTiny(https://dl.dropboxusercontent.com/u/2807353/femtoCore/package_femtocow_attiny_index.json)
以下のATtinyをサポートしています。サポートモデルは少ないのですが、コンパイルできないライブラリに遭遇したことが有りません。
ATtiny84 / ATtiny85 / ATtiny861 / ATtiny167 / ATtiny2313 / ATtiny88

「ファイル」→「環境設定」で「Additional Boards Manager URLs」の項目にクリップボードからURLをペーストします。
複数のAddOnを使う場合は、カンマで区切ってURLを指定します。(これ、最近になって知りました)
ATtiny Universal と FemtoCow ATTiny の両方を指定しておけば、ほとんどのATtinyを使うことができます。


「ツール」→「ボード」→「Boards Manager..」で追加したAddOnをInstallします。
インストールが完了すると以下の表示となります。


「ファイル」→「スケッチの例」でArduinoISPを選んでUNOに書き込みます。
(この時点では書き込み先のボードはまだUNO)
「ツール」→「書き込み装置」でArduino as ISPを選びます。(ArduinoISPではないので注意)
これでUNOが書き込み装置として動くようになります。

ここで、書き込み装置となったUNOと、書き込み先のATtinyを接続します。
UNOとATtinyの結線は以下のページに紹介されています。
http://make.kosakalab.com/make/electronic-work/arduino-ide/test_arduinoisp/

ATtiny Universal(http://drazzy.com /package_drazzy.com_index.json)のAddOn を使う場合。
FemtoCow ATTiny(https://dl.dropboxusercontent.com/u/2807353 /femtoCore/package_femtocow_attiny_index.json)のAddOnを使う場合。
ATtiny用のスケッチを準備して書き込みます。
以下のスケッチはPin#3を1秒毎にON/OFFします。
クロックが1MHzのときはほぼ1秒毎に点滅しますが、それ以外のクロックでは正しく動きません。
/*
 * ATtiny Blink
 */
#define OUTPIN 3
#define INTERVAL 1000

unsigned long etime;
int flag = 0;

void setup() {
  pinMode(OUTPIN,OUTPUT);
  digitalWrite(OUTPIN,flag);
  etime = millis() + INTERVAL;
}

void loop() {
  unsigned long now = millis();
  if (now > etime) { // 5秒経過
    flag = !flag;
    digitalWrite(OUTPIN,flag);
    etime = millis() + INTERVAL;
  }
}

なお、今までのハードウェア情報をIDEの1.6以降の環境に移行したい場合は、以下に移行手順が公開されています。
AVR マイコンを Arduino-IDE 1.6.x で使用する方法

上記からダウンロードできるhardware.zipは、IDE1.6.Xでそのまま使うことができる様に修正されています。
ありがたい事です。
このパッケージは以下のATtinyをサポートしています。
ATtiny10 / ATtiny13 / ATtiny45 / ATtiny85 / ATtiny44 / ATtiny84 / ATtiny2313

続く....