MacPortsでavrdude-5.11.1を放り込めるようにして、Tiny10を焼いてみた


最近、秋月電子通商さんで、超小型、低消費電力のAVRマイコンのATtiny10の取り扱いが始まりました。

その小ささといったら、こんな感じです。隣にサイズ比較用にフリスクを1粒置いてみました。ちっちゃくて面白いので、使うかどうかはさておき、色々と興味を持っていじってみました。

そんなATtinyですが、6pinですので、従来のAVRのISP(In-System Programming)とは異なる方法(プロトコル)、TPIで焼く必要があります。
こういった事も、Atmel社の純正のISPプログラマを持っていて、Windowsを使うとサクっと書けちゃうのですが、せっかくだからMacでやってみたいものです。
そんなワケで、avrdudeとFTDI bitbangと呼ばれる方法でTiny10に書き込みができるようにしてみました。

要るもの

ATtiny10 (秋月)
FT232RL USBシリアル変換モジュール(秋月)
Macなマシン(Linuxも可だと思います)
USBケーブル、ブレッドボード、ジャンパワイヤ

配線

要るものが揃ったら、あとは配線です。
スクリーンショット 2011-10-02 14.58.11
こんな感じにがしがしと配線します。
私はこんな風に組みました。

私は基板の裏面にSMDを貼り付けて何か作ろうと思ったので、tiny10の基板は裏返しになっています。なので配線を見るときには注意してください。

ソフトウェア

avrdudeで書き込みを行いますが、新しいavrdudeでなければTPIでの書き込みに対応していません。
MacPortsで一発でインストールできるようにしましたが、Patchを送ったところなので、まだ sudo port selfupdate しても落ちてこないかもしれません。

とりあえず、ここにファイルを置いておきます。portfile-avrdude-5.11.1.tar.gz

$ cd /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/cross/
$ sudo mv avrdude avrdude.orig
$ sudo tar xvzf ~/Downloads/portfile-avrdude-5.11.1.tar.gz

といった具合にすれば、avrdudeだけ差し替えることができます。

既にMacPortsでPatchを採用してもらえたので、上記の手順は不要になりました。
sudo port selfupdateしていただければ。

$ port search avrdude
avrdude @5.11.1 (cross, devel)
an Atmel AVR MCU programmer

と5.11.1が表示されれば成功ですので、後はport installしてゴリっと放り込むだけです。

$ sudo port install avrdude +serjtag

として、variantsを付けてインストールしてやってください。

avrdudeでFTDI bitbangする方法

私は、いちばんこの部分に手こずりました(笑) このエントリはこれをメモっておくために書かれたと言っても過言ではありません^^;
まず、大抵の人はMacに通常のFTDIのドライバをインストールしていると思いますので、このドライバを一時的に無効にします。

$ sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext

すると、Macに接続されたFTDIをbitbangモードでドライブすることができますので、

$ avrdude -p t10 -P ft0 -c ft232r -v r

などとすると、tiny10と通信することができます。 目的のhexファイルを書き込み終えたら、

$ sudo kextload   /System/Library/Extensions/FTDIUSBSerialDriver.kext

として、通常のFTDIドライバをロードしなおしておきましょう。

まとめ

動いちゃうとたいしたことないのですが、avrdudeのoptionにはいつも悩まされます。
このblogは私のメモなので、ついでに純正プログラマ(AVRISPmkII)とUSBtinyの場合のoptionも書いておきます。

$ avrdude -p m32u4 -P usb -c avrispmkII -v r
$ avrdude -p m32u4 -P usb -c usbtiny -v r

この例では、tiny10ではなく、先日Leonardモドキを作って遊んでみたときに使ったATmega32U4を使おうとしています。

ついでに秋月のAE-UM232Rを使って、FTDI BitBangでflash焼くときについても。

$ avrdude  -P ft0 -B 4800 -c duemilanove -p m328p -t
avrdude> erase
avrdude> w efuse 0 0x05
avrdude> w hfuse 0 0xDA
avrdude> w lfuse 0 0xE2
avrdude> quit
$ avrdude  -P ft0 -c duemilanove -p m328p -U flash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex
$ avrdude  -P ft0 -c duemilanove -p m328p -t
avrdude> w lock 0 0x0F
avrdude> quit

この手順では、328Pを内蔵RC発振回路で8MHz駆動のArduinoモドキの設定をしています。