ArduinoISPでATtinyへスケッチを書き込む


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をサポートしていますが、ATtinyCore Universalの方が対応チップが多いので、個人的にはほとんど使っていません。
ATtiny24/45/85 ATtiny24/44/84

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

FemtoCow ATTinyCore
https://github.com/FemtoCow/ATTinyCore/raw/master/Downloads/package_femtocow_attiny_index.json
以下のATtinyをサポートしています。サポートモデルは少ないのですが、コンパイルできないライブラリに遭遇したことが有りません。
但し、2017年2月から更新が止まっています。
ATtiny24/44/84 ATtiny25/45/85 ATtiny861 ATtiny87/167 ATtiny2313 ATtiny88

「ファイル」→「環境設定」で「Additional Boards Manager URLs」の項目にクリップボードからURLをペーストします。
複数のAddOnを使う場合は、丸印のボタンを押すと複数のAddOnを指定することができます。
ATtinyCore Universal と FemtoCow ATTinyCore の両方を指定しておけば、ほとんどのATtinyを使うことができます。





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


色々いじっていたら、「pakage_index.jsonの認証に失敗しました」のメッセージが出るようになりました。
こちらに 解決方法がありました。
インストールしたAddOnは以下のフォルダーに保存されます。
C:\Users\ユーザ名\AppData\Local\Arduino15
このフォルダーを削除すると、追加パッケージの情報は初期化されます。



「ファイル」→「スケッチの例」で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(Internal)のときはほぼ1秒毎に点滅します。
クロックを8MHz(Internal)にするためには、こ ちらで紹介されているように、
ダミーのブートローダ書き込みでATtinyのヒューズビット書き換えを行う必要が有ります。
/*
 * 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) { // 1秒経過
    flag = !flag;
    digitalWrite(OUTPIN,flag);
    etime = millis() + INTERVAL;
  }
}

続く....