PR

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の設定は以上。

プログラムの書込み

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

これを使って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秒間隔で点滅してくれた。

コメント

  1. アサミ より:

    参考にさせて頂いています.。
    アルディーノでUSBASPを使ってAttiny85にスケッチを書き込もうとしました 。
    以前は書き込みができていたと思いますが、今回USBASPが認識されないというエラーが出てしまいました。
    いろいろ設定を直してみましたがダメでした 。
    デバイスマネージャーでは USBASP認識されています 。
    多分 Arduino IDE を使えば書き込みができると思いますが、すみませんが何か解決方法はあるのでしょうか ?
    現在 Attiny85ボボードをインストールするとセキュリティの関係で何種類かのファイルがスキップされてインストールされます、これも何かの原因になるのでしょうか。
    アサミ

    • jh4vaj より:

      すみませんが、状況が理解できません。

      USBASPが認識されないというエラーが出てしまいました。

      デバイスマネージャーでは USBASP認識されています 。

      認識しないとのエラーを出しているのは誰?

      多分 Arduino IDE を使えば書き込みができると思います

      Arduino IDEでUSBaspを使うという話でしょうか?
      Arduino IDEでは書込み時にavrdudeを呼び出していたかと思います。

      現在 Attiny85ボボードをインストールすると

      それがなんだかわかりません。

      状況を整理し、一からやってみることをおすすめします。

  2. アサミ より:

    ありがとうございました。
    整理して質問します
    アルディーノの設定は jh4vaj さんと同じにして、Attiny85に書き込みを行うと下のようなメッセージが出てきます。書き込み装置は Amazon で買った USBaspです。
    avrdude: Warning: cannot query manufacturer for device: No such file or directory
    avrdude: Warning: cannot query product for device: No such file or directory
    avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor=’www.fischl.de’ product=’USBasp’
    avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor=’www.fischl.de’ product=’USBasp’
    また、Arduino IDEでUSBaspを使うというのではなく
    書き込み装置をArduino IDE に設定して、書き込み装置をArduino IDEにすれば
    書き込みができるのではないかと言う意味です。
    USBaspを使いたかったので質問しました 。

    • jh4vaj より:

      「アルディーノの設定」というのがそもそもよくわからないのですが、それはともかくメッセージを見るとavrdudeを使っていそうなことはわかりました。

      avrdude: error: could not find USB device

      とあるので、avrdudeがUSBaspを見つけられていないのでしょう。ドライバの確認からだと思います。このあたりを参考に。

      https://www.jh4vaj.com/archives/12626#USBasp%E3%81%AE%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90

  3. アサミ より:

    ありがとうございます.
    jh4vajさんのブログを参考に確認し、また書き込みをしてみました。なぜか分からないですが一度だけ書き込みに成功しましたが後は全てダメでした。avrdude.exeはASPを認識してません。USBasp(ファームウェアアップデート済み )
    最後に Windows10 をクリーンインストールしてもう一度試しましたが、書き込みは一度も成功しませんでした 。
    別のソフトbascom-avr でUSBasp を使って書き込みをすると、まったく問題なく書き込みができました。bascomもavrdudeを使っているのかなあ ?
    私の知識ではこれが限界ですアルディーノでUSBaspを使うのを諦めます。
    色々とありがとうございました。

    • jh4vaj より:

      詳しい状況がわかりませんし、bascom-avrというのは知らないので、こちらとしては「ドライバのチェックを」くらいしか言えません。悪しからず。