Senshu LAB
サイト内検索: AND検索 OR検索  


Counter: 24023, today: 3, yesterday: 7

このページをご覧の方へ (2009-12-07)

追記

千秋ゼミでは、AVRライタとしてHIDaspx(2008年10月末に公開開始)を薦めます。
以下で紹介している2種類のライタは、HIDaspxの公開以前に推薦していたものですが、
2009年以降は保守・改良を行っておりません。なお、書き込み用のソフト(hidspx)は
継続して改良を行っていますので、avrspxに代えてhidspxをご利用ください。

HIDaspxのページへ移動

AVRライタの作り方(2種類) (2007-07-17〜)

多くのAVRライタを実際に製作し、市販の製品を含め、使い勝手の良いものは何かを
考えてみました。
その結果、avrsp(あるいはavrspx)を利用可能な2種類のライタを推薦したいと思います。
これらは安価に自作できるだけでなく、市販品に勝るとも劣らない使い勝手です。

ただし、今まではハードウェアを自作できる人だけが利用可能でした。
今回、wSNakさんから専用のプリント基板が入手できるようになったことから、今後は
利用者の増加を予想しています。

COM-SPIブリッジライタ (USB変換ケーブルOK)

SPIブリッジが動作する基板の例

zoom

RS232C接続のAVRライタについてはmemo/AVRSPのページを参照してください。

ICソケット式のAVRライタの製作

このボードを利用して、ゼロプレッシャーソケット付きの AVR書込み器(AVR/adapter)を作ってみました。入手したAVRの受入検査?に 使えます。開発用ではなく、複数の書込み済みのAVRを用意する必要のある場合には、 一台あると便利です。

オリジナル(ChaN氏作)との相違点(2007年12月18日)

書込み用のISPコネクタを利用してファームウェア更新可能にするため、MISO, MOSI の
信号を入れ替えた回路になっています。これによって、書込みケーブルを利用してファー
ムウェア更新ができます。また、これ以外にも入手容易なセラロックを採用したことか
ら、このハードに 適合するHEXファイルが必要になります。ダウンロードのページで関
連ファイルを公開しておりますので、ご利用ください。
また、ChaN氏により、2007年12月にATtiny2313に内蔵しているUSIを利用して処理の高
速化を実現する改良が行われました。SYSCLKとBPSの値を修正することで利用可能なこ
とを確認しましたが、MISO, MOSI の信号線を入れ替える必要があります。
基板のパターンを修正したくない方は、ケーブル側でこの2本の信号線を入れ替えること
で従来とおりの利用が可能ですが、avrxtoolsの入れ替えも必要ですのでご注意ください。
(12/18版では、ファームを最新にしなくとも従来のライタが利用可能ですが、速度の
向上はありません。PIC24などを利用する場合には、Tiny2313を用いて、R4以降のファー
ムウェアをご利用ください)

  • 7/20に製作し、S2313, mega48で動作確認しました。基板サイズは知っていましたが、実際に 組み立ててみると部品がぎっしりでちょっと驚きました。 -- senshu 2007-07-21 (土) 00:40:44
  • 赤色LEDは、1kΩの負荷抵抗では明るすぎです。3.3kΩ程度に交換するとちょうど良い明るさになるようです。 -- senshu 2007-07-27 (金) 16:53:35
  • ChaNさんの2007.12改良版のファームを書き込みました。速度が速くなるとともにPIC24にアダプタで使える便利なものとなりました。 -- kuman? 2007-12-20 (木) 10:14:35
  • 信号線は自作ケーブルのターゲット側でmiso,mosiを入れ替えています。ボードを変更していないので他のライタのケーブル(2×3p)がそのままでファームの書き換えができます。 -- kuman? 2007-12-20 (木) 10:19:49
  • kumanさん、ご報告をありがとうございます。私も6P(シングル)のMISO,MOSIの信号を入れ替えたケーブルを使って書き込み、Atmel仕様のコネクタはファーム更新専用に使うのがベストと考えています。そうすればハードの修正は一切不要です。 -- senshu 2007-12-20 (木) 10:53:44

USBasp(USB接続のAVRライタ)

  1. Thomas Fischl氏が設計したAVR用USB接続で 動作するISP(In System Programmer)。
    1. 2007-07-23 最新ファームウェア、 不具合が修正されている模様ですが、USBapxでは一年前にMega128での不具合は解決済です。
  2. AVR(Mega48やMega8)と数個の受動の部品で構成され、多数のプラットホーム (Linux, MAC OS X, Windows)上で利用可能。
  3. USB I/F用のICを使わず、一個のAVRでUSBのデコードとAVRの読み書きを実現。
  4. 特殊部品不要で、比較的容易に作ることができ、書込みも高速(5kB/秒程度)。
  5. 1.5MHz以下で動作する低速のマイコンにも対応。

USBaspが動作する基板の例

zoom

なお、上部のナイロンコネクタとタクトスイッチはUSBasp専用に使う場合には実装不要
です。また、ATMEL仕様の2x3(6P)ケーブル用ヘッダの入手が難しい点が問題となります。
これについては、wsnak#172基板では、10Pのケーブルコネクタも挿せる様にエリヤを
確保しています。このページ(memo/ATMEL-6P)を参考に工夫してください。

両面スルーホール(シルク印刷あり)の基板です。説明に沿って丁寧にハンダ付けを
行えば、特に難しい点はなく製作できます。部品が揃っていて、ある程度の経験者
なら1時間程度で製作できると思います。

余裕のあるレイアウトですから、WSN173ボードよりも楽に作れる気がします。
私は5台を3時間弱で製作できました。
電解コンデンサやICソケット、LEDなどの極性を持った部品の向きに注意し、
またソケット類が浮かないように実装することが肝心です。

製作コストの検討

比較的一般的な部品ですから手元にあるよという方も多いかもしれませんが、
新規に購入すると仮定し、2種類のAVRライタの製作コストを見積もって見ます。

電子部品は購入先や購入数量によって大きく変動します。部品の入手に必要な
送料・手数料や消費税は考慮していませんので、概算で、WSN172が1,500円程度、
WSN173が1,000円程度となります。WSN172ボードが500円ほど高価ですが、この価
格の差はボードとAVRマイコンの価格差が支配的です。この2つで約400円の差が
生じています。しかし、利用する上で必要となるケーブルは、USBの方が安く、
USB→RS232C変換ケーブルの購入が新規に必要な場合には関係が逆転します。

  • WSN172の場合
    品名単価数量合計
    WSN172ボード5001500
    ATmega882501250
    ICソケット50150
    抵抗器31133
    USB-Bコネクタ60160
    LED5210
    コンデンサ10440
    電解コンデンサ20120
    水晶発振子(12MHz)50150
    ピンヘッダ50150
    ナイロンコネクタ1001100
    ポリスイッチ50150
    ツェナーダイオード25250
    ジャンパープラグ10220
    合計1272
  • WSN185の場合
    品名単価数量合計
    WSN185ボード4001400
    ATmega882501250
    ICソケット50150
    抵抗器21122
    USB-mini Bコネクタ50150
    LED5210
    コンデンサ10440
    電解コンデンサ20120
    水晶発振子(12MHz)50150
    ピンヘッダ50150
    ツェナーダイオード25250
    ジャンパープラグ10120
    合計1002
  • WSN173の場合
    品名単価数量合計
    WSN173ボード3001300
    9P D-SUBコネクタ1001100
    ATtiny2313(秋月電子)1001100
    74HC0460160
    ICソケット30260
    抵抗器21530
    LED10220
    コンデンサ10330
    セラロック(9.22MHz)14040
    ピンヘッダ1001100
    ジャンパープラグ10220
    合計860

実際の地方在住者(私も含めて)にとっての問題点は、数百円の差にあるのではなく、
いくつかの販売先から部品購入に必要なコスト(手数料や送料)だと思います。
一台だけ作ることを考えると、複数の販社から部品入手にかかるコストは、確実に
この金額を超えます。

どちらのボードを選ぶべきか

考えてみれば、2つのボードの目的は同じであり、類似のコネクタやLEDを実装して
います。それ程の違いが無いのも当然かもしれません。どちらを採用するかは、
人の価値判断に依ることになります。

2007-12に、SPIブリッジ用のファームウエアR4が登場しました。
これは非常に魅力的な更新です。PIC24/dsPIC33にも書き込みが可能になることや、
AVRへの書き込みも数倍の高速化が実現されています。これにより、USBasp(WSN172)
よりも動作が高速になります。(2008-01-02 追記)

ただし、WSN172は3.0V以下の動作はできません。また、現時点ではファームウェア
書き込み済みAVRも販売されてはいませんので、WSN173を持つ意味はあります。
ファームウェア更新にはもう一台のAVRライタが必要になりますから、予備として
用意しておくのも良いでしょう。

書込み確認一覧

ここで紹介する2種類のAVRライタの動作検証結果を以下に示します。 手元にあったAVRマイコンで動作確認を行いました。ここに示したもの以外が 使えないわけではありませんので、誤解の無いようにお願いいたします。

ChaN氏のWebサイトAVRライタの仕様 ISPアダプタの欄をご覧ください。

#172 USBasp AVRライタの結果(avrspxで確認)

  • S2313, S4433, tiny2313, tiny26L, S8515, mega16L, mega48, mega168
  • 不具合
    • 現在のところ、該当なし

#173 COM-SPIブリッジAVRライタの結果(avrsp, avrspxで確認)

  • 正常動作
    • S2313, S4433, tiny2313, tiny26L, S8515, mega16L, mega48, mega88, mega168
  • 不具合
    • ATmega16L ... "Device connection failed."と表示され、認識不可

「AVRチップを認識できない」問題の解決方法(2007-08-21)

「ATmega16Lを認識できないことがある」と書きましたが、これはISP関連のピンに 何らかの負荷が接続されている時に発生しやすいことが分かりました。 直列に挿入されている抵抗値を変更(全て100Ω)したところ、STK500上のソケットでも 正常に動作します。(2007-07-25) 「#172で書き込みOK、#173でNG」という現象は、AVRとライタ基板内に実装した直列抵抗の 値の違いに起因しているようです。これに対する解決策をAVR/writer_FAQにまとめま したので、この問題が発生した場合には参考にしてください。

==== 動作確認を行った方へ(お願い)====

サポートするチップリストを充実させたいと思いますが、AVRには多くの種類があり、 一個人では全ての評価は不可能です。利用者からの報告があれば、リストに追加したいと 考えます。「うまくいかなかった」という報告も意味あるものです。不具合の報告は、 情報が分散しないようにAVR/writer_FAQにお書きください。ぜひ、ご協力をお願いいたします。 書込み動作を確認したAVRチップ名(動作クロックや利用環境も簡単にお書きください)

  • 7/20に基板が到着し、WSN172基板を5台製作しました。全て問題無く動作しています。 -- senshu 2007-07-21 (土) 00:41:35
  • 大阪在住の方(二名)にWSN172基板の評価をお願いしましたが、問題なく利用できた、とのことです。 -- senshu 2007-07-25 (水) 21:06:19

なお、不具合についてはAVR/writer_FAQのページに書き込みをお願いします。 たった一件の不具合を解決するために、相当数のやり取りが必要になることが予想されます。 このページは、そうしたやり取りによる混乱を防ぐため、動作報告に限定したいと考えます。

USBaspを作るには

ハードウェア

自分で一からユニバーサル基板を使って製作することも可能ですが、 製作に慣れた方でも数時間は必要です。 2007年7月下旬に、wsnakの#172基板 が、@500円で入手できるようになりました。USBaspに限らずATmega48/88/168の評価用に も利用できますから、複数枚の入手をお勧めします。

[注意]
ファームウェア書き込み済みのAVRチップが必要ですが、これは現時点では
自分で用意する必要があります。#173用のAVRチップは入手できますから、
両方のボードを準備すると、AVRライタ無しの方でもUSBaspを作ることが可能です。
もちろん、USBaspのファームウェアを書き込んでくれる知人がいれば、何の問題も
ありませんが、avrspxに含まれる特別の機能を利用することも検討してください。

この基板は、オリジナルの回路に若干の回路を追加し、評価ボードとしても 利用可能です。また、ターゲットマイコンボードの電源で動作を基本に し、USB I/Fからの電源は基本的には利用しません。

USBの+5Vを使えないのは残念と思う人もいるとは思いますが、これを利用すると 不測の事態(パソコンの突然のリセット)を招くことがあります。

ターゲットマイコンからの給電方式と低電圧での動作が安定しているmega48/88/168の 採用し、+5V未満のターゲットボード(+5.0〜3.3Vを想定)にも書込みが可能です。 マイコン開発時には電源を短絡する可能性もあり、安全性の面でも必要な変更と考えます。

なお、USBの5Vの利用も「一応」可能になっています。USB電源をターゲットに給電する
ジャンパと保護用ポリスイッチが実装できます。

USBaspの元になったAVR USBは3.3V動作を基本にしていますので、3.3V動作は 問題無いと考えています。

実際に低電圧での動作を検証しましたが、ターゲットマイコンが対応していれば、 3.0V程度までは問題なく動作(テストでは2.8V程度まで動作を確認)します。

これ以下の電圧での利用を希望する方には、COM-SPIブリッジAVRライタ (wsnakの#173基板)の利用を お奨めします。

ソフトウェア

USBaspのオリジナルサイトから、最新の アーカイブを入手するのも一つの方法ですが、書込み用ソフトなども別途 入手する必要があります。しかし、現在ではUSBaspをkkkさんが改良を施した、 優れたソフトウェアが入手できます。kkkさんは、この改良版をusbaspxと呼ん でいるようです。このアーカイブ(fileavrspx_b10_10.zip)があれば、usbaspxが製作できます。 MAC OS用に移植したavrspxも あるようです。修正内容を確認しましたが、文字コードの変更とCOMインターフェースの 削除(MACではUSB専用ということ)、不足している関数の追加、という具合で ほとんど同一のソースコードでした。異なるOS上でも動作することから、 移植性が高いことが分かります。Linux上で動作させるのも難しくないと思います。 kkkさんの次の版は、Windows, MAC OS X, Linux のプラットホームで動作すると 面白いですね。

AVR-wikiの「勝手に練習」という非常にくだけたタイトルのページがありますが、 ここに掲載されている「avrspx」は、非常に優れたUSBasp用のソフトウェアです。 アクセスしにくい場合があるようですから、このページからもダウンロードでき るようにしています(kkkさんからコメントをいただき、サポートページの 登場を歓迎(AVR/avrspx)していただきました)。

制御用プログラム(avrspx)

avrspxコマンドにて、USBasp, COM-SPIブリッジライタの両方の書込み、読出しに 利用可能です。 しかも、オリジナルが持っているいくつかの不具合も改善されています。 (詳細は、AVR/avrspxをご覧ください。)

製作のポイント

これら(ハードとソフト)を入手し、その後、以下の手順でUSBaspとして 利用できるようにします。AVRを用いたAVRライタですから、AVRに書き込め るライタを持っている必要がありますが、どうしても利用できない場合には、 avrspxに含まれる機能を利用すると、制御用のAVRチップを自力で作ることも 可能です(この方法は、それなりの手間と材料が必要(鶏と卵ライタ)ですから、COM-SPI ブリッジ(wsnakの#173基板) などの利用を検討してください)。

実際の製作手順

  1. #172ボードに部品を実装する
    1. 制御用AVRにはATmega48が安価 (ストロベリーリナックス(mega48)) でお奨めでしたが、7/17日現在、売り切れとなっていましたが、7/20に売り切れ表示は消えていました。
  2. #172ボードのUPDジャンパをUPDに切り替える
  3. AVRライタでavrspxに含まれるファームウェアを書き込む
    1. チップに合致するHEXファイルとfuseの設定を行う
    2. 同梱のBATファイルを参考にLow, High のfuseは一括に書き込む
  4. #172ボードのUPDジャンパを通常に切り替える
  5. 事前にavrspxに含まれるドライバの所在を確認しておく
    1. 例: 展開したディレクトリ\avrspx_b10_10\usbaspx113 20060830\win-driver
  6. avrspx.exeとfuse.txt, a vrspx.ini を実行可能なPATHにコピーしておく
  7. USBasp基板とターゲット基板(以下の例ではS2313の場合)をISPケーブルで接続する
    1. ターゲットボードの電源ONで、#172ボードのPOWER LEDが点灯することを確認する
  8. #172ボードにUSBコネクタを差し込む
  9. ドライバを要求してきたら、上記のフォルダを指定する
    1. kumanさんのページを参照ください
  10. デバイスマネージャにてUSBaspドライバが認識されていることを確認する
    1. コマンドプロンプトを起動し、以下のコマンドにて動作確認する
□ ISPコネクタには何も接続しない状態で確認する

>avrspx -pu?<Enter> ... ドライバの確認

libusb-win32 :
 DLL(libusb0.dll)    version: 0.1.12.0
 Driver(libusb0.sys) version: 0.1.12.0

avrspx: Found USBasp, Serial Number: [0000], Firmware version 1.13

>avrspx -z<Enter> ... SCKに1kHzのパルスを出力(BUSY LEDが約10秒間点灯)

□ ISPコネクタをターゲットボードに接続する

>avrspx -r<Enter> ... ターゲットAVRの確認

Detected device is AT90S2313.
Device Signature  = 1E-91-01
Flash Memory Size = 2048 bytes
EEPROM Size       = 128 bytes

これらのコマンドが正常であれば、完成です。

関連するリンク

  • AVR-wiki(勝手に練習)
    • 全てはこのwikiページから始まりました。↑のページの avrspのUSBasp対応(beta-10.10)をご覧ください。 私は、USBaspの書き込みツール(avrdude)は馴染めないため、avrspxが無ければUSBaspを
      使っていないと思います。優れた機能と使い勝手を提供するavrspxを作成されたkkkさん
      に敬意を表します。