usbserial の変更点
* PIC 18Fシリーズを使ったUSB-シリアル変換器 [#da06a24a]
http://psp.dip.jp/web/jpg/PIC/14k50.jpg
元ねた
[[mcc18]]
''ダウンロード''
-[[usbserial.zip:http://psp.dip.jp/web/upload/PIC/usbserial.zip]]
''割り込み使用版ダウンロード''
-[[usbserial_int.zip:http://psp.dip.jp/web/upload/PIC/usbserial_int.zip]]
''senshuさんの差分を適応した版''
-[[usbserial-2010-0816.zip:http://psp.dip.jp/web/upload/PIC/usbserial-2010-0816.zip]]
mchipcdc-14k2.zipからの変更点
-PIC 18F14K50 / 18F2550 / 18F4550 の3品種に対応しました。
-セルフエコーバックのルーチンを入れてみました。
-シリアル転送のベンチマークが出来るようにしてみました。(w32term)
*結論 [#ic9a9480]
-専用ドライバーを用いずに、USB汎用のCDCデバイスクラスのままでは、それほど速度が出ないことが分かりました。
あくまでもターゲットデバイスがPIC 18Fの場合ですが、
-セルフエコーバックでUHCI直結の場合=600Kbps程度が上限。
-セルフエコーバックでHubを挟んだ場合=800Kbps程度が上限。
-Tx/Rx接続によるエコーバック=200Kbps程度。
--但し、Tx/Rx接続の場合ProcessIO()関数内ではUSARTとのやりとりが1文字単位なので効率が悪いです。
--USART送受信を割り込みで処理すれば多少は改善するかもしれません。
~
~
~
----
*おまけ:USBシリアルファームとpic18spxファームの共存について [#vcee7c83]
-PIC 18F14K50などにはFlashメモリーが16kB乗っていますので、pic18spx簡易モニター兼PIC/PIC24/AVRライターを全部詰め込むことも可能です。
-やり方は、まず、以下のusbシリアルファームを最初に焼いて、次にpic18spxを焼きます。
-焼く方法はbootloader(picboot.exe)を使います。%%もしくは外部ライタのどちらでも構いません。%%
--外部ライタで焼く場合は2つのhexを適当なテキストエディタを使って切り貼りする必要があります。
-後から焼いたほうが強いので、起動するのはpic18spxのほうです。
C:picspx> picmonitor.exe
PIC>
-そこで、usbシリアルを起動するために、以下のコマンドを実行します。
PIC> boot 2c00
PIC> q
C:picspx>
-この状態でUSBバスが一旦リセットされ、アドレス2c00から配置されたファームウェアに制御
が移っている(usbシリアル変換デバイスになっている)はずです。
-同様にして、picmonitor.exeの状態から、bootloaderに制御を戻すには
PIC> boot 0
-で行うことが出来ます。(但しbootloaderはboot jumperを見ますのでboot 0を行うまえにjumperの設定が必要です)
- picboot.exe -r を使用してpicspxに制御を移している場合ならjumperそのままの状態でloaderに戻ります。
''usbシリアル:ダウンロード''(仮)
-[[usbserial_2c00.zip:http://psp.dip.jp/web/upload/PIC/usbserial_2c00.zip]]
''senshuさんの差分を適応した版''
''senshuさんの差分を適応した版''(上記アーカイブに差分usbserial-0407.diffを適用したものです。)
-[[usbserial-2a00.zip:http://psp.dip.jp/web/upload/PIC/usbserial-2a00.zip]]
''pic18spxダウンロード''(仮)
-[[pic18spx-2010-0416.zip:http://psp.dip.jp/web/upload/PIC/pic18spx-2010-0416.zip]]