PIC16F1455を用いてUSB (CDC)デバイスを作成します。ここでは、MPLAB Code Configurator(以下単に、MCCと書きます)を利用した方法を紹介します。なお、MCCのコアーバージョンはCore v5.5.7です。
目次:使用するPIC回路はPIC16F1455の章にのせてあるものです。
ただ、PICの内部クロックを使う場合は、水晶発振子(16MHz)とコンデンサー(C3とC4の22pFのコンデンサー)は必要ありません。
PIC用ファームウェアの作成については、外部クロックを使用する場合と内部クロックを使用する場合のそれぞれにつき、以下順に説明して行きます。
本節で出来上がるファームウェアはcdc_basic1445ext_example.X.zipです。
1.最初にMPLAB X でプロジェクト名をcdc_basic1445ext_exampleとしてプロジェクトを作成します。その後、MCCアイコンを押してMCCを起動します。Project ResourcesエリアでSystem Modulesを選択すると、Composerエリアに以下のような画面が現れます。
2.この画面で4ヶ所変えます。①HSオシレータを選択し、②16と入力し、➂NO CPU System divideを選択します。そして、ICD3などを使用する場合は④Low-voltage Programing Enableのチェックを外します。画面の最上位に、Current System clock 48MHz (3x PLL)と表示されていることを確認します。USBフルスピードには48MHzが必須です。
3.Device Resourcesエリアで、MLA USB Device Liteの箇所をダブルクリックします。
4.すると、Project ResourcesエリアにMLA USB Device Liteが表示され、ComposerエリアにEasy Setup画面が現れます。Easy Setup画面ではCDCが選択されていると思います。
5.下図のように、CDCのSetup画面の下方にある①Serial Number Stringボックスにシリアル番号文字列を適当に設定します(注)。また、②Generate CDC Example Codeのチェックボックスにチェックを入れます。チェックをいれると、サンプルファームウェア(example_mcc_usb_cdc.c)がプロジェクトに追加されます。
注:パーソナル・コンピュータ(PC)には幾つかのUSBの受け口(ポート)があると思います。いつもPIC基板を同じポートに接続していれば問題はないのですが、違うポートに接続した場合、シリアル番号を設定しないとCOM番号が変わってしまいます。これを避けたい場合はシリアル番号を設定します。
6.以上で設定が終わりましたので、Project Resourcesエリアにて、Generateボタンを押してファームウェアを生成します。
7.MCCアイコンを押してMCCを終了します。終了しなくても良いのですが、そうすると画面が煩雑になります。
8.プロジェクト・ウィンドウを開き、
main.cを編集します。
以下の図のように編集箇所は4ヶ所です。以上でファームウェアは完成です。なお、main.cで呼び出すvoid MCC_USB_CDC_DemoTasks(void)関数は、example_mcc_usb_cdc.cの中で定義されています。
本節で出来上がるファームウェアはcdc_basic1445int_example.X.zipです。
1.最初にMPLAB X でプロジェクト名をcdc_basic1445int_exampleとしてプロジェクトを作成します。その後、MCCアイコンを押してMCCを起動して、Project ResourcesエリアでSystem Modulesを選択します。下図のように、Composerエリアの画面で3ヶ所変えます。①Internal Clockコンボボックスを開いて16MHz_HFを選択し、②NO CPU System divideを選択し、そしてICD3などを使用する場合は➂Low-voltage Programing Enableのチェックを外します。画面の最上位に、Current System clock 48MHz (3x PLL)と表示されていることを確認します。USBフルスピードには48MHzが必須です。
2.ComposerエリアでRegistersタブを選択します。画面を下方にスクロールしてRegister: ACTCONを以下の図のように表示させます。ここで、ACTENをenabledとします。Active Clock Tuning(ACT)機能を働かせるためです。さらに、ACTSRCをFull speed USB eventsとします。
後は、上記USB(CDC)ファームウェアの作成(外部クロック)の節の項目3から8までにしたがって作業を進めます。これでファームウェアは完成です。
PIC回路をCDC(Communication Device Class)機器として、パーソナル・コンピュータと接続し、PIC回路とPCの間でデータのやり取りを行います。PCからCDC機器としたPIC回路を見ると、PCはPIC回路をまるでRS232C機器であると認識します。したがって、PC上でRS232C機器と通信を行うための”Tera Term”なるアプリケーション・ソフトウェア(ウェブで検索ください。フリーソフトです。)を利用するだけで、PCからPIC回路を制御できるようになります。
1.PIC回路とPCをUSBケーブルで接続します。
2.MPLAB Xを立ち上げて、ファームウェアをPICに書き込み実行します。
3.Windows10(21H2)では、CDC用標準デバイスドライバ(Usbser.sys)を使用するようです。つまり、PIC回路とPCをUSBケーブルで接続すると自動的にこのドライバーが組み込まれまれるようです(別途ドライバーを組み込む必要がない)。デバイスドライバが組み込まれると以下のような画面がしばらく表示されます。画面からポート番号はCOM3ということが分かります。
4.PC上でTera Termを起動して、メニューから”設定->シリアルポート”を選択すると、シリアルポート設定画面が以下の様に現れるので、ポート番号(今の場合COM3)、ボーレートを57600 bps(など適当)、データビットを8ビット、 パリティはなし, ストップビットを1、フロー・コントロールはなし、と設定してください。 設定が終わったら、シリアルポート設定画面を閉じ、メニューから”設定->設定の保存”を選択して、シリアルポート設定内容をファイルに保存しておくと、次回の接続時には、自動的に保存した設定内容が反映されます。
5.キーボードから適当なキーを押下すると、押したキーに対するアスキーコードに1を足したものが、Tera Termの画面に現れるはずです。たとえば、”1”なるキーを押下すると、”2”がTera Termの画面に現れるはずです。