注意:以下のファームウェアは内部クロックを使用した場合のものです。外部クロックを使用する場合は、まず、Easy Setupタブを開いて①Oscillator Selecctと②External Clockを下図のように設定します。
次に、Registersタブを開いてACTENをdisabledにします。
EAGLEというソフトウェア(試用版)で作成した回路図と実際の回路の写真を示します。回路は、ユニバーサル基板(Takasu IC-701-72)上で組んでいます。27pFのコンデンサーはチップ型のものを用い、写真のように基板裏面に半田づけをしています。そして、水晶発振子(Xtal)には16MHzのものを用いています。
注意1:内部クロックを使用する場合(Active Clock Tuning機能を使用する場合には内部クロックを使用します)、2つの27pFのコンデンサーと水晶発振子は必要ありません。
注意2:回路図では電源電圧を3.3Vとしていますが、5Vまでの電圧でしたら問題なく動作します。
注意3:12MHzの水晶発振子を用いることもできますが、その時にはSystem Modulesを適当に設定してください。
作成した回路がきちんと働いているかどうかを確かめます。ファームウェアblinck45K50int.X.zipをPICに書き込み、実行します。
1.ピンヘッダJP1にはファームウェア書き込み器(たとえばICD3)を接続します。
2.blinck45K50int.X.zipを解凍して出てくるblinck45K50int.XフォルダーをMPLABXProjectsフォルダー(私の場合はC:\Users\yts\MPLABXProjects)の中に入れます。
3.MPLAB X を立ち上げ、blinck45K50int.Xフォルダーの中にあるプロジェクトを読み込みます(MPLAB XのメニューからFile->Open Project...を選択)。
4.Projectsウィンドウにおいて、blinck45K50intと書かれた箇所をマウスで右クリックして、サブメニューを出します。そのサブメニューのSet as Main Projectという項目がありますので、それを選択します。blinck45K50intが太文字になったことを確認します。
5.ファームウェアを走らせるために、MPLAB X のツールバーからRun Main Projectアイコン()をマウスでクリックします。すると、次のように、書き込み器(プログラマー)として何を使うかを尋ねられますので、IDC3などを選択します。OKボタンを押すと、ビルド(コンパイルとリンク)を行ったのち、ファームウェアをPICに書き込み、実行するまで自動で行ってくれます。
6.ファームウェアを走らせると、約1秒周期のパルス( 3.3V, 0V, 3.3V, ...) がPICの20番ピン(RD1ピン)から出力されますので、テスターで、このピンの電圧を測定してください。もし、パルスが出ていなければ回路に問題がありますので、回路を再チェックしてください。 main.cの中身をみれば、何をしているのかが簡単に分かると思います。
マウスを模倣(emulation)します。具体的にはマウスカーソルがディスプレイ上で四角を描きます。ファームウェアはhid_mouse45K50int.X.zipです。
1.PIC基板とPCをUSBケーブルで接続します。
2.MPLAB Xを立ち上げて、ファームウェアをPICに書き込み実行します。
3.ディスプレイで、マウスカーソルが四角を描きます。
4.PICの37番ピン(PIC内部でプルアップ済み)をGNDに接触させるたびに、マウスカーソルが止まったり、動いたりします。
キーボードを模倣(emulation)します。ファームウェアはhid_keyboard45K50int.X.zipです。
1.PIC基板とPCをUSBケーブルで接続します。
2.MPLAB Xを立ち上げて、ファームウェアをPICに書き込み実行します。
3.適当なエディッターソフトウェア(秀丸、ノートブック、ワードなど)を起動させます。
4.PICの37番ピン(PIC内部でプルアップ済み)をGNDに接触させるたびに、a、b、c・・・・・の順にタイプされて行きます。
5.このプロジェクトでは、キーボードについている3つのLED(Num Lock、Caps Lock、Scroll Lock)のうち、Caps Lockに対応しています。パーソナル・コンピュータに接続されているキーボードで、Caps Lockの設定・解除(shiftキーを押しながらCaps Lockを押す)で、PIC基板の20番ピンがHになったり、Lになったりします。
一般的(Generic)HIDでPICとパーソナル・コンピュータの間でデータを交換します。ファームウェアはhid_custom45K50int.X.zipです。
1.PIC基板とPCをUSBケーブルで接続します。
2.MPLAB Xを立ち上げて、ファームウェアをPICに書き込み実行します。
3.パーソナル・コンピュータ用のアプリケーション・ソフトウェアはhid_custom_utilities.zipです。hid_custom_utilitiesフォルダーの中にあります。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。hid_custom_utilitiesフォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディットボックスと送信ボタンを持つダイアログ(対話)・ウィンドウが現れます。 例えば上のボックスに123と入れて、送信ボタンをクリックすると、下のボックスに223と現れれば、正常に動作しています。送信された文字列のうち、第1番目の文字だけが変わったもの(アスキーコードで1足されたもの)が、下のボックスに現れるはずです。
USB(vendor specific class)でPICとパーソナル・コンピュータの間でデータを交換します。ベンダークラスは、ベンダー側(供給側)が定義するクラスでHIDより汎用性が有るクラスです。PIC18F2550の章で紹介した2550_WinUSBも参照ください。ファームウェアはvendor_basic45K50int.X.zipです
注意:MMCのデフォルトでは、ベンダークラスのProduct ID(PID)は0x0Aとなっています。0x53に変える必要があります。PID=0x0AはCDCのPIDとして使用しているからで、また、Microchip社が提供しているベンダークラス用のデバイス・ドライバーはPID=0x53用だからです。
1.PIC基板とPCをUSBケーブルで接続します。
2.MPLAB Xを立ち上げて、ファームウェアをPICに書き込み実行します。
3.デバイストライバーを組み込みます。具体的には、vendor_basic_utilities.zipを解凍して出てくるvendor_basic_utilitiesフォルダー内のwinusb_installerフォルダーの中にあるUSBDriverInstaller.exeを実行します。Instrall Driversボタンを押すとデバイスドライバーがインストールされます。なお、すでにインストールされたデバイスドライバーを削除するときはRemove Driversボタンを押します。
4.パーソナル・コンピュータ用のアプリケーション・ソフトウェアはvendor_basic_utilities.zipを解凍して出てくる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足されたもの)が、下のボックスに現れるはずです。
ファームウェアはcdc_basic45K50int.X.zipです。
上記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ケーブルで接続すると自動的にこのドライバーが組み込まれまれるようです(別途ドライバーを組み込む必要がない)。ポート番号を調べるために、ComNumber.zipを解凍して出て来るフォルダーのなかのComNumber.exeをPC上で実行します。実行ダイアログ画面からポート番号はCOM3ということが分かります。
4.PC上でTera Termを起動して、メニューから”設定->シリアルポート”を選択すると、シリアルポート設定画面が以下の様に現れるので、ポート番号(今の場合COM3)、ボーレートを57600 bps(など適当)、データビットを8ビット、 パリティはなし, ストップビットを1、フロー・コントロールはなし、と設定してください。 設定が終わったら、シリアルポート設定画面を閉じ、メニューから”設定->設定の保存”を選択して、シリアルポート設定内容をファイルに保存しておくと、次回の接続時には、自動的に保存した設定内容が反映されます。
5.キーボードから適当なキーを押下すると、押したキーに対するアスキーコードに1を足したものが、Tera Termの画面に現れるはずです。たとえば、”1”なるキーを押下すると、”2”がTera Termの画面に現れるはずです。
6.PICの37番ピン(PIC内部でプルアップ済み)をGNDに接触させるたびに、"Button pressed."なる文字列がTera Termの画面に現れるはずです。
7.参考までに、パーソナル・コンピュータ用のアプリケーション・ソフトウェアをcdc_utilities.zipに入れておきました。解凍して出てくるcdc_utilitiesフォルダーの中にあるCDCapprication_VCフォルダーは[Visual C++用]で、CDCappricationフォルダーは[C#用]です。cdc_utilitiesフォルダーの中の実行ファイル(CDCapprication_VC.exeかCDCapprication.exe)を実行すると、2つのエディットボックスと送信ボタンを持つダイアログ(対話)・ウィンドウが現れます。 例えば上のボックスに123と入れて、送信ボタンをクリックすると、下のボックスに234と現れれば、正常に動作しています。送信された文字列のそれぞれの文字にアスキーコードで1足されたものが、下のボックスに現れます。なお、 ソースコードのコンパイルにはVisual Studio Community 2022を使用しました。
1つのPICの中に、互いに独立な2つのHIDを実現し、パーソナル・コンピュータとの間でデータを交換します。ファームウェアはhid+hid45K50int.X.zipです。
1.PIC基板とPCをUSBケーブルで接続します。
2.MPLAB Xを立ち上げて、ファームウェアをPICに書き込み実行します。
3.パーソナル・コンピュータ用のアプリケーション・ソフトウェアは2interface_utilities.zipです。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。
2interface_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やHID+マウス・プロジェクトを過去に使用していた時には、使用していたドライバーをusbdeview-x64(Webで検索してください)などで、前もってアンインストールしておく必要があります(同じPIDとVIDを使用しているため)。
1つのPICの中に、互いに独立なHID1つとHIDマウス1つを実現し、パーソナル・コンピュータとの間でデータを交換します。ファームウェアはhid+mouse45K50int.X.zipです。
1.PIC基板とPCをUSBケーブルで接続します。
2.MPLAB Xを立ち上げて、ファームウェアをPICに書き込み実行します。
パーソナル・コンピュータ用のアプリケーション・ソフトウェアは2interface_utilities.zipです。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。
2interface_utilities.フォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディット・ボックスと2つのボタンを持ったダイアログ・ウィンドウが現れます。上のエディット・ボックスに“123” と入れて、"INT1"ボタンを押すと(INT2ボタンは意味がありません)、下のエディット・ボックスに“223”が現れます。入力した文字列の最初の文字にアスキーコードで1を足したものが、‘2’ = ‘1’ +1となって、下のエディット・ボックスに現れる文字列の最初の文字となります。 また、上のエディット・ボックスに'y'から始まる文字列を入れ、"INT1"ボタンを押すとマウスカーソルが右に50だけ移動します。
なお、もしも、一般的HIDやHID+HIDプロジェクトを過去に使用していた時には、使用していたドライバーをusbdeview-x64(Webで検索してください)などで、前もってアンインストールしておく必要があります(同じPIDとVIDを使用しているため)。