PIC

コンピュータのオペレーティング・システム(OS)がWindowsになり、簡単に実験装置をコンピュータで制御することが難しくなりました。

例えば10ミリ秒の時間幅を持つパルスを(クロックの精度で)正確に作り出すことができなくなっています。1ミリ秒程度のふらつきが不定期にでてしまいます。MS-DOSの場合はこのようなことがありませんでした。OSの問題です。

解決法の1つとして外部にコンピュータを置き、それにクロック発生を任せ、クロックの始動、停止だけをWindowsOS下で動いているコンピュータで制御することが考えられます。外部コンピュータと言っても、パルス発生程度の簡単なことはマイクロ・コンピュータで十分です。そのマイクロ・コンピュータも、性能が日々進歩しており、その1つが以下に紹介するMICROCHIP社のPIC (Peripheral Interface Controller)です。以下、必須となるのはPICをプログラムするための機器(ICD3など:Webで検索すると良い)です。

PIC(ピック)にもいろいろな種類があり、初めての方はPIC16F1455-I/Pから使い始めるとよいと思います。ここでは、コンピュータからPICを制御するという観点から、USBコントローラ内蔵(クライアント)のPIC18F25K50、PIC18F45K50やUSBコントローラ内蔵(ホスト/クライアント)のPIC24FJ64GB002などを取り上げ、その使用例を示します。特に、PIC24FJ64GB002ではbluetooth USBドングルを①HCIレイヤー、②bluetooth-HIDプロファイルや、③RFCOMMレイヤーで制御し、パーソナル・コンピュータとの無線接続をしています。


トピックス:Bluetooth USBドングル(プロトコルスタックを内蔵したBluetoothモジュールではない)

をPICで直接制御。以下、Wiiリモコンを用いた例ですが、Wiiリモコンをお持ちでない場合は、PIC24FJ64GB002 (USB HOST: Bluetooth)の項目の中のHCIレイヤー(PIC-PIC間接続)節を参照すると、もっと簡単に、安価に制御可能になります。


簡単な例1:Bluetooth USBドングルを用いて、サーボモータをWiiリモコンで制御

<==画像が表示されない場合は、矢印の左上をクリック

簡単な例2:BlueWiiカー:Bluetooth USBドングルを用いてDCモータをWiiリモコンで制御

<==画像が表示されない場合は、矢印の左上をクリック

BGMには、フリー音楽素材 Senses Circuitを使いました。


目次:

  PICのファームウェアを作成する場合、使用するPIC回路に応じてConfig設定をする必要があります。Config設定に関する各パラメタ-の意味は、C:\Program Files (x86)\MicrochipMPASM Suiteの中のインクルードファイル(ファイル修飾子がinc)に書かれてあります。PIC名からファイル名がすぐ分かるようになっています。

  以下に出てくる「Active Clock Tuning」とは、USBクライアント(PIC)において、外部発信器無しで(内部発信器だけで)USBフルスピード通信を実現する方法です。USBホスト(例えばパーソナル・コンピュータ)からのパケット(1ミリ秒ごとのStart of Frame:SOF)で、クライアントの内部発信器を補正して、自動的に、内部発信器の誤差を±2000ppm(0.20%)[USBフルスピードでは±2500ppm以内であることが要求されます]にします。おもしろいアイデアだと思います。動画があります。 ただ、PICのスペック内の条件下で、確実に、いつでも、Active Clock Tuningが機能するかどうかは、商品化する場合、テストした方が無難だと思います。PICのマニュアルには、補正ができなかった場合、どうなるかについての記述がありますので、補正ができない場合があるのかなと不安がつきまといます。また、USBホストと切り離した場合、当然補正はかからない訳で、内部発信器の周波数は±2000ppmを超えて振らつくことが十分予想されます。つまり、USBホストと切り離した場合でも正確なクロックが要求される用途には向かないと考えます。

  USBを扱う場合、PIC18F2550の章の”PIC18F2550と制御コンピュータとの関係”を一読ください。また、複合HIDデバイスに興味があれば、PIC18F4550の章が参考になります。

  Harmonyのバージョンについて。現在v1.xxとV2.xxの2種類のバージョンが存在します。両者の違いはグラフィック(両者で互換性が無い?)にあり、それ以外、両者はほぼ同じだという事です。詳しくは、フォーラム:MikeinAZ氏によるトッピク(#15)をご覧ください。

USB  (XLP:Extreme Low Power と ACT:Active Clock Tuning)

USB  (32ビット)

USB HOST: Bluetooth

その他



今は昔