Last Updated on 2020年8月15日 by kabekin
AVRマイコンにプログラムが書込みできるように、書込み方法を調べてみました。
ATMega328を扱うには問題なくできるのですが、ATtiny85になると色々うまくいきません・・・
ネットで調べると皆さん手軽にArduinoを楽しんでいるみたいですが、思った以上に難しい印象です
純正のICE&ライターならトラブルも少ないかとATMEL-ICE BASICを購入・・
しかし、ATtiny85を使うには書込みすらできない状況です^^;;;
ネットで調べても英語情報しかなく、正しく情報が集められていませんが、ブートローダが書込みされたAVRにプログラムの転送は可能の情報がたくさんヒットします。
確かにブートプログラム書込済みのArduino化されたAVRにプログラム転送は問題なくできます。
しかし、ブートローダの書込みは出来ない模様・・・
ATMELの純正ICEなので、使うときの制限は少ないと勝手に思い込んでいましたが、
AVR素人の私にはまったく活用出来ませんでした・・・
いろいろ調べるとArduinoが難しい訳ではなく、ATMEL-ICEに癖があるようです。
Arduinoを使ったプログラム書込機は情報が多いので、ArduinoUNOを購入。
と、いうわけでArduinoUNOを使ってATtiny85に書込みできるようにしてみます。
次回、環境を作る時のために、手順をメモ・・・
ArduinoUNOを使ったATtiny85へのプログラム書込み
①Arduono UNOをプログラム書込機にする
1-1) Arduino UNOをUSBでパソコンに接続。
1-2) AruduinoIDEを起動し「ファイル」メニューの「スケッチ例」から「11 ArudinoISP」を開く
(動作確認したのはArduino IDE 1.8.13)
1-3) 設定
ボードの設定
「ツール」メニューから「ボード」で 「Arduino AVR Boards]から「Arduino UNO」を選択。
シリアルポートの設定
「ツール」メニューから「シリアルポート」で ArduinoUNOのUSBシリアル変換機のポートを選択
(COM9 Arduino UNO)の選択肢になっていた)
ビルドと書込み
「スケッチ」メニューから「 検証・コンパイル」でコンパイルしてコンパイルエラーがないことを確認。
「スケッチ」メニューから「 マイコンボードに書き込む」でArduinoUNOのAVRプログラムを書き換え一度電源を切ってUSBを接続。
②Arduino IDEでATtiny85を扱えるようにする
標準のままではATtiny85はマイコンボードに選択肢が無いようでで追加しないとダメだそうです。
2-1)「ファイル」メニューから「環境設定」で環境設定画面を開く。
2-2) 環境設定画面の「追加のボードマネージャURL」に
「http://drazzy.com/package_drazzy.com_index.json」をセットして「OK」
2-3) 「ツール」メニューの「ボード」で「ボードマネージャ」を選択
2-4) ボードマネージャのリストから「ATTinycore」を見つけてインストール
(動作確認したのは1.4.0)
③ATtiny85のボード設定とコード編集
3-1) 「ツール」メニューで「ATTinyCore」の「ATTiny25/45/85 (No Bootloader)」を選択。
3-2) ChipをATtint85、Clockを8MHz (Internal)にセット
3-3) 書き込み装置をAruduino as ISP(ATTinyCore)にセット
④ArduinoUNOとATtiny85を接続
ATTiny85用にアダプタ基板を作りました。
接続はATMEL-ICEと同じ6PのICSP?と同じピンアサインで作成しました。
接続はこんな感じ
UNO ATtiny85 ICSP 13 --- 7(SCLK) --- 3(SCLK) 12 --- 6(MISO) --- 1(MISO) 11 --- 5(MOSI) --- 4(MOSI) 10 --- 1(RESET) -- 5(RESET) GND--- 4(GND)------6(GND) VCC----8(VCC)------2(VCC)
基板はこんな感じでI/O端子と単独で動作させるための電源コネクタを付けました。
6PケーブルでArduino UNOと接続。書き込み時はArduinoUNOから電源を供給します。
書き込み時はSCLK, MISO, MOSIに付いている負荷は外しておいた方が安定して書込みできるそうです。
写真はLEDが付いたままですが、正常に書込みできています。
⑤ソフトの書込み
「スケッチ」メニューから「 書き込み装置を使って書込み」でビルド&書き込を実行。
書込み後、ATtiny85のリセットがかかりプログラムがスタート
ArduinoIDEを使いArduinoUNO経由でプログラムを書き込むには上記の方法でいいのですが、Atmel Studio7で生成したhexファイルやelfファイルを直接書き込む方法はいまのところ不明・・・
(AtmelStudio7のプログラム書込み機能のような画面はArduinoIDEでは見当たりません)
ATMEL-ICEの使い方もわからないことだらけ・・・^^;;;
慣れるともう少し扱えるようにあるとは思いながらも苦手意識が取れないAVRマイコンです。
そんなATtiny85へプログラム書込アダプタ作成の記録。
yuyamaです。
Arduinoで実際に書き込みを行っているのはC:\Program Files (x86)\Arduino\hardware\tools\avr\bin中にあるavrdude.exeですが、こちら(http://mikecat.usamimi.info/arduino_gethex/)にavrdude.exeの引数を直接書き換えてhexファイルを書き込む方法が紹介されていますが、これでどうでしょうかね。(私は試していませんが…)
情報ありがとうございます^^
avrdude.exeの情報を調べると色々出てきますね。
早速試してみたいと思います。
ネットで調べると、皆さん普通にブートローダを書き込んでArduino化してAVRを楽しんでおられるようですが、私は何かとうまくいきません・・・
慣れれば手軽に扱えると思うのですが、今は手探り状態です^^;;;
ブートローダ書込み済みのMega328Pを使うには何も問題が起こらないので、慣れるまでは難しいことをせずに苦手意識を払拭したいと思います^^
yuyamaです。
今日、実際に試してみました。私が使用しているのはAtmel Studio 6.2ですが、多分7でも同様ではないでしょうか。もう既にArduinoがArduinoISPになっているわけですから、あとはAtmel Studioの外部ツールにArduinoISPを登録するだけです。登録するとToolメニュー中に「ArduinoISP」が現れますので、ビルド後にそれをクリックすれば書き込まれます。
あらかじめATtiny85にブートローダーを書き込んでおく必要はありません。
(実際には、細かいところで引っかかりそうな個所がありますので、手順の説明を私のブログに上げる予定です。見ていただければと思います。)
情報を頂いたavrdude.exeを使いWindows10のコマンドプロンプトから無事にhexファイルの書込みができました^^
avrdude.exeでも十分に使えそうですが、統合環境からの書込みだと便利だと思うのでブログを参考にチャレンジしたいと思います。