楽天市場
[無料でホームページを作成] [通報・削除依頼]

続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター

久しぶりの更新になります。

以前、12MHzの内臓クロックで作動するLPC810のHID-シリアルアダプターをご紹介しましたが、LPC810の単価が300円に高騰してしまいました。!!!
LPC810は高速動作が可能な一方でコードが大きくなる欠点があり、またADCが非搭載なことから300円では継続して購入する気になりません。

その一方で前から試してみたかったPIC16F18313がパーツ屋さんで購入できるようになり、早速購入してHID-シリアルアダプターを製作しましたのでご紹介します。

(PIC16F18XXXデバイスは12MHz系の内臓クロックをサポートしているため、LPC810のように単品でUSBデバイスが製作可能です。)

○PIC12F1822のHID-シリアルアダプター(左)との体格比較
img_20161007-005052.jpg

○開発の方針
1.ソフトウエアは従来どうりDMLさんのものを使用。
2.USBデバイスとホストとの転送量を2バイトにし、ボーレートの変更とRTS出力をサポートする。
3.いきなりPIC16F18313での開発は無謀なので、以下の順でPIC16F18313に対応させる。

    3-1)PIC12F1822のファームウエア(続4 8ピンPICでUSB 16FUSBの改良版で紹介)をベースにソフトウエアを見直す。
            続4 8ピンPICでUSB 16FUSBの改良版のページではオリジナルから7項目の変更を行いました。
            今回更に以下の項目について変更を行いました。
    (拡張ミッドレンジの命令に特化し、PIC16F18313への移植を容易にするため。)
            ⑧割り込み時のオートコンテキスト機能を使用して未使用な変数(RAM)を削減。
               Rec_W, Rec_STATUS, Rec_FSR, Rec_PCLATH など。
            ⑨ジャンプテーブルの処理を ADD PCL,W 命令から BRW 命令に変更。
               BRW 命令は256ワードの境界を意識せずに使用できるためプログラムの自由度が向上する。
            ⑩タイマー0の使用を止める。
               PIC12F1822とPIC16F18313ではタイマー0の仕様が異なるため、両者で共通仕様のタイマー2を使用。
            ⑪多重割り込みの廃止:タイマー0の割り込みを廃止し、INT割り込みのみ使用する。
               INTCONのGIEビットを常にセットする仕様とし、割り込み許可・禁止に関わるコードを削減。

    3-2)PIC12F1822のファームウエアを2バイト転送の仕様に変更し、ホストからボーレートの変更が行えるようにする。
           ○レポートデスクリプタのデータ転送量を2バイトに変更。
           ○ボーレート変更の処理を追加。(ホストからSPBRGH/Lのデータを転送する仕様)
             img_20161007-005622.jpg

    3-3)ファームウエアをPIC16F18313へ移植。
           ○24MHz外部クロックから24MHz内臓クロックへの変更。
           ○PPSを使用してピン割付けを変更。 INT(D+) --> RA5, TX --> RA0
           ○RTS出力機能のサポート。

img_20180124-131749.jpg

○PIC12F1822とPIC16F18313の違い(参考)
img_20161007-004949.jpg

○回路図
img_20161007-005425.png

○配線図
img_20161007-005450.jpg

○ループバックホスト
img_20161007-005539.jpg





ダウンロードはこちらから (PIC12F1822のソフトウエアも同包しています。)

https://drive.google.com/file/d/1TPFEqZNBM4mhHzFKy2lrcmIn3uvMjzXl/view?usp=drivesdk