AVRに関してはまだ初心者なので間違った記述もあるかもしれないです
¥4000くらいする正規品のArduino UNOにずっと書き込み機してもらっているのも申し訳ないなと
制作にあたって何らかのISP書き込み機が必要です
AVR ISP ?
Arduinoでは意識しないが生のAVRにプログラム等を焼くには普通は書き込み機が必要でそれがISP
- 公式が出してる書き込み機、
- Arduinoにスケッチを書き込んで機能するArduino ISP、
- tinyAVRを使って作るUSBtiny系
- tiny2313を使うUSBtinyISP
- tiny45を使う多機能なLittle Wire
- tiny44を使うFabISP
- FTDIのシリアル変換チップのbitbang
いろいろと種類があるが、今回はATTiny85の代打にすることを目的に買ったATTiny44が手元にあったのでこれを使ったUSBtiny系のFabISPを作る
ATTiny85(45も)で「Little Wire」を作る手もあったがリセットピンのfuseを焼く勇気がなかったのでこちらは見送ることにした
制作にあたってこちらを参考にさせていただいた
MITのFabLabという活動の一環のよう
作る
部品リスト
- USB A オス ¥50
- E基板 ¥25
- ATTiny ¥190
- 3.3v ツェナーダイオード ¥5 x2
- DIP14 ソケット ¥10
- 20MHz セラミック発振子 ¥10
- 抵抗 47Ω x2, 1.5kΩ x1 ¥3
- ピンソケット 8穴分 ¥15
合計 ¥313
回路
ダンピング抵抗とパスコンの値は手持ちにあったというだけです
セラミック発振子は一応極性があるらしく、データシートをよく確認したほうがいいです
ジャンパはt44にプログラムを書き込むときに閉じて普段は開けた状態で使いますので適当でも大丈夫
t44のUSB側の抵抗とツェナーは前作ったDigispark互換と同じなのでいつもの限界実装
ファームウェア
ファームウェアをダウンロードしてビルドする
今回はwindows11のubuntu wslでビルドした
windows側はavrdudeを、ubuntu側は事前にavr-gccとmakeをインストールしてある
していない場合は
scoop install avrdude
wsl apt install gcc-avr avr-libc
zipを解凍したらMakeFileのあるディレクトリまで進んで右クリックからターミナルを開いて
wsl make hex
参考元ではMakeFileを編集しているが今回はwslでビルドしてwindowsで書き込むので必要ない
ビルドができたら書き込み用のジャンパを適当な線で繋いだら手持ちのISPを同じ名前のピン同士で繋ぐ
今回はArduino ISPを使った
main.hexができるのでこれをヒューズと一緒に書き込む
avrdude -p t44 -c arduino -P COM1 -U hfuse:w:0xdf:m -U lfuse:w:0xff:m -U efuse:w:0xff:m -U flash:w:main.hex:i
ドライバのインストール(windowsのみ)
AdafruitのGitHubからexeをダウンロードする
開くと何をインストールするか聞かれるのでUSBtinyが書かれているチェックボックス(2番目)のみ残してチェックを外してインストールする
使い方
USBtinyはCOMポートとして認識されない
恐らくmicronucleusと同じ感じ
Arduino IDEからなら書き込み装置にUSBtinyの項目があるはず
avrdudeなら-cオプションにusbtinyを入れればok
-Pにポートを指定する必要はない
おしまい
Fサイズ基板に収まらなかったのが少々悔しい
がそれでもArduino UNOよりずっと小さいので
しばらく筆箱につっこんでおきたい