酒と薔薇の日々(その2)

好きなことだけ求めて生きるアスペ気味のINTJ人

ATtiny85開発ボード[ HW-260 ] の稼働までの準備(ブートローダ書き込み)

2024年04月10日 18時47分54秒 | マイコン(ESP32・Arduino等)
3月初旬AliExから到着したATtiny85チップと書き込みボード[ HW-260 ]の奮戦記

・このボードには初期化されていないチップを差し込んで使うことになる。
 そのためか、先にArduinoを使ってブートローダを書き込まないといけない。(ようだ)
 ブートローダ書き込まずこのボードを使うとエラーでどうにもならなかったが、書き込んだらすんなりと(USBケーブル抜き差しなしでも)書き込むことができた。

なのでこのメモ記事は
1 Arduinoを使ってブートローダを書き込む手順
2 ArduinoIDEから直接開発ボード[HW-260]上のATtiny85へプログラムを書き込む手順
の2段構成で作ってある。
ブートローダが書き込まれたチップは、次回からは「2」の手順だけで書き込むことが可能となる。
※あくまでも私の経験です。

なおここまででATtiny85のボードマネジャ追加作業は終わってるものとします。記事はこちら

ーーー購入した[ HW-260 ]開発ボードーーー

3月1日に届いていたが、病気で投げっぱだった。
よみやさんの動画を見て、この組み合わせなら同じように動くのでは?と期待して購入していた。(実は違った・・)

ーーーーーーーーーーーーーーーーーーーーー
  準備 Arduinoを書き込み機にする配線
ーーーーーーーーーーーーーーーーーーーーー


このように配線します。
実態配線
(よみやさんとは違って)コンデンサは付けなかった。

こちらにも解説が。シールド基盤が1枚あるから専用で作っておくのもありだな。

ーーーーーーーーーーーーーーーーーーーーー
  Step1 Arduinoを書き込み機にする
ーーーーーーーーーーーーーーーーーーーーー
スケッチ例」から「ArduinoISP」を選ぶ。
ボードは「ArduinoUno」を使ってます。
まずはArduinoを書き込み機に仕立て上げます。
「スケッチ例」ー「11.ArduinoISP」を選択
これで、Arduinoは書き込みプログラムを内蔵したマイコンになる。

ISPプログラムがArduinoに書き込まれた。

ーーーーーーーーーーーーーーーーーーーーー
  Step2 ブートローダの書き込み
ーーーーーーーーーーーーーーーーーーーーー
次は「ブートローダ」をATtiny85へ書き込むステップ
勝手な解釈なんだが、これを書き込まないとPCからの信号を受け取れないんだろう。
このことに気づけたのはこちらの動画(Thankyou)


現在ボードはUnoになっている。これをATtiny85に変える。
「ツール」「ボード:」「ATTinyCore」「ATtiny85(Micronuculeus / DigiSpark)を選択


画面は上のように詳細メニューに変化する。

クロックを(内臓)の16MHzに変更
書き込み装置を「Arduino as ISP」にする。
「ブートローダを書き込む」をクリック
なんか変なエラーが出た。(DLLが変だと?)
よくわからなかったがブートローダの書き込みを「Fresh Install(via ISP)」にしたら、なぜか書き込み出来た。(運がいいねぇテキトーにやった結果です)

ーーーーーーーーーーーーーーーーーーーーーーーー
  Step3 [ HW-260 ]開発ボードでの書き込み
ーーーーーーーーーーーーーーーーーーーーーーーー
ここでやっと、今回買った[ HW-260 ]開発ボードへチップを載せ変える。
ボードマネージャで「ATtiny85」を検索して選択
COMポートも指定(生チップではこれが表示されなかったのだ)
上記HCでCOMポートが見えているのは例外です。多分

何回かやった結果、COMが表示されなくて当たり前のようだ。
書き込む前にはUSBを抜いておかねばならない。
でコンパイル終了後にUSBケーブルを差すと自動的に発生したCOMポートへ接続し、書き込むようです。
思うに、初回抜き差しがいらなかったのはBLだけ存在してたから直に転送できたのであって、次回からは
1 電源投入してしばらくはUSB書き込みモードのスキャン
2 書き込み信号を検知できなかったら内臓プログラムの起動
そんな流れなんだろう。
専用ドライバをインストールしているから60秒以内にUSBが繋がったらデータ転送が始まる、といった行動ができるんだろうね。

するすると書き込みが進む!
はい、LEDピンが点滅しました!
下記は一般的な初期から入っているLチカソースです。
ちなみにボード上のLEDはPIN6に接続されているようです。

void setup() {
 // initialize digital pin LED_BUILTIN as an output.
 pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
 digitalWrite(LED_BUILTIN, HIGH); 
 delay(500);
 digitalWrite(LED_BUILTIN, LOW);
delay(500);
}