PIC18F14k50によるGPIB-USB変換(その2) [GPIB]
先日作成したPIC18F14k50によるGPIB-USB変換を更新した。
手持ちのGPIB機器は3台だし、キャプチャする時は1対1しか接続しないので、NRFD,NDACのドライバLS244を削除したバージョンを作成した。PIC18F14K50のデータシートによると、VoL=0.6V/8mAなので2台程度の接続なら可能と思う。


昔、実験したPIC18F14k50のテスト基板にコネクタピンを追加して評価。評価用LEDが残っているが、LS244削除バージョンでも特に問題は見えなかった。


FWは前回と同じ物を使う。NRFD/NDACはLATBに0をセットしておいてからTRISの対応するbitで制御する。
#define getDATA() PORTC
#define inDATA() TRISC=0xff
#define DAV PORTBbits.RB6
#define NDAC TRISBbits.TRISB5
#define NRFD TRISBbits.TRISB4
ボール盤バイス使ってアンフェノール24Pコネクタを圧着

PDF:
ソースコードはデバック痕跡が多数あり、見難いので、Hexのみ公開
GPIB-USB04.hex
GPIB-USB03.hex(旧バージョン)
以下microchipのライブラリ2013-0215版より
bootloder
info
dptnkjet説明書.zip
dptnkjetall.zip
参考
http://nakjack.blog.so-net.ne.jp/archive/c2302495682-1
超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月

F
手持ちのGPIB機器は3台だし、キャプチャする時は1対1しか接続しないので、NRFD,NDACのドライバLS244を削除したバージョンを作成した。PIC18F14K50のデータシートによると、VoL=0.6V/8mAなので2台程度の接続なら可能と思う。

昔、実験したPIC18F14k50のテスト基板にコネクタピンを追加して評価。評価用LEDが残っているが、LS244削除バージョンでも特に問題は見えなかった。


FWは前回と同じ物を使う。NRFD/NDACはLATBに0をセットしておいてからTRISの対応するbitで制御する。
#define getDATA() PORTC
#define inDATA() TRISC=0xff
#define DAV PORTBbits.RB6
#define NDAC TRISBbits.TRISB5
#define NRFD TRISBbits.TRISB4
ボール盤バイス使ってアンフェノール24Pコネクタを圧着

PDF:
ソースコードはデバック痕跡が多数あり、見難いので、Hexのみ公開
GPIB-USB04.hex
GPIB-USB03.hex(旧バージョン)
以下microchipのライブラリ2013-0215版より
bootloder
info
dptnkjet説明書.zip
dptnkjetall.zip
参考
http://nakjack.blog.so-net.ne.jp/archive/c2302495682-1
超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月

PICで動かすUSB―MCHPFSUSB framework+付属プリント基板で即日完成
- 作者: 鈴木 哲哉
- 出版社/メーカー: ラトルズ
- 発売日: 2010/06/01
- メディア: 単行本
F
PIC18F14k50によるGPIB-USB変換 [GPIB]
2年前にtiny2313でGPIBシリアル変換器を作ったが、機器接続の度にRS232C-USB接続する事が煩わしくなり、PIC18f14K50でUSB直結できる様にした。

論理的には、Tiny2313によるGPIBシリアル変換機構と同じで、MicrochipにあるDevice - CDC - Basic Demo (PIC18F14K50)に、GPIBからデータを読むだけの論理を追加した。GPIB機器からデータを取り出すだけで、PCからの制御は出来ない。
Microchipのライブラリは新しい方が良いと思ったが、バージョンによりdata memoryの使用量に違いが有り、データメモリサイズのコンパイルエラーが発生したので、2013-0215版を使った。
MPLAB:8.92 C18:3.47
ライブラリをそのままコンパイルした時のメモリゲージ
ROM RAM
MLA 2012-1015 3718 510 OK
MLA 2013-0215 3718 510 OK
MLA 2013-0615 3720 558 error
2013-0615のライブラリにするとdataメモリが48バイト余計に使われるので、2013-0215版2.9f 「Low Pin Count USB Development Kit」USB CDC BasicDemoを雛形に使う事にした。最初に18F14k50のHIDbootloder.hexを書き込んだ後に、BootloderからターゲットのHexファイルの書き込みをする。2013-0215版のBootloderはv2.90aであった。

18f14K50は20ピンのため、使える信号が限定されるので、GPIB信号(DAV,NRFD,NDAC)のみを扱う。 転送の終了はPC側でタイムアウトを検出することで判断する。
回路のPushSWはabort SWとして利用。SW押下時のGPIBバス状態をRS232C転送してwait状態に戻る。
PIC18F14K50
1 VDD 20 VSS
2 OSC1 19 D+
3 OSC2 18 D-
4 RA3/SW 17 VUSB
5 RC5/DIO6 16 RC0/DIO1
6 RC4/DIO5 15 RC1/DIO2
7 RC3/DIO4 14 RC2/DIO3
8 RC6/DIO7 13 RB4/NRFD
9 RC7/DIO8 12 RB5/NDAC
10 RB7/LED 11 RB6/DAV

手順
1.HIDBootloader用HEXファイルをPICkit2/3 等の書き込みツールでPICに書き込む
2.PCからHIDBootloaderを起動してプロジェクトのHEXファイルをPICに書き込む
3.Microchip社のCDCソフトウエアをそのまま使用しているので、ドライバはMicrochip社の定義ファイルを使う
4.回路をUSBケーブルでPCと接続して、COMボードとして認識
5.キャプチャソフト(Dptnkjet等)でRS232Cポートを認識させ、GPIBデータの読み取る.。 この変換ボードではRS232Cボーレート設定は無視する。


今回は基板にピンヘッダを立てて、24Pのアンフェノールコネクタ経由で、GPIBケーブルと接続する様にした。
PIC18F14K50は手持ちのSOP品を使ったが、あまり小さくならなかった。またGPIB信号のNRFD,NDACをLS244経由としたが、接続機器が、少ない場合は、PIC直結でも可能かもしれない。LS244無しの直結バージョンも考慮したので、LS244のゲート(1ピン、19ピン)は1Kでプルアップが必要。GPIBバス上の機器の内、電源投入機器は1台に限定される。
DAV,NRFD、NDACの波形を見たが、30K/byte程度で意外と性能が出ていない。GPIBのサイクルチェック毎にCDCTxService()を経由している為と思うが、mainループで1回17usくらいかかっているし、時々転送の休みもあり、改善の余地があるので、今後検討する。


Tera TermでHPGLフォーマットのデータを読んだところ

Tera Termからデバッグコマンド実行
L:LED count
M:内部mem

ソースコードはデバック痕跡が多数あり、見難いので、Hexのみ公開
GPIB-USB04.hex
GPIB-USB03.hex(旧バージョン)
以下microchipのライブラリ2013-0215版より
bootloder
info
dptnkjet説明書.zip
dptnkjetall.zip
参考
http://nakjack.blog.so-net.ne.jp/archive/c2302495682-1
超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月


論理的には、Tiny2313によるGPIBシリアル変換機構と同じで、MicrochipにあるDevice - CDC - Basic Demo (PIC18F14K50)に、GPIBからデータを読むだけの論理を追加した。GPIB機器からデータを取り出すだけで、PCからの制御は出来ない。
Microchipのライブラリは新しい方が良いと思ったが、バージョンによりdata memoryの使用量に違いが有り、データメモリサイズのコンパイルエラーが発生したので、2013-0215版を使った。
MPLAB:8.92 C18:3.47
ライブラリをそのままコンパイルした時のメモリゲージ
ROM RAM
MLA 2012-1015 3718 510 OK
MLA 2013-0215 3718 510 OK
MLA 2013-0615 3720 558 error
2013-0615のライブラリにするとdataメモリが48バイト余計に使われるので、2013-0215版2.9f 「Low Pin Count USB Development Kit」USB CDC BasicDemoを雛形に使う事にした。最初に18F14k50のHIDbootloder.hexを書き込んだ後に、BootloderからターゲットのHexファイルの書き込みをする。2013-0215版のBootloderはv2.90aであった。
18f14K50は20ピンのため、使える信号が限定されるので、GPIB信号(DAV,NRFD,NDAC)のみを扱う。 転送の終了はPC側でタイムアウトを検出することで判断する。
回路のPushSWはabort SWとして利用。SW押下時のGPIBバス状態をRS232C転送してwait状態に戻る。
PIC18F14K50
1 VDD 20 VSS
2 OSC1 19 D+
3 OSC2 18 D-
4 RA3/SW 17 VUSB
5 RC5/DIO6 16 RC0/DIO1
6 RC4/DIO5 15 RC1/DIO2
7 RC3/DIO4 14 RC2/DIO3
8 RC6/DIO7 13 RB4/NRFD
9 RC7/DIO8 12 RB5/NDAC
10 RB7/LED 11 RB6/DAV

手順
1.HIDBootloader用HEXファイルをPICkit2/3 等の書き込みツールでPICに書き込む
2.PCからHIDBootloaderを起動してプロジェクトのHEXファイルをPICに書き込む
3.Microchip社のCDCソフトウエアをそのまま使用しているので、ドライバはMicrochip社の定義ファイルを使う
4.回路をUSBケーブルでPCと接続して、COMボードとして認識
5.キャプチャソフト(Dptnkjet等)でRS232Cポートを認識させ、GPIBデータの読み取る.。 この変換ボードではRS232Cボーレート設定は無視する。


今回は基板にピンヘッダを立てて、24Pのアンフェノールコネクタ経由で、GPIBケーブルと接続する様にした。
PIC18F14K50は手持ちのSOP品を使ったが、あまり小さくならなかった。またGPIB信号のNRFD,NDACをLS244経由としたが、接続機器が、少ない場合は、PIC直結でも可能かもしれない。LS244無しの直結バージョンも考慮したので、LS244のゲート(1ピン、19ピン)は1Kでプルアップが必要。GPIBバス上の機器の内、電源投入機器は1台に限定される。
DAV,NRFD、NDACの波形を見たが、30K/byte程度で意外と性能が出ていない。GPIBのサイクルチェック毎にCDCTxService()を経由している為と思うが、mainループで1回17usくらいかかっているし、時々転送の休みもあり、改善の余地があるので、今後検討する。
Tera TermでHPGLフォーマットのデータを読んだところ
Tera Termからデバッグコマンド実行
L:LED count
M:内部mem
ソースコードはデバック痕跡が多数あり、見難いので、Hexのみ公開
GPIB-USB04.hex
GPIB-USB03.hex(旧バージョン)
以下microchipのライブラリ2013-0215版より
bootloder
info
dptnkjet説明書.zip
dptnkjetall.zip
参考
http://nakjack.blog.so-net.ne.jp/archive/c2302495682-1
超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月

PICで動かすUSB―MCHPFSUSB framework+付属プリント基板で即日完成
- 作者: 鈴木 哲哉
- 出版社/メーカー: ラトルズ
- 発売日: 2010/06/01
- メディア: 単行本
タグ:GPIB
GPIB:シルアル変換(Tiny2313) [GPIB]
シリアルのボーレート変更に、久しぶりにAVR(Tiny2313)の書き込みを行ったが、手順をすっかり忘れている。書込器は、ジャンク箱に自作の書込器AVR#173とCOMダイレクトの2機種があった。書き込みソフトはavrspやavrspxからをコマンドラインで使うことになっている。avrspの上モノでGUIインタフェースを持つものがいくつかあるが、古いCF-B5にはavrsp-gが入っていた。avrsp-gから書込器のタイプを選定し、書き込みファイルの指定、ヒューズの設定をして問題なく書き込みはでき、数年前の作業が復活した。

ヒューズ下位:1110 0100 これで内部クロック8Mhzを指定。これで水晶がいらなくなった。
Tiny2313の内部クロックを8Mhz指定にしてシリアル38.4kbpsにした。あわせてシリアル19.2Kbpsも作っておく。
zipを展開すると以下2このファイルができる。19.2Kbpsと38.4kbpsに対応
38.4KbpsはCF-B5(650Mhz)では、CPUがスピードが足らず、19.2kが限界。CF-W4Jでは38.4KでOK
tnygpib193801.zip
tnygpib19.hex
tnygpib38.hex
SkyDriveに登録してある回路図はそのまま使える。
参考文献
1)GPIB/Serial アダプター
2)MCS Electronics Application Note 103 http://www.mcselec.com/an_103.htm
http://www.mcselec.com/index.php?option=com_content&task=view&id=67&Itemid=57
3)超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月
4)トランジスタ技術 2005年10月
5)PCL 5e Technical Quick Reference Guide
http://www.partsnow.com/docs/service-manuals/hp-color-laserjet-8500-software-tech-ref-guide.pdf
6)PrintCapture
-------------------------


ヒューズ下位:1110 0100 これで内部クロック8Mhzを指定。これで水晶がいらなくなった。
Tiny2313の内部クロックを8Mhz指定にしてシリアル38.4kbpsにした。あわせてシリアル19.2Kbpsも作っておく。
zipを展開すると以下2このファイルができる。19.2Kbpsと38.4kbpsに対応
38.4KbpsはCF-B5(650Mhz)では、CPUがスピードが足らず、19.2kが限界。CF-W4Jでは38.4KでOK
tnygpib193801.zip
tnygpib19.hex
tnygpib38.hex
SkyDriveに登録してある回路図はそのまま使える。
参考文献
1)GPIB/Serial アダプター
2)MCS Electronics Application Note 103 http://www.mcselec.com/an_103.htm
http://www.mcselec.com/index.php?option=com_content&task=view&id=67&Itemid=57
3)超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月
4)トランジスタ技術 2005年10月
5)PCL 5e Technical Quick Reference Guide
http://www.partsnow.com/docs/service-manuals/hp-color-laserjet-8500-software-tech-ref-guide.pdf
6)PrintCapture
-------------------------

ラトックシステム USB2.0 to GPIBコンバータ REX-USB220
- 出版社/メーカー: ラトックシステム
- メディア: エレクトロニクス

ラトックシステム GPIB PCI Express Board(LowProfile対応) REX-PE20LX
- 出版社/メーカー: VSH
- メディア:
GPIB:シルアル変換 [GPIB]
今使っているGPIB-シリアル変換器の、シルアルボーレイトは、19.2Kであるので、ひとつ上の38.4Kを試してみた。あわせて、Tiny2313の内部クロック8Mhzを使う様にヒューズ変更をした。最初の電源投入時に、LEDピカピカ、シリアルに*UU*を出してデータ確認が出来るようにした。*UU*は、16進で、”2A55552A”、ビットがずれていたらすぐに分かると思う。 結果CF-W4Jでは38.4K通信は、問題なかったが、CF-B5(650Mhz)は19.2Kが限界の様でデータ化けする。シリアルの受信回路はあるが、制御には使っていない。バイナリデータをそのままPCに送るので、区切りデータはチェックしていない。
元からの変更
・Tiny2313の内部クロック8Mhzに変更
・UARTの設定を38.4Kにする
・立ち上げ時LEDピカピカ
・立ち上げ時文字コード*UU*送出
・シリアル受信は当面保留
訂正:先日登録したGPIBシリアル変換の回路図中のLEDに、抵抗接続が抜けています。
後日訂正いたします。
元からの変更
・Tiny2313の内部クロック8Mhzに変更
・UARTの設定を38.4Kにする
・立ち上げ時LEDピカピカ
・立ち上げ時文字コード*UU*送出
・シリアル受信は当面保留
訂正:先日登録したGPIBシリアル変換の回路図中のLEDに、抵抗接続が抜けています。
後日訂正いたします。
GPIB シルアル変換 [GPIB]
24P-36Pのプリンタケーブルなどを使わなくても、24ピンメスのコネクタが入手できれば何ら問題ないが、手持ちの部材を消費するために、あえてジャンクで実験した。36ピンメスコネクタはすでにケーブルが圧着されていたが、ケーブルが34PINのため18P,36Pが接続できない。


ケーブルハウジングが、金属のため分解出来、18PのREN信号を結線をなおして信号はつながった。GPIB-RS232C変換は、10年くらい前にはさかんに行われていた様だが、最近の測定器はファイル出力可能なので需要はあまりなさそうである。
昔どこかのホームページで”GPIB/Serial アダプター”と言うのがあり、ソースが開示されていたので、流用して作った。新たに入手したTektronixのTDS744は、データがFDに落ちる様になっていたので、変換アダプタは製作途中で放置状態。参考にしたホームページはすでに削除されたのか検索では見つからない。Tny2313のFWは書き込み済みで、組み立て、USB-RS232Cを経由して、何かデータが送られてきていた。RS232Cデータを直接受信して、昔のオシロTektronix2440の画面コピーができるようにしたい。30年前の測定器を使う場合以外は、不要だと思うが。

参考文献
1)GPIB/Serial アダプター
2)MCS Electronics Application Note 103 (http://www.mcselec.com/an_103.htm)
http://www.mcselec.com/index.php?option=com_content&task=view&id=67&Itemid=57
3)超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月
4)トランジスタ技術 2005年10月



ケーブルハウジングが、金属のため分解出来、18PのREN信号を結線をなおして信号はつながった。GPIB-RS232C変換は、10年くらい前にはさかんに行われていた様だが、最近の測定器はファイル出力可能なので需要はあまりなさそうである。
昔どこかのホームページで”GPIB/Serial アダプター”と言うのがあり、ソースが開示されていたので、流用して作った。新たに入手したTektronixのTDS744は、データがFDに落ちる様になっていたので、変換アダプタは製作途中で放置状態。参考にしたホームページはすでに削除されたのか検索では見つからない。Tny2313のFWは書き込み済みで、組み立て、USB-RS232Cを経由して、何かデータが送られてきていた。RS232Cデータを直接受信して、昔のオシロTektronix2440の画面コピーができるようにしたい。30年前の測定器を使う場合以外は、不要だと思うが。

参考文献
1)GPIB/Serial アダプター
2)MCS Electronics Application Note 103 (http://www.mcselec.com/an_103.htm)
http://www.mcselec.com/index.php?option=com_content&task=view&id=67&Itemid=57
3)超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月
4)トランジスタ技術 2005年10月

試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (SkiLL up mycomputerシリーズ)
- 作者: 土井 滋貴
- 出版社/メーカー: CQ出版
- 発売日: 2008/04
- メディア: 単行本