Arduino IDEでATtiny85に書き込む

Arduino IDEで素のATmega328Pに書き込めるようになったので、今度はATtiny85に書き込めるようにしてみる。この手の情報も検索するとたくさん見つかる。シンプルで分りやすいと感じたのがこちら。

これを参考に進める(ただし、Arduino化はしない)。

Arduino IDEの設定

ボード情報の追加

環境設定」を開き、「追加のボードマネージャのURL」にこれを書き加える。

http://drazzy.com/package_drazzy.com_index.json

上はそのURLを書き込んだところ。これで「OK」。

なお、このボードマネージャの詳細はGitHubにある。

続いて、「ツール」→「ボード」→「ボードマネージャ」を開く。

たくさんのリストが表示されるので、上の検索枠に「attiny」と入力(Enter等は不要。文字を入力するだけでインクリメンタルリサーチがかかる)。なお、検索枠が有効になるまでにちょっと時間がかかる。

ATTinyCore」が見つかるはず。一覧の中にATTiny85があることを確認し、これを「インストール」。

しばらく時間がかかるが、「INSTALLED」となれば完了。「閉じる」。

ボードの設定

インストールしたATTinyCoreを使ってボード情報を設定する。

ツール」→「ボード」→「ATtiny25/45/85 (No bootloader)」を選択(ブートローダは使わないので)。

Chipは「ATtiny85」、Clockは「1 MHz (internal)」を選ぶ。

1MHzにする理由: ATtiny85のデフォルトが「内部クロック 8MHz」、「クロック8分周」と設定されているため。詳細は、データシートの98ページ。フューズビットの設定を変えれば「8 MHz (internal)」でも動かせる。そのあたりは、 ATmega328Pの記事で。

他にも設定項目があるが、触らないで多分OK。

Arduino IDEの設定は以上。

プログラムの書込み

では、実際にプログラムを書き込んでみる。ターゲットハードウェアはこちらのもの。

概要と特徴 Microchip Technology社の1チップマイコン「AVR」のお勉強実験セットです(元々はAtmel社...

これを使ってLチカしてみる。他にも可変抵抗やらプッシュスイッチ、圧電サウンダを載せているけど、とりあえず、今回はそれらは放置。

ATtiny85のとArduinoとのピンの対応

実際のターゲットではどのピンがArduinoのI/Oに対応するのかが問題。まず、ターゲットボードではLEDは二つ搭載しており、LED0がATtiny85のPB0、LED1がPB3につながっている。

Arduinoのピンとの対応はボードで決められているようで、今回使ったATTinyCoreの場合は、先に挙げたGitHubの中に各チップごとに図がある。それによれば、ATTiny85のPB0はArduinoの0、PB3は3に対応しているとのこと。

これを元に書いたLチカがこれ。

/*
  Blink for AFSS01 (ATTiny85)	w/ ATTinyCore
*/

#define	LED0		0
#define	LED1		3

#define	WAIT_TIME	1000


void setup() {
  pinMode(LED0, OUTPUT);
  pinMode(LED1, OUTPUT);
}


void loop() {
  digitalWrite(LED0, HIGH);
  digitalWrite(LED1, LOW);
  delay(WAIT_TIME);
  
  digitalWrite(LED0, LOW);
  digitalWrite(LED1, HIGH);
  delay(WAIT_TIME);
}

せっかくLEDが二つ載っているので、交互に点滅させてみる(1000msごと)。

コンパイルと書込み

まず、普通にコンパイルしてエラーがないことを確認。

続いて、書込み。書込みにはUSBaspを使うので、「USBasp (ATTinyCore)」を指定。

この後、「書込み装置を使って書き込む」を行えば(再)コンパイルと書き込みが行われる。

無事、書込み完了。期待通り、1秒ごとに点滅する。

この後、試しにクロックの指定を「8 MHz (internal)」にしたら、期待通りに8秒ごとの点滅になった。さらに、フューズビットを書き換えてクロック分周を止めたらちゃんと1秒間隔で点滅してくれた。

この記事のタイトルとURLをコピーする
スポンサーリンク
スポンサーリンク
スポンサーリンク