はじめに

すzさんがavrdudeをSynchronous BitBang モードのFT245R/FT232Rをライタとして使えるよう改良されたのが始まりです。当初は本格的ライタというよりも補助的ライタとしての意味合いが強く、当方も“AVRライタHIDaspxの製作”でブログに記述してますが、初めてHIDaspxライタを自作した時にATTiny2313にファームを書くために鳥卵問題を解決するライタとして利用しました。
現在は、senshuさんがavrdudeの改良に加わりBitbangライタは市販ライタと比べても遜色がない高性能なライタになってます。

そもそもBitBangライタとは

BitBangライタはハードウェアそのものにはライタの機能はなく、ソフトウェアでライタを実現してます。
2011年7月現在、Bitbangライタを実現するソフトは、すzさん版のavrdudeとsenshuさん版のavrdudeの2種類です。

両ソフトはライタソフトしての性能はほぼ一緒であるが、以下のような特徴があります。

  • すzさん版のavrdude => Windows以外にもLinuxやMacintoshでも動くようだ
  • senshuさん版のavrdude=>GUIインターフェースがつきWindowsユーザには非常に使いやすい

それぞれの環境に合わせてライタソフトを選択してください。

ライタ回路

BitBangライタの回路例と実装例は以下の通り。

BitBangライタの回路

BitBangライタの回路

このライタは、秋月のAE-UM232Rモジュールを用います。AVRライタ機能と共にArduino ProのUSBシリアルアダプタの機能も有してます。

自作BitBangライタ

自作BitBangライタ

回路の設計・BitBangライタ製作後、avrdudeの改良でLEDをRTSに接続するとライタ状態が表示できるようになった。LEDはライタの機能には影響はないが情報が増えるので、新規に作られる方は回路とボードを変更しLEDを追加してください。

Eagle関係一式ファイルを公開します。必要な方はダウンロードしてください。
USBシリアルアダプタEagle関係ファイル"USBシリアルアダプタEagle関係ファイル"をダウンロード

上記は一例ですが、AE-UM232RモジュールをBitBangライタにするには接続は簡単です。
以下の表に従い220Ωぐらいの電流制限抵抗を介して接続してください。
avrdudeでは色々な接続パターンもサポートしてる様子ですが、ここではarduino diecimila互換の接続です。

ライタ端子 AE-UM232Rのピン
Reset RI
VCC VIO
GND GND
MOSI DCD
MISO CTS
SCK DSR

この接続を守ればいいだけですから、ユニバーサル基板で作っても小一時間ほどでライタは完成できるでしょう。

書き込みソフトavrdudeの入手

ファームウェアやソフトは、千秋ゼミの新掲示版の「評価用」アーカイブ置き場にあります。

ファームや書き込みアプリケーションは、現段階は評価版であるため登録ユーザのみの公開となってます。興味を持たれた方はユーザ登録して評価(フィードバック)をしましょう。

avrdudeのインストール

avrdudeを入手したら適当な場所に展開し、setupバッチファイルにてインストールしてください。
インストールフォルダには avrdude本体とavrdudeをグラフィカルに操作するavrdude-GUIとともにインストールされます。
pic18spxライタソフト、picspxはインストールされないようなので必要があればコピーしてください。

avrdude-GUIの操作

ここではavrdude-GUIの簡単な操作を説明します。

初期設定

インストールしたavrdude-GUIをダブルクリックして起動します。

まずは初期設定です。

avrdude-GUIの初期設定

avrdude-GUIの初期設定

  1. ①は自動的にavrdude.exeが選択されてる思います。
  2. ②は初期状態では空白です。Bitbangライタには(diecimila) FT232 Sync Bitbangを選択してください。

初期設定はこれで終わり。

ライタとターゲットの接続

BitBangライタの電源(VCC)はAVRISP-mkIIのようにターゲットから供給するのが推奨です。
そこで、以下のようにAE-UM232Rモジュールのジャンパを設定しターゲットと接続してください。

ターゲットから電源供給は間違い

ターゲットから電源供給は間違い

ライタの電源(VCC)はターゲットから供給は間違いの様です。
正しいターゲットとの接続は以下の通り。

FT232RLには2つの電源端子 VCC と VCCIO があります。
USB受信部の電源端子VCCはUSBバスにつなぎ、IO部の電源端子VCCIOをターゲットのVCCにつなぎます。
これによってターゲットのVCCが変わっても電位差のない信号をターゲットに送ることができます。

この条件を満たすためには、AE-UM232R のジャンパを以下の様にすれば良さそうです。

AE-UM232R のジャンパ 状態
JP1 オープン
JP2 ショート
正しいのライタ接続

正しいのライタ接続

このように接続するとターゲットの電源電圧が低くとも動作しますし、何よりターゲットと電位差が無い状況で書き込むことができます。

書き込み

秋月の互換基板のArduinoにブートローダを書き込んでみます。

ライタとターゲットの接続がOKかどうかReadボタンをクリックする。
問題はない様子。

FUZEの読み込み

FUZEの読み込み

ブートローダをライタにドロップ、さらにFuzeなどの値を設定して書き込み。

ブートローダの書き込み

ブートローダの書き込み

あとがき

普段はHIDaspやUSBaspを使ってて不満が無かったのでBitBangライタを利用してなかった、改めて使用してみると安定してるしHIDaspやUSBaspの代わりとして十分に使えるのが分かった。
元来avrdudeは多様なライタをサポートしてたが、さらにBitBangライタもサポートしたのでさらに高機能になっている。
avrdude-GUIも、かなり作り込まれてて便利な機能が目白押し、既にAE-UM232Rモジュールを持っている方なら一押しのAVRライタです。

参考先

BitBangライタの自作そしてavrdudeに興味を持たれた方は、是非下記のページを訪れてさらに詳しい情報を入手してください。

補足

2011/06/13追加

ターゲットの電源がCR2032など低電圧の場合、ライタの電源(VCC)をターゲットから供給するとBitBangライタを認識しない事例に遭遇した。USBの信号の電圧が規格外の低さになってるのが理由だと推測されます。ターゲットの電圧は3.3V~5Vの間なら電源は供給できるが、それ以外の時はUSBから電源を供給するなど工夫が必要な様子。

2011/06/14修正

ライタ電源をターゲットから供給するのは、どうも間違いのようだ、修正しました。
senshuさんからご指摘をいただきました。ありがとうございます。

2011/06/30修正

私事で申し訳ございません。ネットをフォローする時間が取れそうになくなってきました。
当方でavrdedu-GUIのソースを公開してたのですが、最新を提供できなくなる可能性があり公開を停止します。
代わりにshensuさんのサイトでの検索方法を記述しました。今後はshensuさんのサイトでソースをダウンロードしてください。

2011/07/13修正

ライタソフトavrdudeについて少し修正しました。

2011/08/20修正

千秋ゼミのサイトにて、評価用ファイル置き場が設置されavrdude関連のファイルがまとめて公開されるようになったので、ダウンロード先の記述を修正した。

2011/08/21修正

千秋ゼミのサイトの評価用ファイル置き場に置かれたファイルが、今日見るとダウンロードできなくなってる。
折角所在場所を書いたのだが訂正が必要になりました。
どうしてもavrdude関連ファイルが欲しい人はsenshuさんに聞いてください。

2011/08/23修正

千秋ゼミのサイトの評価用ファイル置き場が再開されました。