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)」を選ぶ。
他にも設定項目があるが、触らないで多分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秒間隔で点滅してくれた。
コメント
参考にさせて頂いています.。
アルディーノでUSBASPを使ってAttiny85にスケッチを書き込もうとしました 。
以前は書き込みができていたと思いますが、今回USBASPが認識されないというエラーが出てしまいました。
いろいろ設定を直してみましたがダメでした 。
デバイスマネージャーでは USBASP認識されています 。
多分 Arduino IDE を使えば書き込みができると思いますが、すみませんが何か解決方法はあるのでしょうか ?
現在 Attiny85ボボードをインストールするとセキュリティの関係で何種類かのファイルがスキップされてインストールされます、これも何かの原因になるのでしょうか。
アサミ
すみませんが、状況が理解できません。
認識しないとのエラーを出しているのは誰?
Arduino IDEでUSBaspを使うという話でしょうか?
Arduino IDEでは書込み時にavrdudeを呼び出していたかと思います。
それがなんだかわかりません。
状況を整理し、一からやってみることをおすすめします。
ありがとうございました。
整理して質問します
アルディーノの設定は 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を使いたかったので質問しました 。
「アルディーノの設定」というのがそもそもよくわからないのですが、それはともかくメッセージを見るとavrdudeを使っていそうなことはわかりました。
とあるので、avrdudeがUSBaspを見つけられていないのでしょう。ドライバの確認からだと思います。このあたりを参考に。
https://www.jh4vaj.com/archives/12626#USBasp%E3%81%AE%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90
ありがとうございます.
jh4vajさんのブログを参考に確認し、また書き込みをしてみました。なぜか分からないですが一度だけ書き込みに成功しましたが後は全てダメでした。avrdude.exeはASPを認識してません。USBasp(ファームウェアアップデート済み )
最後に Windows10 をクリーンインストールしてもう一度試しましたが、書き込みは一度も成功しませんでした 。
別のソフトbascom-avr でUSBasp を使って書き込みをすると、まったく問題なく書き込みができました。bascomもavrdudeを使っているのかなあ ?
私の知識ではこれが限界ですアルディーノでUSBaspを使うのを諦めます。
色々とありがとうございました。
詳しい状況がわかりませんし、bascom-avrというのは知らないので、こちらとしては「ドライバのチェックを」くらいしか言えません。悪しからず。