ブログ

2019年6月までに結婚したいので婚活始めましたの記録。

macosでavrの書き込み

BootloaderのないATTiny26Lにmacから書き込みをするためのメモ

就職2年目ぐらいの暇*1だった頃に実験装置を安く作ろうとして買い込んだATTiny26Lが出てきたので使えるように環境整備しましたよ。

ついでに使い方も書いておかないとぜったい忘れる。

前提

ATTinyでも最近のものとかTiny2313ぐらいからはBootloaderが使えるので、ArduinoIDEでかんたんに書き込みができるが、それ以前のものはBootloaderが使えないので、ArduinoIDEで書き込むことができない。そのため、旧来の方法で書き込む必要があるが、macosでやる場合の方法がまとめて書かれていないので、メモ程度ではあるが残すことにする。

環境

手順

  1. MPLAB X IDEMicrochipのサイトからダウンロードする
  2. XC8コンパイラも同じく、Microchipのサイトからダウンロードする
  3. 1,2をインストールし、ソースコードを書いてコンパイルする。

    このアイコンでHEXファイルが出力される。
    どこに出力されたかはウィンドウ右下のコンソールログ画面を見ればわかる
  4. Homebrewでavrdudeをインストールする
    インストールできたらterminalでavrdudeと打ってみて、コマンドの説明が出ればOK
  5. ArduinoIDEを起動し、Arduino(互換品)にArduino ISPを書き込む
    File→スケッチ例→11.ArduinoISP→ArduinoISP

    このとき、どこのシリアルポートを使ったかを控えておくと良い。
    macの場合、シリアルポートは/devの中にcu.usbserial-hogeのようにして表示されている。差し込んだときのdmesgから探す方法もある。

     

    ArduinoISPを書き込んだArduinoと対象のAVR(今回はATTiny26L)を結線する。
    結線方法については後述*2
  6. ターミナルから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 

詳細は

synapse.kyoto

とか

kemarin-tech.blog.jp

を参考に。

ざっくり書くと、

-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。

 

*1:そこできちんと上司の指示を聞いてなにかするとか、若者よそ者馬鹿者を活かしてなにかしていれば出世できたんだろうが、好き勝手なことして遊んでたので転職した今でもペーペーですよ

*2:
本来であればATtiny26Lを組み込んだシステムにISPを設けてAVRISPを接続する