PIC18F4550

目次:(2011年5月3日更新)


PIC18F4550

  ここでは、Microchip社のフォーラムでの質問に回答するために作成したサイトPIC18F4550を日本化しています。

PIC18F4550を用いたテスト回路

  以下にEAGLEというソフトウェア(試用版)で作成した回路図と実際の回路を示します。回路は、穴あき基板上で組んでいます。OSC1には20MHzのセラミック発振子(コンデンサー内蔵:商品名セラロック)を用いています。セラロックは3本足で、両端の2つの足はPIC18F4550の13と14番ピンにそれぞれ配線し、残りの真ん中の足はGNDに落として使います。 初めは、動作確認ができれば良いので、できるだけ単純な回路にすべきとの観点から、特別な周辺回路はなにもありません。


回路動作確認

  PIC用のファームウェアをコンパイルするために MPLAB8_63zip MPLAB C for PIC18 v3.37.01 in LITE modeサインインが必要) をダウンロードして、この順番でPC(パーソナル・コンピュータ)にインストールしてください。

  PIC用のファームウェアをコンパイルするために MPLAB8_63zip MPLAB C for PIC18 v3.37.01 in LITE modeサインインが必要) をダウンロードして、この順番でPC(パーソナル・コンピュータ)にインストールしてください。

なお、 MPLABのマニュアルは MPLAB IDE User's Guide です。 また、MPLAB-C18のユーザーズガイドは MPLAB C18 C Compiler User's Guide (Japanese) で、MPLAB-C18のライブラリ説明書は MPLAB C18 Libraries Documentationです。

USB関連のPICに書き込むファームウェアは Microchip Application Libraries v2010-10-19の中に含まれていますので、ダウンロードして、PCにインストールしてください。

まず、作成した回路がきちんと働いているかどうかを確かめます。ファームウェア4550_Wait.zipをPICに書き込みます。

1.4550wait フォルダーを d:\ (dディスクのルートディレクトリ)に置きます。

2. 4550wait.mcpか4550wait.mcw (4550wait フォルダーの中にあります)をダブルクリックします。すると、MPLAB IDEが起動します。

3.ファームウェアをコンパイル、リンクするために、MPLAB IDEのメニューから "Project->Built ALL" を選択します。

4.メニューから "Programmer->Select Programmer" を選択して、お使いの書き込み器(プログラマー)を指定します。私はIDC3を使用しています。.

5.メニューから"Programmer->Program" を選択してPICにファームウェアを書き込みます。

6.ファームウェアを走らせるために "Programmer->Release From Reset "を選択します。

ファームウェアを走らせると、約1秒周期のパルス( 5V - 0 V -5V ...) がPICの38番ピンから出力されますので、テスターで、このピンの電圧を測定してください。もし、パルスが出ていなければ回路に問題がありますので、回路を再チェックしてください。 main.cの中身をみれば、何をしているのかが簡単に分かると思います。なお、Delay10KTCYx ()関数については、 上記MPLAB C18 Libraries Documentationの142ページを見てください。.

使用するディレクトリ配置を変えたい場合があります。たとえば、ルート・ディレクトリをD:\ から C:\へ変えたい場合などです。その場合、サーチ・パスを変える必要があります。メニューから"Project->Built Options->Project"を選択して、以下のようなダイアログを出します。変更すべきサーチ・パスが5種類ありますので、適切に設定してください。


USB HID マウス

  次に、上記回路でUSB機能が正常に働いていることを確かめるために、マウスカーソルを動かし、PCのディスプレーに円を描かせることにします。

USB関連のファームウェア例を、上記Microchip Application Libraries v2010-10-19の中から探すためのキーワードは"PICDEM"です。 PICDEM(TM) FS-USB はマイクロチップ社から発売されている評価キットですが、そこでは PIC18F4550を使っているので、このキットのためのファームウェアを利用しようという訳です。

1.C:\Microchip Solutions v2010-10-19\USB Device - HID - Keyboard\Firmware\ USB Device - HID - Mouse - C18 - PICDEM FSUSB.mcwを使用します。

2.USB Device - HID - Mouse - C18 - PICDEM FSUSB.mcwまたは PICDEM FSUSB.mcpなる名前のアイコンをダブルクリックします。すると、MPLAB IDEが起動しますので、プロジェクトを格納するために、メニューから“Project->Save Project As..”を選択します。Dディスクのルートディレクトリ(d:\)に“4550_Mouse”なる名前のフォルダーを新たに作り、そのフォルダーの中にさらに “Mouse”なる名前のフォルダーを作ってください。そして、その中にプロジェクト名を“Mouse”として プロジェクトを格納します。 MPLAB IDEを終了します。

すると、次の図のように2つのフォルダーがd:\にできているはずです。

3.D:\4550_Mouse\Mouse\ Mouse.mcw (またはMouse.mcp)のアイコンをダブルクリックします。MPLAB IDEが起動しますので、ファームウェアをビルド(コンパイルとリンク)するために、メニューから”Project->Build All”を選択します。もし、エラーがなければ “BUILD SUCCEEDED”なる1文が現れます。

4.mouse.cを少し変えます。余分なファームウェア・コードがたくさんありますが、ここでは最小限の変更だけに留めておきます。

mouse.cの中のファームウェア・コードを見て、その中で //YTSなるコメント文を見つければ、どこを変更したのかが分かります。上にも書きましたが、余分なファームウェア・コード がたくさん残っていますので、適宜削除してください。

5.得られたファームウェアをビルドしてPICに書き込んで(プログラムして)ください。PICと PCとを USBケーブルで繋いだあと、ファームウェアを実行します。マウスカーソルがPCのディスプレー上で円を描いたら、USB機能が正常に働いていることになります。もし、うまく働かなければ、回路を再チェックする必要があります。

参考までに、これまでの作業でできたファイルは、 4550_Mouse.zipMicrochip.zipとです。これらを使う場合には、Dディスクのルートディレクトリ (d:\)に置きましょう


HID キーボード

1.C:\Microchip Solutions v2010-10-19\USB Device - HID - Keyboard\Firmware\ USB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcwを使用します。

2. USB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcwまたは USB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcpなる名前のアイコンをダブルクリックします。すると、MPLAB IDEが起動しますので、プロジェクトを格納するために、メニューから“Project->Save Project As..”を選択します。Dディスクのルートディレクトリ(d:\)に“4550_keyboard”なる名前のフォルダーを新たに作り、そのフォルダーの中にさらに “keyboard”なる名前のフォルダーを作ってください。そして、その中にプロジェクト名を“keyboard”として プロジェクトを格納します。 MPLAB IDEを終了します。すると、4550_keyboard、 Microchip なる2つのフォルダーがd:\にできているはずです。

3.D:\4550_keyboard\keyboard\ keyboard.mcw (またはkeyboard.mcp)のアイコンをダブルクリックします。MPLAB IDEが起動しますので、ファームウェアをビルド(コンパイルとリンク)するために、メニューから”Project->Build All”を選択します。もし、エラーがなければ “BUILD SUCCEEDED”なる1文が現れます。

4.main.cを少し変えます(面倒であれば変えなくてもかまいません)。余分なファームウェア・コードがたくさんありますが、ここでは最小限の変更だけに留めておきます。

Keyboard.cの中のファームウェア・コードを見て、その中で //YTSなるコメント文を見つければ、どこを変更したかが分かります。上にも書きましたが、余分なファームウェア・コード がたくさん残っていますので、適宜削除してください。

5.得られたファームウェアをビルドしてPICに書き込んで(プログラムして)ください。メモ帳やワードなどのエディッタープログラムを起動します。その後、 PICと PCとを USBケーブルで繋いで、フームウェアを実行します。"HardwareProfile - PICDEM FSUSB.h"のなかで、”sw3”がPORTBbits.RB5として定義されていますので、PICの38番ピンを手で触れてください。手で触ることにより、このピンにノイズが入ります。すると、文字 (abcdef.....)がエディッタープログラムの画面に現れます。実用的には、38番ピンをファームウェアの中でプルアップする(このピンに信号が入っていない状態で5V程度に保持する)必要があります。PIC18F4550では、Bポート(RBPU bit ;INTCON2<7>)とDポート(RDPU bit; PORTE<7>)がファームウェアの中でプルアップ可能です。

参考までに、これまでの作業でできたファイルは、 4550_keyboard.zipMicrochip.zipとです。これらを使う場合には、Dディスクのルートディレクトリ (d:\)に置きましょう。

追加事項:
Bポートのすべてのピン( RB0からRB7まで)をプルアップするためには、Keyboard.c中の関数 "InitializeSystem()"に、以下のように1行足すことが必要です。 この結果、PICの38番ピンを手で触れても、なにも起こりません。このピンをGNDに触れたときだけ、1文字づつエディッタープログラム画面に現れるようになります。

static void InitializeSystem(void)
{
  #if (defined(__18CXX) & !defined(PIC18F87J50_PIM))
        ADCON1 |= 0x0F;                // Default all pins to digital
        INTCON2bits.RBPU=0;                //<------------------------ この1行を追加する。
    #elif defined(__C30__)
        #if defined(__PIC24FJ256GB110__) || defined(__PIC24FJ256GB106__)

PIC18F4550のコンフィグレーション(設定)ビットに関しては、C:\Program Files (x86)\Microchip\MPASM Suite\P18F4550.INCを、またHIDキーコー(ドHID Usage ID)に 関してはtranslate.zipを参照ください。


HID 4×4  キーパッド

  RB0からRB3までは4×4キーパッドのCol1からCol4までに、そしてRB4からRB7までは同キーボードのRow1からRow4 までに接続します。以下のファームウェアをビルドしてPICに書き込んで(プログラムして)ください。メモ帳やワードなどのエディッタープログラムを起動します。その後、 PICと PCとを USBケーブルで繋いで、フームウェアを実行します。キーパッドのキーを押すと、文字がエディッタープログラムのウィンドウに現れます。

4550_keypad.zip Microchip.zipをDディスクのルートディレクトリに置いてください。

ファームウェアの簡単な説明

A) PCへのデータ転送

考慮すべき点が2つあります。

1.関数 ProcessIO() は関数 main()から繰り返し呼ばれる。
2.関数HIDTxHandleBusy(lastINTransmission)の値はいつもゼロとは限らない。

PCへのデータ転送は概ね以下のようにして行っています。

if(!HIDTxHandleBusy(lastINTransmission))
    {PCにキーデータを送る}
if(!HIDTxHandleBusy(lastINTransmission))
    {PCにキーを放した情報を送る}

{PCにキーデータを送る} は実行されるでしょうが、 {PCにキーを放した情報を送る}は{PCにキーデータを送る}と同時に実行されるとは限りません。その場合、関数Keyboard(void)がProcessIO()から次回呼ばれるときに 、 {PCにキーを放した情報を送} だけを実行しなければいけません。このために、”PCにキーデータを送ったけれども、PCにキーを放した情報を送ってはいない”ということを示すためのフラグ、 FlagSentData、が必要となります。

B) キースキャン(キー走査)

キースキャンは、概ね以下のようになっています。

一回目のキースキャン
20ミリ秒間待機 (500/12ミリ秒、すなわち Delay10KTCYx(50);の方が良い)
二回目のキースキャン

チャタリング(スイッチは接点で飛び跳ねが起こるので、例えばONにした時には、ONになったりOFFになったりを繰り返し、最終的にONになります。)が起こったときは、一回目のキースキャンの結果と二回目のキースキャンの結果が異なりますので、キーデータは破棄します。これらの結果が同じ時、チャタリングは終わったとして、どのキーが押されたかを判定します。

例えば、一回目のキースキャンでPB0bitの値(キーデータ)は、“buf1[0][0]=PORTBbits.RB0”なるコードで 、buf1[0][0] に格納します。そして、20(50)ミリ秒後、二回目のキースキャンを行い、そこで得られたPB0bitの値とbuf1[0][0] に格納したキーデータとを、 “if(buf1[0][0]!= PORTBbits.RB0) return”なるコードで比べます。もし、違えばチャタリングが起こっているということで、buf1[0][0] に格納したキーデータを捨て、 ProcessIO()に戻します。

C) キーが押されたことのチェック

キースキャンで得られたすべてのビットの和を次のコードで得ます。

bufsum=0; for(j=0;j<4;j++)for(i=0;i<4;i++) bufsum+=buf1[j][i];

どのキーも押されていないときには、bufsumは16となります。1つのキーだけが押された時だけ、bufsumが15となります。2つ以上のキーが同時に押されたときはbufsumが15より小さくなりますので、その場合、“if(bufsum<15 ) return” なるコードで、キーデータを捨てて ProcessIO() に戻します。.

まとめ:
FlagSentData==1; キーデータはPCに送ったけれども、キーを放した情報はまだ送っていない。
FlagSentData==0; キーはまだ押されていない。 あるいは、キーデータもキーを放した情報もPCにすでに送った。
bufsum==15: 1つのキーだけが押された。
bufsum ==16; どのキーも押されていない。あるいはキーを放した。

D) キーデータの送信

i) 1つのキーだけが押されていて (bufsum==15)、キーデータがまだPCに送られていない (FlagSentData==0)場合、キーデータを送らなければいけない。
ii) 1つのキーだけが押されていて (bufsum==15)、) キーデータがすでにPCに送られている (FlagSentData==1; 同じキーが押し続けられている)場合、キーイベントを無視して ProcessIO()に戻す。
iii) どのキーも押されておらず (bufsum ==16)、キーデータがまだ送られていない場合 (FlagSentData==0), つまりキーが押されていない場合、単にProcessIO()に戻す
iv) どのキーも押されておらず (bufsum ==16)、キーデータがすでにPCに送られているけれども、キーを放した情報がまだ送られていない (FlagSentData==1)場合、キーを放した情報をPCに送る。送らないと、例えば、'a'に相当するキーを押して、すぐにキーを放したとしても、“aaaaaaaaaaaaa….”なる連続した文字がエディタープログラム画面に現れてしまいます。

E) キースキャンの補足

キースキャンの最初の部分は次のようになっています。

    //PORTBbits.RB0 Col1
    //PORTBbits.RB1 Col2
    //PORTBbits.RB2 Col3
    //PORTBbits.RB3 Col4
    PORTBbits.RB4 =0; //Row1
    PORTBbits.RB5 =1; //Row2
    PORTBbits.RB6 =1; //Row3
    PORTBbits.RB7 =1; //Row4

    buf1[0][0]=PORTBbits.RB0; buf1[0][1]=PORTBbits.RB1; buf1[0][2]=PORTBbits.RB2; buf1[0][3]=PORTBbits.RB3;

この場合、RB4bit (Row1)だけが 0 (L or 0V)となります。 (Col3;Row1)スイッチを押した場合、RB2bit (Col3;) だけが 0 (L or 0V)なる値を持ち、この値がbuf1[0][2]に格納されます。他のメモリー(buf1[0][0], buf1[0][1], そして buf1[0][3])には1なる値が入ることになります。というのは、RB0からRB3までのすべてのピンが、ファームウェアでVddにプルアップされているからです。


PORTB Interrupt-on-Change

  PICの37番ピン(RB4)と GND (Vss)との間に、タクトスイッチか跳ね返りスイッチを入れ、2番ピン(RA0)の出力電圧をテスターで調べてください。スイッチを押すたびに、2番ピン(RA0)の出力電圧が5Vー0V-5V・・・・と変化します。 ファームウェアは 4550_INT.zipです。


AD  コンバータ

  PIC18F4550のAD変換機能を使って、アナログ・ジョイスティックを模擬します。ここでは、20 kΩのBカーブ(回転角度と比例して抵抗値が変化する)の半固定抵抗を2つ使用しました。10kΩ程度のものであれば、同じように使用できます。各々の半固定抵抗の両端の端子は、それぞれGND (Vss=0V)とVdd(5V)に繋ぎます。各々の半固定抵抗の真ん中の端子は、それぞれPICの2番ピン(RA0)と3番ピン(RA1)に繋ぎます。これらのピンはAD変換用アナログ入力として設定しているので、これらのピンの電圧値は、 0x0000と0x03ffの間の値としてPICにより読み取ることができます。以下のファームウェアはMPLABのデバックモードで実行してください。ウオッチ・ウィンドウにて data (int variable) の値をチェックすると、電圧値に対応した値が分かります。

4550_AD.zipがファームウェアです。


赤外送信機(NECプロトコル)

  以下に示す回路をPICの2番ピン(RA0)に接続してください。赤外発光ダイオード(D1:赤外LED)には100mA程度の電流が流れるようにR1の値を変える必要があるかもしれません。以下のファームウェアでは、NECプロトコルというデータ転送手順を使用、東芝テレビのチャンネルUPに相当する信号を繰り返し送信しています。NECプロトコルに関しては、例えば、YASUSIさんの赤外線リモコン:送信フォーマットと送信部同:受信部の設計をご覧ください。ところで、C言語でファームウェアを作る場合、時間タイミングの問題で試行錯誤が必要です。これは関数を呼び出すときに、オーバーヘッド(呼び出し時間)がかかるのですが、これがどの程度の時間なのか分からないからです。なお、赤外線リモコンに関しては、tomcatなるサイトが有名です(アセンブラ言語です)。

4550_IR.zipがファームウェアです。


赤外受信機(NECプロトコル)

  PIC18F2550で受信します。基にする回路に関しては、PIC18F2550の章を参照してください。その回路の2番ピン(RA0)に、以下の図のように、赤外受信モジュール (SPS-445-1, CRVP1738, PL-IRM2121-A538など)のOUTピンを接続します。本ファームウェアはテスト用で、MPLABのデバッグモードでしか動作確認はできません。ブレークポイントをmain.cの上から37行目の”Delay1KTCYx(50); //10 msec”の行に設定して、 b[4]の値(受信4バイトデータ)をウオッチ・ウィンドウで確認ください。最終的には、このデータをUSB経由でPCに送ることになります。赤外受信機をPIC18F2550で作るのは、コンパクト性を重視するからです。PIC18F4550では大きすぎます。

2550_IR.zipがファームウェアです。


2つのボリュームによるマウスカーソル位置制御

  ADコンバータのところで示したように、2つの半固定抵抗をPICに繋ぎ、またPICとPC(パーソナル・コンピュータ)をUSBケーブルで繋いでください。このファームウェアは、アナログ・ジョイスティックでマウス・ポインターを操作することを目的として作りました。半固定抵抗を回すと、回転角に相当する速さでマウス・ポインターが移動します。

4550Joy_Mouse.zip Microchip.zipをDディスクのルートディレクトリに置いてください。


複合HIDデバイス (マウス+キーボード):Multiple Top-Level Collection devise

  1つのインターフェースしか持たない複合HIDデバイス です。*注)マウスとキーボード機能を1つのPIC上で実現したものです。“4550_Mouse.zip”との違いは、以下の通りです。

1. Usb_descripters.c
  a. DESC_CONFIG_WORD (115) //上から215行目
  b. DESC_CONFIG_WORD (9) //上から222行目
  c. HID REPORT DESCRIPTOR //上から247行目以下

2. usb_config.h
  a. #define HID_INT_OUT_EP_SIZE 9
  b. #define HID_INT_IN_EP_SIZE 9
  c. #define HID_RPT01_SIZE 115

3. mouse.c
  //YTSなるコメントで示した部分

エディタープログラム(メモ帳)を起動した後、PICとPCをUSBケーブルで繋ぎます。マウスカーソルがディスプレイ画面上で円を描くと同時に、メモ帳のウィンドウに文字列(“abcd+空白”) が繰り返が現れます。

4550_Mouse_Key.zip Microchip.zipをDディスクのルートディレクトリに置いてください。

*注:このファームウェアは2つのインターフェースを持つ複合HIDデバイスではありません。1つのインターフェース上で複合HIDデバイスを実現しています。マウスとキーボードの区別はレポートIDで区別します。BIOSを立ち上げたときに(Windowsが立ち上がる前)使える周辺機器をブートデバイスといいますが、Multiple Top-Level Collection deviseではブートデバイスとなりません。


複合HIDデバイス (キーボード+マルチメディア・ボタン):Multiple Top-Level Collection devise

ファームウェアはMultiKey.zip です。このファームウェアはマイクロソフト社が提供しているUSB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcw (Microchip Solutions v2012-04-03)を基に作っています。PIC18F4550の33番ピンは'a’キーに、34番ピンは‘A’キーに、35番ピンはボリューム・ダウンに、そして36番ピンはボリューム・アップに対応しています。これらのピンの1つをGNDに落とすと、対応するキー動作が起動します。

キーボードにはリポートIDが1を,マルチメディア・ボタンにはリポートIDが2を割り当てています。なお、マルチメディア・ボタンの情報は1バイト(8ビット)でPCに送りますが、そのビット形式は以下の通りです。
bit 7: reserved で常に0とします。
bit 6: ボリューム・ダウン
bit 5: ボリューム・アップ
bit 4: ミュート
bit 3: プレイ/ポーズ
bit 2: ストップ
bit 1: 前のトラックへ
bit 0: 次のトラックへ
例えば、0x40はボリューム・ダウンを、0x20はボリューム・アップを意味します。

USB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcw (Microchip Solutions v2012-04-03)”からの主なる変更は次の通りです。:

1. Usb_descripters.c
  a. DESC_CONFIG_WORD (104) //上から216行目
  b. DESC_CONFIG_WORD (9) //上から223行目
  c. DESC_CONFIG_WORD (1) //上から231行目
  d. HID REPORT DESCRIPTOR ////上から257行目以下

2. usb_config.h
  a. #define HID_INT_IN_EP_SIZE 9
  b. #define HID_RPT01_SIZE 104

3. MultiKey.c (元々のファイル名はKeyboard.cでした)
  //YTSなるコメントで示した部分


複合HIDデバイス (マウス+キーボード)

  2つのインターフェースを持つ複合HIDデバイス です。マウスとキーボード機能を1つのPIC上で実現したものです。マウスとキーボードはインターフェース番号で区別します。ブートデバイスにすることが可能です。

38番ピンはファームウェアでプルアップしています。このピンをGNDにつけると、文字が現れます(チャタリング防止策をとっていません)。一方、マウスカーソルは円を描き続けます。このファームウェアはMicrochip社が配布している "USB Device - HID - Mouse - C18 - PICDEM FSUSB" から作りました。//YTSなるコメント文で示したところが変更点です。

4550_Mouse_Key_COM_YTS.zip をDディスクのルートディレクトリ(d:\)に置いてください。


複合HIDデバイス (2つのHIDクラス)

  2つのインターフェースを持つ複合HIDデバイス です。2つのHIDクラスを1つのPICで実現しています。2つのHIDはインターフェース番号(0と1)で区別します。

ファームウェア(PIC用)
4550_2HID.zip をDディスクのルートディレクトリ(d:\)に置いてください。

アプリケーション・ソフトウェア(PC用)
VC6.zip
“Interface”という名前のクラス(C++で言うところのクラス)を VC++ Ver. 6で作成しました。このクラスを使用すると、特定のインターフェースに対応する読み書き用のハンドルを得ることができます。たとえば、“CInterface aaa(0);”と宣言すれば、インターフェース番号0番の書き込み用ハンドルが"aaa.WriteHandle"で、同じように“CInterface bbb(1);”と宣言すれば、インターフェース番号1番の書き込み用ハンドルが" bbb.WriteHandle"で得られます。ここでインスタンス(C++で言うところのインスタンス)名“aaa” や “bbb”は任意で結構です。

PICとPCをUSBケーブルで繋いだ後、アプリケーション・ソフトウェアをPC上で実行すると、2つのエディット・ボックスと2つのボタンを持ったダイアログ・ウィンドウが現れます。上のエディット・ボックスに適当な文字列を入れて、ボタンのどちらかを押すと、下のエディット・ボックスに文字列が現れます。入力した文字列の最初の文字だけが変化します。たとえば、上のエディット・ボックスに“123” と入れて、"INT1"ボタンを押すと、下のエディット・ボックスに“223”が現れます。入力した文字列の最初の文字にアスキーコードで1を足したものが、‘2’ = ‘1’ +1となって、下のエディット・ボックスに現れる文字列の最初の文字となります。文字列の他の部分はそのままPICを経由してPCへと返ってきます。もし、"INT2"ボタンを押すと、下のエディット・ボックスに“323”が現れます。入力した文字列の最初の文字にアスキーコードで2を足したものが、‘3’ = ‘1’ +2となって、下のエディット・ボックスに現れる文字列の最初の文字となった訳です。


複合HIDデバイス (キーボード+HIDクラス)

  2つのインターフェースを持つ複合HIDデバイス です。キーボード機能とHIDクラスを1つのPIC上で実現したものです。両者は、2つのHIDはインターフェース番号(0と1)で区別します。キーボードが0に、HIDクラスが1に対応します。

ファームウェア(PIC用)
4550_KeyHid.zip

アプリケーション・ソフトウェア(PC用)
  VC6.zip   (上記参照)

メモ帳などのエディタ・ソフトウェアを立ち上げた後、PICの38番ピンを指で触れる、文字が現れます。

その一方、アプリケーション・ソフトウェア(VC6.exe)をPC上で実行すると、2つのエディット・ボックスと2つのボタンを持ったダイアログ・ウィンドウが現れます。上のエディット・ボックスに“123” と入れて、"INT2"ボタンを押すと(INT1ボタンは押してはいけません)、下のエディット・ボックスに“323”が現れます。入力した文字列の最初の文字にアスキーコードで1を足したものが、‘3’ = ‘2’ +1となって、下のエディット・ボックスに現れ現れる文字列の最初の文字となります。


戻る