(番外) FTDI BitBang AVR-Writer

Kimio Kosaka

 


「外付けAVRライタ無しでBootloaderを書込む」のページの終わりの方に書いてある秋月電子通商のUSBシリアルl変換モジュール(AE-UM232R)を AVRライタにする件について,もっと詳しく知りたいとのメールを何件かいただいたので,このWebページを作成しました。

注意:ここで紹介する方法は Windows 配下でしか動作しません。


  1. 用意する電子部品類

    • USBシリアル変換モジュール AE-UM232R 950円(秋月)
    • セラミック発振子 コンデンサ内蔵 10〜20MHz程度 40円(秋月)
    • ブレッドボード EIC-801 250円(秋月)
    • ピン配列変換・延長ケーブルUSBタイプ(8本入) 140円(千石)
    • USBケーブル(A-miniB)

  2. 配線接続

    • スタンド・アローン・ライタ

      左図は実体配線図,右はブレッドボード上に配線した例です。
          
      発振子(3端子セラロック)は下の写真のようにピンヘッダにハンダ付けしてブレッドボードに差しています。

      ピンヘッダを付けないで,ブレッドボードの空きスペースに差して配線しても良いです。


    • ICSPライタ

      ピン配列変換・延長ケーブルを6本束ねてICSPケーブルを作ります。ピンヘッダにコネクタを差して固定し輪ゴムでバインドします。


      ICSPケーブルをブレッドボードに差します。ICSPコネクタのピン・アサインは右図のとおりです。

      ICSPライタだけを作る場合はブレッドボードは必要ありません。ICSPコネクタのリード線をAE-UM232Rに直接ハンダ付けします。



  3. ソフトウェアの準備

    • ダウンロード

      すz氏制作のFTDI BitBang AVRライタソフトavrdude-serjtagです。 serjtag-0.3.zip ←右クリックして保存

      ライタソフトのコンフィグ・ファイルです。 avrdude.conf ←右クリックして保存

      avrdude用のGUIラッパーです。 avrdude-GUI-1.0.5.zip ←右クリックして保存

      AE-UM232R(FT232R)のデバイスドライバです。 CDM_2.04.16_WHQL_Certified.zip ←右クリックして保存

    • インストール
      • avrdude-serjtag
        1. serjtag-0.3.zipを展開します。
        2. 生成されたserjtag-03フォルダの中のavrdude-serjtagフォルダをC:\Program Filesフォルダ配下へコピーした後, serjtag-03フォルダを丸ごと削除します。
        3. コピーしたavrdude-serjtagフォルダの中のsrcフォルダを削除します。
      • avrdude.conf
        1. ダウンロードしたavrdude.confをavrdude-serjtag\binaryフォルダにドラッグ&ドロップしavrdude.confを上書きします。
      • avrdude-GUI
        1. avrdude-GUI-1.0.5.zipを展開します。
        2. 生成されたavrdude-GUI-1.0.5フォルダをC:\Program Filesフォルダ配下に移動します。
          1. avrdude-GUI は.NET Framework (Version 2.0以上)を使います。
            .NET Framework がインストールされていないときは Microsoft Update などから.NET Framework 3.5をインストールします。
            (.NET Framework 3.5が動かない古いパソコンは.NET Framework 2.0をインストールします)
      • FT232Rドライバ
        1. CDM 202.04.14.zipを展開します。
        2. USB-Serial変換器AE-UM232Rをパソコンに接続します。
        3. 「新しいハードウエアの検出ウィザード」ダイアログが開くはずです。
        4. 生成されたCDM 202.04.14フォルダを指定してドライバをインストールします。

  4. 動作テスト

    ATmega168+16MHzを例に解説を進めます

    1. スタンド・アローン・ライタにしてATmega168を装着します。
    2. avrdude-GUI-1.0.5フォルダ配下のavrdude-GUI.exeを起動します。
    3. avrdude.exe File欄の[...]ボタンをクリックし,avrdude-serjtag\binaryフォルダ配下のavrdude.exeを指定します。
    4. Programmer欄の[▼]をクリックし,FT232R Synchronous BitBang (diecimila) を選択します。
    5. Deviceの[▼]をクリックし,ATmega168(m168)を選択します。
    6. Command Line Option欄に -P ft0 -B 4800 を記述します。

      下図は3〜6の設定が終わった状態です。(図はVer 1.0.4 ですが Ver. 1.0.5 でも同じです)


    7. Fuse欄の[Read]ボタンを押してヒューズビットが読み出せれば動作OKです。

      下図が表示される場合は動作不良です。ライタの配線等を厳重にチェックしてください。


    8. ATmega168の新品のチップは内部発振8MHz&8分周クロックのヒューズビットが設定され低速動作となっています。 ライタとのデータのやりとりも低速動作なので高速動作させるようにヒューズビットを書き換えて見ます。 具体的には,lFuseの値をATmega168新品デフォルトの62からE2に変更します。

      注意!!!

      以下の操作はATmega168に限ったモノです。他のチップの場合にはそのチップのデータシートをよく読んでヒューズビットの 値を決めてください。ヒューズビットの値を誤ると最悪の場合にはISPモードのライタでは読み書き不能になります。


    9. FuseのlFuseの欄にE2と記述して[Write]ボタンをクリックします。
      確認ダイアログが開くのでlFuse値がE2であることをを確認して[はい]をクリックします。

    10. Command Line Option欄の -B 4800 を削除して -P ft0 のみにします。
      ヒューズビットを読み出して見ます。エラー表示が出なければ内部8MHzクロック・分周なしで動作しています。
      次に外部発振子(8MHz以上)で動作するか確認します。

    11. FuseのlFuseの欄にFFと記述して[Write]ボタンをクリックします。
      確認ダイアログが開くのでlFuse値がFFで あることをを確認して[はい]をクリックします。
      ヒューズビットを読み出して見ます。エラー表示が出なければ外部クロックで動作しています。
      外部発振子(8MHz以上)が接続されていないとエラー表示され動作しません。

    12. ターミナル・モードでeFuseとLockビットを読んでみます。
      [Terminal]ボタンをクリックします。

      avrdude.exe: BitBang OK
      avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
      avrdude.exe: drain OK

       ft245r: bitclk 230400 -> ft baud 115200
      avrdude.exe: AVR device initialized and ready to accept instructions

      Reading | ################################################## | 100% 0.00s

      avrdude.exe: Device signature = 0x1e9406
      avrdude> r efuse [ENTER] ←eFuse の読み出し

      >>> r efuse
      0000 01                                                                     |.                |


      avrdude> r lock [ENTER] ← Lockビットの読み出し
      >>> r lock
      0000 3f                                                                     |?                |


      avrdude>

      ターミナル・モードの終了は閉じるボタン[×]をクリックします。


    13. プログラムを書きこみます。
      • Flash欄の[...]ボタンをクリックしてAVRに書き込むHEXファイルを指定します。
      • [Erase-Write-Verify]ボタンをクリックしてAVRに書き込みます。

  5. あとがき

    以上の方法でAVRを読み書きすることができるのですが, avrdudeの細かな操作やコマンド・ライン・オプション等については ここのマニュアルを参照してください。avrdude-serjtagのコマンドラインオプションはserjtag拡張によりオリジナルとは異なっている部分があるようです。

    外付けAVRライタ無しでBootloaderを書込む」 にも書いていますが,USBシリアル変換モジュールをAVRライタにする方法は, すz氏の『FT245R/FT232R で avrdude』の研究成果を引用しております。 すz氏のサイトへのリンクを下に掲載しておきましたので興味ある方は訪問して見てください。

    avrdude-GUI(yuki-lab.jp Version)が1.0.5にバージョンアップされていましたので本文修正しました。(eFuseが読めるようになりました)


    ※ 有用なソフトを開発された,すz さん yuki さんに感謝します。 ※


もどる]      [Arduino Diecimilaを使う Top

update 2010.01.04
upload 2008.12.31
Creative Commons License