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]]