プログラマ(ライター)   

 AVR用プログラマは本館に書いたようにかなりの種類をコピー製作してきました。今では実用性が乏しいものもありますので、ここではこれからAVRをはじめようとする方の参考になる3種のプログラマについて製作報告をします。作り方を解説したものではなく筆者の製作例としてご覧下さい。
私をこの世界へ導いてくれたChaNさんのプログラマが候補にあげられないのは残念ですが着実に研究を進めておられるのでぜひ参考にしていただきたいと思います。
本来、プログラマはCOMポート経由であったと思いますが今ではCOMポートの無いPCも多いのでUSB接続のものに限りました。


 1 HIDaspxプログラマ 
 2 FT232RLプログラマ 
 3 pic18spxプログラマ 
 4 arduino as ISP(NANO)





 1 HIDaspxプログラマ 

 V-USBを利用したプログラマは我が国でも複数の人が研究しておられその成果を発表されていましたが、senshuさんがそれに改良を加えて、かつ、書き込みソフトのhidspxを改良し完成して自作しやすく、使いやすいプログラマに作り上げたものと理解しています。
廉価なTiny2313と僅かの周辺部品で製作できます。また、デバイスドライバはwindowsの標準を使いますからインストールの必要がありません。唯一の欠点はプログラム済みのTiny2313が必要なことでこの「にわとり−たまご」問題解決のための方策も報告されています。もし書き込み済みのTiny2313をご希望の方がおられたらメールをいただければ用意します(2017.05 終了しました FT232RLをお薦めします)。





原典は千秋ゼミにあります。サイト内検索で「最新のHIDaspx関係ファイル[Download]」を検索します。そのページの hidspx-20yy-mmdd.zip(ymdは年月日)をダウンロードし解凍しますとハードウエアのHIDaspxとソフトウエアのhidspxとファームウエアがあり、またそれらの詳しい説明があります。
回路図を比べていただくと私の製作物はかなりの省略があるのが分かると思います。この形でも私の使用目的には十分な機能を発揮しています。
ここで使用されているV-USBでは原則としてD-信号線を5Vにプルアップすると正常に働きません(問題のないコンピュータもあります)。そこで電圧リミタとして青色ダイオードを入れて3V程度にクランプしています。また、書き込み信号線は5Vで駆動していますが5Vでは高すぎて困るときのためにUSBバスの5Vに赤色LEDを入れて電源電圧を3.2V程度となるように工夫しています。赤色LEDはスイッチで切り換えています。

ターゲットボードにつなぐコネクタは写真に写っていませんが、PCのATAケーブル(マザーボードとHDDを接続する40芯のもの)の廃物利用でピンソケットを2*3の6ピンに切り取ったものを使っています。プロの人には叱られるかもしれません。

Tiny2313に書き込むファームウエアは前述のファイルに含まれる main-12.hex です。
USBデバイスはシリアル番号が無い場合にはUSBポート毎に別デバイスと考えられますので不便ですが、このmain-12.hexを書き込むと自動的にシリアル番号0000となります。
書き込むためのPC上のソフトは hidspx.exe です。("HID"と"hid"の文字の違いにご注意下さい)

  1 HIDaspxプログラマ おわり





 2 FT232RLプログラマ 

 ビットバンモードを利用してシリアルプログラミングするものです。すzさんが研究されてきたようですがsenshuさんのavrdudeの改良のなかで報告されています。
多くのAVRライタはプログラム書き込み済みのAVRが必要なためにUSB-IOしか持たないPCに取っては最初の1歩に問題がありましたが、このライタはFT232RLとavrdude-GUIがあれば他の力を借りることなく書き込むことができます(にわとり−たまご問題がありません)。

内容的には十分な理解ができていないので「こうしたらライタとして使えました」という一例の報告としてお読み下さい。





別のUSB-シリアル変換に使っていたFT232RLからプログラマ用の端子を取り出し実験に成功しましたが、手持ちのFT232RLがありましたのでプログラマとしての専用機を作ってみました。
回路を簡単にするために5V専用としてパイロットランプも省略していますが、回路図の赤線部分を有効にすると3.3Vと切替が可能になります。
ハンダ付けはやや難しくなりますが小型で簡単な作品となっています。ハンダ付けが好きでない方は秋月でハンダ済みのモジュールを買うとブレッドボードで書き込めるプログラマとなります。

プログラムローダー(書き込みソフト)は avrdude-GUI が便利です。
  2 FT232RLプログラマ おわり





 3 pic18spxプログラマ 

 irukaさんが作ったAVRライタです。他の機能もありますので別項にも書きましたが、ライタの部分だけを取り出してここにもあげておきます。
特長は、
1 制作費が安く(PIC18F14K50 \200)、回路が簡単であること、
2 PICを使うにもかかわらずHIDaspxがあればファームを書き込めること、
3 AVRへの書き込みが高速であること、
4 PIC18とPIC24(一部)にも適用できること、
5 ブートローダによってファームの書き換えが簡単であること、
などがあげられます。

HIDaspxを持っていて工作好きの方には是非お勧めしたいライタです。





ブートローダを書き込むためにISPコネクタを付けてありますが、ブートローダファームに変更がなく他の方法でブートローダファームが書き込めるならばこのISPコネクタはなくても良いでしょう。ライタファームが更新されてもブートローダで処理できるからです。
リセットスイッチを付けたのは次の理由によるものです。私のPCは電源を切ってもUSBの電源は切れませんので、接続したままPCがスタンバイモードになってそれから復帰するときにライタを認識しなくなります。USBソケットを脱着すればいいのですが、めんどうなのでリセットスイッチを押すことにしています。また、ブートスイッチは、これを押してリセットするとブートローダモードになります。通常のリセットではライタに制御が移りますが、ブートローダを起動してファームの書き換えをするときはこのスイッチが必要になります。ソフトでも起動できるようですがエラーが出ますのでこのスイッチの方がすっきりします。(やがてソフトで問題なく切り換えられるようになると思います)

ハードウエア7番ピンPGMはLVP(高電圧を使わないプログラム)では 4.7〜10k でプルダウンが必要です。
17番ピンVUSBは3.3Vのレギュレータ出力端子とのことで 0.2〜0.47uF でバイパスします。0.3がよく使われるようですが手持ちの都合で0.1にしてあります。
水晶の負荷コンデンサはなくとも使えるという報告もありますのでテスト的に省略しています。問題があれば追加する予定です。

関係ファイルについて
関係するファイル群はirukaさんのサイトにあります。今までアーカイブの場所を紹介してきましたがそのためにirukaさんがアーカイブの名付けに苦労されておられますので紹介をやめて、以下の実験に必要なファイルをまとめたものをファイル群としてここに置きます。irukaさんの了承はこれからですが、実験のためにはこの方が使いやすいと思いますので変更します。
初歩の実験が済みましたら、ファイルの更新もありますから、正式にirukaさんのサイトを訪れて理解を深めていただきたいと考えています。

1 loader-18F14K50.hexというローダーファームを、PICspx.exeライティングソフトでHIDaspxハードを用いて、コマンドプロンプト上で書き込みます。
2 picmon-18F14K50.hexという名のAVRライタ/PICモニタファームを、picboot.exeをコマンドプロンプト上で起動して書き込みます。
3 picspx-gcc.exeをコマンドプロンプト上で実行してAVRの読み書きをします。
4 picwrite.exeを使うとPIC18F14K50の読み書きができます。
ということになります。

太字で示したファイルにpicspx-gcc.iniを加えたものを単独のフォルダ(パスが通っている方が良い)に保存すると便利です。

ブートローダの書き込み
ライタボードに電源を供給します。このときは3.3Vで行いますのでUSBコネクタはつなぎません。別電源を用意します。なければ乾電池2個の3Vでも良いでしょう。
ISP端子にHIDaspxをつなぎます(3.3Vが望ましい。書き込み回路に100Ω程度が入っていれば5V電源でも可)。コマンドプロンプトで次のように操作します。
>PICspx.exe loader-18F14K50.hex
*Device:PIC18F14K50  DEV_ID:0x4766
Erase ...
Writing   ... 0800
Verify Ok.... 0800
Writing Fuse ...
WARNING: config LVP=OFF -> ON .
CONFIG: 00 32 2a 1e 00 88 05 00 03 c0 03 e0 03 40

>
書き込みとベリファイに計2分強かかりました(同じPCでも日によって時間が違うようです)。2台目からはこのPIC18F14K50で作ったライタを使いますと5秒で終わります。HIDaspxを使った長い書き込みはブートローダを1回書くだけです。
ブートローダの書き込みが終わるとUSBに接続します。bootloaderが働いているとRC0のLEDが点滅します。

AVRライタファームの書き込み
USBに接続してLEDが点滅している状態で、ブートローダを使ってライタファームをアプリケーション領域に追加書き込みします。
>picboot.exe picmon-18F14K50.hex            // アプリケーションの書き込み
TARGET DEV_ID=14 VER=1.1(Bootloader)
Erase ...
Writing ... 29e0
Verify Ok.... 29e0
数秒で書き込めます
これでライタは完成です。USBをはずします。

AVRライタのテスト
USBにライタを接続します。PCはライタを認識するはずです。
AVRターゲットボードに電源を入れ、ライタリードを接続します。
ターゲットデバイスの情報を読みます。
>picspx-gcc.exe -r           
TARGET DEV_ID=14 VER=1.1
Detected device is ATmega168P.
Device Signature  = 1E-94-0B
Flash Memory Size = 16384 bytes
Flash Memory Page = 128 bytes x 128 pages
EEPROM Size       = 512 bytes

>
>picspx-gcc.exeエンター
とすると使い方が表示されます。オプションその他については極めて hidspx と似ています(hidspxの内容が出ている?ようです)。

私のPCではターゲットが12MHzの時に読み出しが -d0 で 8kB/s弱になりました。HUBを入れると残念ながらHIDaspxより遅くなりますが、HUB無しでは俄然高速で操作は快適です。他の報告ではHUBがある方が速いそうですがPCによって違いがでるのかもしれません。
その他の操作は hidspx に準じて行えますから詳細は省略します。

なお、picwrite.exe を使って PIC18F14K50、PIC18F2550 にもファームを書き込んでみましたが高速で使えるようです。

このライタのファームと書き込みソフトはsenshuさんのサイトで改良が進められています。picspx-gcc.exe が picspx.exe と改名されています。最新の機能を持つものはsenshuさんのサイトにあります。現在は私の研究不足により詳細を知りませんが分かれば別項で報告します。

2011.11.20追記
上に書いたようにsenshuさんのところで改良が続けられているようです。千秋ゼミのサイトのものはファームウエアとローダーのバージョンが最新のもので一致していないと不都合が生じることがあるので注意が必要です。ファームとローダーの組み合わせが適切でないといけません。
千秋ゼミの新掲示板でメンバー登録するとファイルをダウンロードすることができます。
ログインして Download をクリックすると最初の行に YCIT版、avrdude, pic18spx関連の評価用アーカイブ がありますからこれを開き、(本日現在では)pic18spx-0831a.zip  に最新のファームウエア loader-18F14K50.hex と 18F14k50.hex がありますので上記のブートローダーとライタファームをこれに代えます。
書き込みソフト(ローダー)は同じ掲示板の avrdude-2011-RC18.zip を解凍して setup.bat を実行すると c:\bin フォルダに picspx.exe (原作者irukaさんの picspx-gcc.exe と同じ機能のもの。 PICspx.exe とは全くの別物)とそのiniファイルがコピーされます。ここにpathを通しておけばコマンドプロンプトから使用できます。詳細は別項の プログラムローダー をご覧下さい。


2021.08.31 最終ファームの確認
 最近、今は公開されていないsenshuさんのプログラムavrdude-GUIとr8cprog-GUIの問い合わせがありました。直接は関係ないのですが同じ頃の作品としてpic18spxの確認をしたいと考え、手持ちの最終ファーム(最新ファーム)の確認をしました。

手元の最新版はpic18spx-20140320.zipです。自作の1号機はbootファームの書き込み端子を作ってありましたからこれに最新のファームを書き込んでプログラマとシリアル変換機の確認をすることにしました。1号機はこの項の回路図にTx端子(RB7)とRx端子(RB5)を付け加えたものです。

書き込み作業はこのzipファイルを解凍してできたbinフォルダを展開したディレクトリでコマンドプロンプトを開いて行いました。
まずbootローダーの書き込みです。別のpic18を使って、3.3V電源を用意して、picwrite loader-18F14K50.hex を実行します。数秒の感じで書き込みが終わりました。
次に、プログラマとシリアルのファームの書き込みです。これはUSBに接続して(電源は5Vになります)boot loader で行います。 picboot 18F14k50.hex を実行します。このファームはプログラマとシリアルの両方を含んでいます。
2つの操作をしたコマンドプロンプトは次のとおりです。


プログラマ、シリアルともに正常に動作しました。もし問い合わせがあればこのバージョンを紹介しましょう。なお、18F14k50.hexを使えばpicmon-18F14K50.hexとcdc-18F14K50.hexは必要ありません。


他項にも PIC18spxの記述があります。 
http://kuman2600.web.fc2.com/a05pic18spx.html
http://kuman2600.web.fc2.com/a_kyuu/o19pic18spx.html

2023.02.19 ライター専用機に作りかえ
 最初に作ったものを見直したところ、コード類や端子が傷んでいた上にライター機能は問題がないのですがシリアル変換機能が安定せず通信できたりできなかったりします。シリアル変換は安定したcp2102のものが複数ありますのでライター専用機に作りかえることにしました。
ライター機能は問題がないのでファームウエアは変更することなくPIC素子をそのまま使っています。回路は必要な部分だけを残し単純なものとしました。Rは手持ちの4k7に変えました。ライターとして使用するときはUSBに差し込むだけで初期設定されるのでリセットスイッチも省略しています。1608のRとCにはいつも苦労しています。
基板はやや余裕のあるものを使いました。




USBの電源部にはダイオードを入れて4.3V程度に落としています。入出力端子には470Ωの抵抗を入れていますので、ターゲットが3.7Vのときも問題なく使えると思っています。ターゲットの入力回路に2mA流れると約1Vの電圧降下がありますので3.3Vに落ちるのではないかと思います。この程度の電流が流れても壊れることはないでしょう。反対にターゲットが5Vであってもライターの入力回路に470Ωがあるので心配は無いと思います。

問題なく使えました。コードをロボットコードにしましたから取り扱いも良くなりました。
3 pic18spxプログラマ おわり






 4 arduino as ISP(NANO)  2023.03.14

 arduino-IDEで使えるライターを持っていません。webを調べると arduino NANO がISPになるそうです。手持ちにNANO互換品がありますのでライターの制作を考えました。
試作品と回路図は次のとおりです。


絶縁と回路の保護にカプトンテープを巻いています。後ほど塩化ビニルシートで包む予定です。

試してみましたが、安定性に欠けるようです。まず、ライターをPCが認識しないことがあります。原因はわかりません。
調子の良いときはmega328にブートローダーを書き込めました。が、USB-シリアル経由ではプログラムの書き込みはできませんでした。
うまくいくときは、comポートの設定を確かめ、書き込み装置に Arduino as ISP を指定して、「書き込み装置を使って書き込む」を行うと書き込めました。

不安定な条件や原因はわかっていません。

ターゲットとの接続の様子やヒューズの読み取りなど avrdude-GUI の方が便利なことが多いのですが、arduino-IDE で使えるライターとしてしばらく様子を見ようと思います。

(2023.05.01)USBコードを作りました。
NANOにはUSBミニソケットが付いています。ところが手持ちのミニコードはリードが太く、かつ、長く取り扱いに困ります。
それで、ロボットケーブルを使った短いコードを作りました。
部品箱にミニプラグがあったので材料は揃っていたのですが、ミニプラグの端子図がwebにはなかなかありませんでした。差込口からの端子配置はありましたのではんだ端子との関係をテスターで調べて決定しました。
後のために写真を残しておきます。


このライターを使う頻度は多くないのですが、使いやすくはなりました。
 
4 arduino as ISP(NANO) おわり




















工事中 inserted by FC2 system