macosでavrの書き込み
BootloaderのないATTiny26Lにmacから書き込みをするためのメモ
就職2年目ぐらいの暇*1だった頃に実験装置を安く作ろうとして買い込んだATTiny26Lが出てきたので使えるように環境整備しましたよ。
ついでに使い方も書いておかないとぜったい忘れる。
前提
ATTinyでも最近のものとかTiny2313ぐらいからはBootloaderが使えるので、ArduinoIDEでかんたんに書き込みができるが、それ以前のものはBootloaderが使えないので、ArduinoIDEで書き込むことができない。そのため、旧来の方法で書き込む必要があるが、macosでやる場合の方法がまとめて書かれていないので、メモ程度ではあるが残すことにする。
環境
- MacBookPro(Late2020 M1)
- macOS Monterey
- MPLAB X IDE (for mac)
- XC8 コンパイラ
- Homebrew
- avrdude
- ArduinoIDE
- Arduino及び互換品
手順
- MPLAB X IDEをMicrochipのサイトからダウンロードする
- XC8コンパイラも同じく、Microchipのサイトからダウンロードする
- 1,2をインストールし、ソースコードを書いてコンパイルする。
このアイコンでHEXファイルが出力される。
どこに出力されたかはウィンドウ右下のコンソールログ画面を見ればわかる - Homebrewでavrdudeをインストールする
インストールできたらterminalでavrdudeと打ってみて、コマンドの説明が出ればOK - ArduinoIDEを起動し、Arduino(互換品)にArduino ISPを書き込む
File→スケッチ例→11.ArduinoISP→ArduinoISPこのとき、どこのシリアルポートを使ったかを控えておくと良い。
macの場合、シリアルポートは/devの中にcu.usbserial-hogeのようにして表示されている。差し込んだときのdmesgから探す方法もある。
結線方法については後述。*2 - ターミナルからavrdudeで書き込みを実行する。エラーが出なければOK
結線方法
- Arduinoの5V→AVRのVCC
- ArduinoのGND→AVRのGND
- ArduinoISPのMISO→AVRのMISO
- ArduinoISPのMOSI→AVRのMOSI
- ArduinoISPのSCK→AVRのSCK
- ArduinoISPで定義したResetピン→AVRのReset
TX/RXよろしくMISOとMOSIがクロスするわけではない。MISO同士、MOSI同士でつなぐ
デフォルトのArduinoISPのピン番号 → ATTiny26L
- MOSI D11 → 1番 MOSI
- MISO D12 → 2番 MISO
- SCK D13 → 3番 SCK
- Reset D10 → 10番 Reset
ArduinoISPのLEDの出力は無視しても良い
書き込み方(コマンド例)
% avrdude -c avrisp -P cu.usbserial-140 -b 19200 -p t26 -U flash:w:/Users/hoge/MPLABXProjects/Blinker.X/dist/default/production/Blinker.X.production.hex
詳細は
とか
を参考に。
ざっくり書くと、
-c avrisp 書き込み装置の宣言。ArduinoISPはAVRISP相当
-P /dev/cu.usbserial-140 今回のシリアルポート。/devがないとそんなポートはない、となってエラーで終了。
-b 19200 書き込みボーレート。ArduinoISPはこの数字。
-p t26 チップが何なのかを宣言。書き込み時にchip signetureと照らし合わせる。間違えていても一覧が出てくるので、それ見て直しても良い。
-U flash:w:/Users/hoge/MPLABXProjects/Blinker.X/dist/default/production/Blinker.X.production.hex hexファイル(MPLABでコンパイルしたバイナリ)をフラッシュメモリに書き込ませる
これでエラーがなくdoneってなってたらOK。