コンピュータのオペレーティング・システム(OS)がWindowsになり、簡単に実験装置をコンピュータで制御することが難しくなりました。
例えば10ミリ秒の時間幅を持つパルスを(クロックの精度で)正確に作り出すことができなくなっています。1ミリ秒程度のふらつきが不定期にでてしまいます。MS-DOSの場合はこのようなことがありませんでした。OSの問題です。
解決法の1つとして外部にコンピュータを置き、それにクロック発生を任せ、クロックの始動、停止だけをWindowsOS下で動いているコンピュータで制御することが考えられます。外部コンピュータと言っても、パルス発生程度の簡単なことはマイクロ・コンピュータで十分です。そのマイクロ・コンピュータも、性能が日々進歩しており、その1つが以下に紹介するMICROCHIP社のPIC (Peripheral Interface Controller)です。以下、必須となるのはPICをプログラムするための機器(ICD3など:Webで検索すると良い)です。
PIC(ピック)にもいろいろな種類があり、初めての方はPIC16F1455-I/Pから使い始めるとよいと思います。ここでは、コンピュータからPICを制御するという観点から、USBコントローラ内蔵のPICを主に取り上げています。
目次:
Microchip社は「PICの種類によらずにファームウェア開発するときにはMPLAB Code Configurator(MCC)環境を使用してゆく」という方針のようです。以下、MCCに対応させました。
USBを扱う場合、PIC18F2550の章の”PIC18F2550と制御コンピュータとの関係”を一読ください。また、複合HIDデバイスに興味があれば、PIC18F4550の章が参考になります。
USB (XLP:Extreme Low Power と ACT:Active Clock Tuning:一番下にある注意を参照)
なお、MLA: v2018_11_26によるファームウェアは「今は昔」に移動しました。
USB (32ビット):
MCC(Harmony)には、まだピン設定にバグがあるようです。
PIC32MX270F256B-50I/SP (HARMONY: v3)でBSPを使用する場合の注意点
USB HOST: Bluetooth LE USBドングル
小型 Bluetooth LE モジュール
USB HOST: Bluetooth USBドングル Bluetooth(クラシック)
Bluetooth(クラシック)の解説は、PIC24FJ64GB002 (XLP)へ
その他
今は昔(更新はしません)
USB (XLP:Extreme Low Power と ACT:Active Clock Tuning:一番下にある注意を参照)
注)「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ホストと切り離した場合でも正確なクロックが要求される用途には向かないと考えます。