PIC16F1455

  以下では、MPLAB Xの章での作業(ファームウェア等のインストール)が終わっていること、そして、ファームウェアの書き込み方法を理解していることを前提とします。


PIC16F1455を用いたテスト回路

  EAGLEというソフトウェア(試用版)で作成した回路図と実際の回路の写真を示します。回路は、ユニバーサル基板(サンハヤト株式会社  ICB-86)上で組んでいます。22pFのコンデンサーはチップ型のものを用い、写真のように基板裏面に半田づけをしています。そして、水晶発振子(Xtal)には16MHzのものを用いています。

内部クロックを使用する場合(Active Clock Tuning機能を使用する場合には内部クロックを使用します)、2つの22pFのコンデンサーと水晶発振子は必要ありません。ただ、各プロジェクトの中にあるsystem.cの中のコメント文//#define USE_INTERNAL_OSCのコメントを外して#define USE_INTERNAL_OSCとする必要があります。

水晶発振子(Xtal)に12MHzのものを使う場合には、各プロジェクトの中にあるsystem.cの中のCONFIGURATION Bitsの設定のところで、 #pragma config PLLMULT = 3x#pragma config PLLMULT = 4xとします。


回路動作確認

  作成した回路がきちんと働いているかどうかを確かめます。プロジェクト名はblinkです。

1.ピンヘッダJP2には何も繋がない状態にします。また、ピンヘッダJP1にはファームウェア書き込み器(たとえばICD3)を接続します。

2.PIC基板とPCをUSBケーブルで接続します(電源をパーソナル・コンピュータから取ります)。

3.MPLAB Xを立ち上げて、appsフォルダーにあるblinkプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

4.プロジェクトを実行します。

ファームウェアを走らせると、約1秒周期のパルス( 5V, 0V, 5V, ...) がPICの5、6、7、8番ピンから出力されますので、テスターで、このピンの電圧を測定してください。もし、パルスが出ていなければ回路に問題がありますので、回路を再チェックしてください。 main.cの中身をみれば、何をしているのかが簡単に分かると思います。



HIDマウス

  マウスを模倣(emulation)します。具体的にはマウスカーソルがディスプレイ上で四角を描きます。

プロジェクト名はhid_mouseです。このプロジェクトはマイクロチップ社が配布しているMicrochip Libraries for Applications v2018_11_26の中に含まれている\apps\usb\device\hid_mouseプロジェクトをほんの少し手直ししただけのものです。

1.PICの8番ピンを抵抗10kΩでプルアップします(回路図中、8番ピンと5Vラインの間に10kΩを入れる)。このPICのCポートは”内部プルアップ”に対応していませんので、外部プルアップが必要になります。

2.PIC基板とPCをUSBケーブルで接続します。

3.MPLAB Xを立ち上げて、appsフォルダーにあるhid_mouseプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

4.プロジェクトを実行します。

5.ディスプレイで、マウスカーソルが四角を描きます。

6.PICの8番ピンをGNDに接触させるたびに、マウスカーソルが止まったり、動いたりします。


HIDキーボード

  キーボードを模倣(emulation)します。

プロジェクト名はhid_keyboardです。このプロジェクトはマイクロチップ社が配布しているMicrochip Libraries for Applications v2018_11_26の中に含まれている\apps\usb\device\hid_keyboardプロジェクトをほんの少し手直ししただけのものです。

1.PICの8番ピンを抵抗10kΩでプルアップします(回路図中、8番ピンと5Vラインの間に10kΩを入れる)。このPICのCポートは”内部プルアップ”に対応していませんので、外部プルアップが必要になります。

2.PIC基板とPCをUSBケーブルで接続します。

3.MPLAB Xを立ち上げて、appsフォルダーにあるhid_keyboardプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

4.プロジェクトを実行します。

5.適当なエディッターソフトウェア(秀丸、ノートブック、ワードなど)を起動させます。

6.PICの8番ピンをGNDに接触させるたびに、a、b、c・・・・・の順にタイプされて行きます。

7.このプロジェクトでは、キーボードについている3つのLED(Num Lock、Caps Lock、Scroll Lock)のうち、Caps Lockに対応しています。パーソナル・コンピュータに接続されているキーボードで、Caps Lockの設定・解除(shiftキーを押しながらCaps Lockを押す)で、PIC基板の7番ピンがHになったり、Lになったりします。


一般的HID

  一般的(Generic)HIDでPICとパーソナル・コンピュータの間でデータを交換します。

プロジェクト名はhid_customです。このプロジェクトはマイクロチップ社が配布しているMicrochip Libraries for Applications v2018_11_26の中に含まれている\apps\usb\device\hid_customプロジェクトをほんの少し手直ししただけのものです。

1.PIC基板とPCをUSBケーブルで接続します。

2.MPLAB Xを立ち上げて、appsフォルダーにあるhid_customプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

3.プロジェクトを実行します。

4.パーソナル・コンピュータ用のアプリケーション・ソフトウェアはapps\hid_custom\utilitiesフォルダーの中にあります。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。apps\hid_custom\utilitiesフォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディットボックスと送信ボタンを持つダイアログ(対話)・ウィンドウが現れます。 例えば上のボックスに123と入れて、送信ボタンをクリックすると、下のボックスに223と現れれば、正常に動作しています。送信された文字列のうち、第1番目の文字だけが変わったもの(アスキーコードで1足されたもの)が、下のボックスに現れるはずです。


USB(ベンダークラス)

  USB(vendor specific class)でPICとパーソナル・コンピュータの間でデータを交換します。ベンダークラスは、ベンダー側(供給側)が定義するクラスでHIDより汎用性が有るクラスです。PIC18F2550の章で紹介した2550_WinUSBも参照ください。

プロジェクト名はvendor_basicです。このプロジェクトはマイクロチップ社が配布しているMicrochip Libraries for Applications v2018_11_26の中に含まれている\apps\usb\device\vendor_basicプロジェクトをほんの少し手直ししただけのものです。

1.PIC基板とPCをUSBケーブルで接続します。

2.MPLAB Xを立ち上げて、appsフォルダーにあるvendor_basicプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

3.プロジェクトを実行します。

4.デバイストライバーを組み込みます。具体的には、apps\vendor_basic\utilities\winusb_installerにあるUSBDriverInstaller.exeを実行します。

5.パーソナル・コンピュータ用のアプリケーション・ソフトウェアはapps\vendor_basic\utilitiesフォルダーの中にあります。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。apps\vendor_basic\utilitiesフォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディットボックスと送信ボタンを持つダイアログ(対話)・ウィンドウが現れます。 例えば上のボックスに123と入れて、送信ボタンをクリックすると、下のボックスに223と現れれば、正常に動作しています。送信された文字列のうち、第1番目の文字だけが変わったもの(アスキーコードで1足されたもの)が、下のボックスに現れるはずです。


USB(CDC)

  上記PIC基板をCDC(Communication Device Class)機器として、パーソナル・コンピュータと接続し、PIC基板とPCの間でデータのやり取りを行います。PCからCDC機器としたPIC基板を見ると、PCはPIC基板をまるでRS232C機器であると認識します。したがって、PC上でRS232C機器と通信を行うための”Tera Term”なるアプリケーション・ソフトウェア(ウェブで検索ください。フリーソフトです。)を利用するだけで、PCからPIC基板を制御できるようになります。

プロジェクト名はcdc_basicです。このプロジェクトはマイクロチップ社が配布しているMicrochip Libraries for Applications v2018_11_26の中に含まれているmicrochip\mla\v2018_11_26\apps\usb\device\cdc_basicプロジェクトをほんの少し手直ししただけのものです。

1.PICの8番ピンを抵抗10kΩでプルアップします(回路図中、8番ピンと5Vラインの間に10kΩを入れる)。このPICのCポートは”内部プルアップ”に対応していませんので、外部プルアップが必要になります。

2.PIC基板とPCをUSBケーブルで接続します。

3.MPLAB Xを立ち上げて、appsフォルダーにあるcdc_basicプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

4.プロジェクトを実行します。

5.デバイストライバーを組み込みます。具体的には、apps\cdc_basic\utilities\cdc_installerにあるUSBDriverInstaller.exeを実行します。

6.デバイストライバーの組み込みに成功すると、下図のようなバルーンがツールバーの近くに現れます。

7.PC上でTera Termを起動して、メニューから”設定->シリアルポート”を選択すると、シリアルポート設定画面が以下の様に現れるので、ポートを上図のポート(今の場合COM3)、ボーレートを57600 bps、データビットを8ビット、 パリティはなし, ストップビットを1、フロー・コントロールはなし、と設定してください。 設定が終わったら、シリアルポート設定画面を閉じ、メニューから”設定->設定の保存”を選択して、シリアルポート設定内容をファイルに保存しておくと、次回の接続時には、自動的に保存した設定内容が反映されます。

8.キーボードから適当なキーを押下すると、押したキーに対するアスキーコードに1を足したものが、Tera Termの画面に現れるはずです。たとえば、”1”なるキーを押下すると、”2”がTera Termの画面に現れるはずです。アスキーコードに1を足すという発想法は、どこかで見たことが・・・・。

9.PICの8番ピンをGNDに接触させるたびに、"Button pressed."なる文字列がTera Termの画面に現れるはずです。


HID+HID(2インターフェース複合HIDデバイス)

  1つのPICの中に、互いに独立な2つのHIDを実現し、パーソナル・コンピュータとの間でデータを交換します。

プロジェクト名はhid+hidです。このプロジェクトはマイクロチップ社が配布しているMicrochip Libraries for Applications v2018_11_26の中に含まれている\apps\usb\device\hid_customプロジェクトを手直したものです。

1.PIC基板とPCをUSBケーブルで接続します。

2.MPLAB Xを立ち上げて、appsフォルダーにあるhid+hidプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

3.プロジェクトを実行します。

4.パーソナル・コンピュータ用のアプリケーション・ソフトウェアはapps\hid+hid\utilitiesフォルダーの中にあります。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。

apps\hid+hid\utilitiesフォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディット・ボックスと2つのボタンを持ったダイアログ・ウィンドウが現れます。上のエディット・ボックスに適当な文字列を入れて、ボタンのどちらかを押すと、下のエディット・ボックスに文字列が現れます。入力した文字列の最初の文字だけが変化します。たとえば、上のエディット・ボックスに“123” と入れて、"INT1"ボタンを押すと、下のエディット・ボックスに“223”が現れます。入力した文字列の最初の文字にアスキーコードで1を足したものが、‘2’ = ‘1’ +1となって、下のエディット・ボックスに現れる文字列の最初の文字となります。文字列の他の部分はそのままPICを経由してPCへと返ってきます。もし、"INT2"ボタンを押すと、下のエディット・ボックスに“323”が現れます。入力した文字列の最初の文字にアスキーコードで2を足したものが、‘3’ = ‘1’ +2となって、下のエディット・ボックスに現れる文字列の最初の文字となります。

なお、もしも、hid_customやhid+マウス・プロジェクトを過去に使用していた時には、使用していたドライバーをUSBDeview(Webで検索してください)で、前もってアンインストールしておく必要があります(同じPIDとVIDを使用しているため)。


HID+マウス(2インターフェース複合HIDデバイス)

  1つのPICの中に、互いに独立なHID1つとHIDマウス1つを実現し、パーソナル・コンピュータとの間でデータを交換します。

プロジェクト名はhid+mouseです。このプロジェクトはマイクロチップ社が配布しているMicrochip Libraries for Applications v2018_11_26の中に含まれている\apps\usb\device\hid_customプロジェクトを手直したものです。

1.PIC基板とPCをUSBケーブルで接続します。

2.MPLAB Xを立ち上げて、appsフォルダーにあるhid+mouseプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

3.プロジェクトを実行します。

4.パーソナル・コンピュータ用のアプリケーション・ソフトウェアはapps\hid+mouse\utilitiesフォルダーの中にあります。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。

apps\hid+mouse\utilitiesフォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディット・ボックスと2つのボタンを持ったダイアログ・ウィンドウが現れます。上のエディット・ボックスに“123” と入れて、"INT1"ボタンを押すと(INT2ボタンは意味がありません)、下のエディット・ボックスに“223”が現れます。入力した文字列の最初の文字にアスキーコードで1を足したものが、‘2’ = ‘1’ +1となって、下のエディット・ボックスに現れる文字列の最初の文字となります。 また、上のエディット・ボックスに'y'から始まる文字列を入れ、"INT1"ボタンを押すとマウスカーソルが右に50だけ移動します。

なお、もしも、hid_customやhid+hidプロジェクトを過去に使用していた時には、使用していたドライバーをUSBDeview(Webで検索してください)で、前もってアンインストールしておく必要があります(同じPIDとVIDを使用しているため)。


USB シリアル変換器

  PIC24FJ64GB002の章でPIC回路とRS232C回路という項目の中に、RS232C回路(デバッグ・モニター用の回路)というものがあります。これは、PIC24FJ64GB002が出力するシリアル(USART:Universal Synchronous Asynchronous Receiver Transmitter)信号をRS232Cの信号に変換するためのものです。変換された信号は、パーソナル・コンピュータのRS232C用の入力コネクタを通して、パーソナル・コンピュータに取り込まれることになります。ただ、ノートパソコンは、RS232C用の入力コネクタを持っていないのが普通なので、これまで、USB RS232C変換ケーブルを使用して、RS232C回路をノートパソコンのUSB端子に接続して来ました。変換ケーブルでは、CDCというUSBクラスを使っていますので、変換ケーブルをPCから見ると、まるでRS232C機器の様に見えます。

つまり、PIC24FJ64GB002からノートパソコンへの接続形態は

PIC24FJ64GB002 --(シリアル信号)--> RS232C回路 --(RS232C信号)--> USB RS232C変換ケーブル --(USB信号)--> ノートパソコン

のようになっていました。

ここでは、RS232C回路 --- USB RS232C変換ケーブル の部分をPIC16F1455を用いて作成した「USB シリアル変換器」に置き換えることにします。

結局、接続形態が

PIC24FJ64GB002 --(シリアル信号)--> 「USB シリアル変換器」 --(USB信号)--> ノートパソコン

のように簡素化されます。

1.PIC基板とPCをUSBケーブルで接続します。

2.MPLAB Xを立ち上げて、appsフォルダーにあるcdc_serial_emulatorプロジェクト(pic16f1455)を読み込み、これをメインプロジェクトにします。

3.プロジェクトを実行します。

4.PIC24FJ64GB002基板との接続は、PIC24FJ64GB002基板でのピンヘッダJP2の2,3,5番ピンをそれぞれ、USB シリアル変換器のピンヘッダJP2の1,2,3番ピンに繋ぎます。

5.USB シリアル変換器とPCをUSBケーブルで接続します。後は、上記、USB(CDC)の節と同じように、デバイストライバーを組み込んでいなければ、組み込んでください。また、Tera Termも適切に設定してください。

6.PIC24FJ64GB002基板がない場合は、USB シリアル変換器のピンヘッダJP2の1番ピンと2番ピンを接続します。これで、シリアル出力から出たデータをシリアル入力に戻すことができます。いわゆるループバック・テストができます。Tera Termを起動して、パーソナル・コンピュターのキーボードから、適当な文字を打ち込むと、その文字がTera Termウィンドウ上に現れます。USB シリアル変換器のピンヘッダJP2の1番ピンと2番ピンの接続を解除すれば、文字を打ち込んでも、Tera Termウィンドウ上に文字が現われることはありません。

ところで、このプロジェクトはマイクロチップ社が配布しているMicrochip Libraries for Applications v2018_11_26の中に含まれている\apps\usb\device\cdc_serial_emulatorプロジェクトをほんの少し手直ししただけのものです。


戻る