マイクロテクニカ製品サポートFAQ
[一覧] [1つ前に戻る] [マニュアル及び各種ダウンロードページへ]
ICD一覧にないデバイスでもICDを使う場合及び内蔵発振子(INTOSC)でICDを使う場合
MicroCode Studio Plus(MCSPX)では標準でICDが利用可能なデバイスは決まっていますが、ICDファイルを自作することで一覧にないデバイスでも使用可能になります。
但し原則としてPICD-700SXに搭載可能なデバイスで、かつハードウエアUART通信機能を有するデバイスである必要があります。

1.MCSPXを起動します。

2."View"→"ICD Model creator"をクリックします。

3.作成にはMPASMとMPLAB ICDのデバイス定義ファイルを使用します。
ICD Model creatorで使用するMPASMはコンパイル時に使用しているMPASM Xとは異なります。MPASMはMPLAB v.8.xxに同梱されているので下記からダウンロードしてインストールしてください。インストール先は必ず C:\Program Files (x86)\MPLAB IDE にしてください。インストール時にインストール先を確認してください。

http://www.microchip.com/en-us/tools-resources/archives/mplab-ecosystem#MPLAB%20IDE%20Archives

インストール完了後、必ず C:\Program Files (x86)\MPLAB IDE\Device フォルダが存在していることを確認してください。

4."Next"を押します。候補リストが表示されます。ここに表示されたデバイスについてはICD機能を追加できます。使用する予定のデバイスを選択してください。

5."ICD Monitor File"の表示が出たら緑色のディレクトリ表示を確認します。このファイルはPIC16系デバイスであれば、"16_ICD_PBPX.bas"が、PIC18系であれば"18_ICD_PBPX.bas"が自動的に選択されます。

自分でICDファイルを作る場合には、ここのモニター定義ファイルを適宜編集する必要があります。
ここのICDファイルは、PBP3のソースコードとなっておりICDコンパイルをするとこのコードと共にPICへ書き込まれることでICD機能が使えるようになります。

最初から組み込まれているICDモデルのPICであれば編集は必要ありませんが、自分で作る場合には編集して正しいパラメータにする必要があります。
その方法をここで一例解説します。

5-1. ここで表示されたディレクトリを開きます。
例: C:\Program Files (x86)\Mecanique\MCSPX\Bin\ICD\Monitor

5-2. この中に2つのbasファイルがありますのでPIC16かPIC18かで、まずはファイルを選択しそのファイルを複製してください。(コピー→貼り付け)
その際、ファイル名は、"16_ICD_PBPX_1939 .bas"のように今回新しく作ろうとしているデバイスの名前をつけてください。

5-3. このファイルをメモ帳等で開きます。
編集を要する箇所は主に2点で、PICの動作するクロックの設定と、デバッグ用UARTの通信速度の設定です。

下のように記述されている箇所に注目し実際にPICを動作させているクロック周波数に値を変更します。
例:動作周波数が12MHzの場合

#ifdef _OSC_12  ←12に変更
define HSER_BAUD 19200 ←19200に変更
define MULT 16
define HSER_SPBRG ((OSC * 1000000 / HSER_BAUD + (MULT / 2)) / MULT - 1)
#define ICD_BAUDRATE_SET
#endif

これで、動作周波数12MHzでPICが動作している時にICDの通信が19.2kbpsになるように設定しました。
ここの設定が実際のPICの動作周波数と一致していないとICDは正しく動作しません。

5-4. このファイルを上書き保存して閉じます。
これで新しいファイルが、新しいファイル名で作られました。

5-5. このファイルを手順5のICD Model creatorの"ICD Monitor File"のファイル選択画面で選択します。
"Change"ボタンを押して、このファイルを選択してください。
Nextボタンで続行します。


6.これでファイルが作成されました。作成された新しいICDのファイルは拡張子.icdです。
作成されたファイルはマイドキュメントの中の"ICDModelCreator"フォルダ内の、"Models"フォルダに保存されています。通常は下記のようなディレクトリになります。

C:\Users\UserName\Documents\ICDModelCreator\Models

※UserNameはパソコンにログインしているユーザー名

7.例えばPIC16F1939用のファイルを作成した場合には、"16F1939.icd"というファイルが作られています。このファイルをMCSPXのインストールされているディレクトリにある"ICDModels"フォルダにコピーします。

通常ICDModelsフォルダは下記の位置にあります。

C:\Program Files\Mecanique\MCSPX\ICDModels

※64ビット版のWindowsの場合にはC:\Program Files (x86)\Mecanique\MCSPX\ICDModels

8.コピーを完了するとMCSPXで、そのデバイスを選択した時にICD機能を利用できようICDツールバーが有効になります。

9.ファイルが完成したら"ICD Compile"でHEXファイルを生成し、PICマイコンに書き込んでください。
手順5で作成したモデルファイルの内容と、実際に動作しているPICの環境が正しければICDが実行できます。
"Run"ボタンを押してICDの動作を確認してください。

※UART通信速度の決め方
ICDを実行する場合に使用するUARTの通信速度は、なるべく通信速度の誤差が少ない値を選びます。
誤差の計算は下図PDFの9ページに記載があります。

http://ww1.microchip.com/downloads/en/DeviceDoc/en026583.pdf

誤差の計算が面倒な場合には、次の値から選びます。
115200, 38400, 19200, 9600

クロックが20MHz以上ならば115200を、それ以下であれば38400か19200程度を選択するのが無難です。


■内蔵発振子(Internal OSC)でICDを使う場合

ICD機能を実行する場合、MCSPXはユーザーが作成したソースプログラムに先だってICD機能を実現するために用意されたプログラムを動かして、ICDを実現しています。
しかし、内蔵発振子を搭載したデバイスで利用する場合、クロック周波数はOSCCONレジスタで決める必要があり、このOSCCONレジスタへの値の代入(=発振周波数の設定)はユーザーが作成したソースプログラム内にあり、これに先だって実行しなければいけないICDのプログラムでは発振周波数を定めることができずICD機能をそのままでは利用することができません。

※ICD機能を実現させるためのプログラムそのものが動かないということです。

そのため、通常ICD機能を実行する場合には外部発振子を使用して使うのが一般的ですが、どうしてもピン数の関係などで内蔵発振子でICD機能を利用したい場合には、OSCCONレジスタの設定を記述したICD機能実行用のファイルを作成する必要があります。

作成方法は基本的に上記の「ICD一覧にないデバイスでもICDを使う場合」と同じ手順ですが、ICDをを制御するプログラムにOSCCONレジスタ設定の記述を追加します。

1.MCSPXを起動します。

2."View"→"ICD Model creator"をクリックします。

3.作成にはMPASMとMPLAB ICDのデバイス定義ファイルを使用します。
通常はコンパイル時にも使用するため設定は正しくできているはずですが、一応緑文字で表示された"MPASM Suite"へのディレクトリと、MPLAB IDE内の"Device"フォルダへのディレクトリを確認しておきます。

※もしパソコンにインストールされている実際のディレクトリと相違がある場合には、先にMCSPXの"Compile and Program Options"で正しくコンパイルできるよう設定をしておく必要があります。

4."Next"を押します。候補リストが表示されます。ここに表示されたデバイスについてはICD機能を追加できます。使用する予定のデバイスを選択してください。

5."ICD Monitor File"の表示が出たら緑色のディレクトリ表示を確認します。このファイルはPIC16系デバイスであれば、"16_ICD_PBPX.bas"が、PIC18系であれば"18_ICD_PBPX.bas"が自動的に選択されます。
そのファイルを確認後、ファイルにOSCCONの設定に関する記述を追加します。通常は下記のフォルダに存在しています。

C:\Program Files\Mecanique\MCSPX\Bin\ICD\Monitor

※64ビットWindowsの場合はC:\Program Files (x86)\Mecanique\MCSPX\Bin\ICD\Monitor

このディレクトリを開いてください。ディレクトリ内には上記2つのファイルがありますので今回使うファイルをメモ帳などのテキストエディタで開きます。

※例えばPIC16F1939用のICDファイルを作っている場合には、PIC16系ですので"16_ICD_PBPX.bas"ファイルをテキストエディタで開きます。

6.プログラム19行目〜20行目程度の所に "' ICD commands..." というコメント行がありますので見つけて下さい。

7.ここの"' ICD commands..."の1行上に次の一文を追加します。

OSCCON = %01110100

上記は内蔵発振子8MHz設定の場合です。もし別の周波数に設定する場合には、ご使用になるデバイスのデータシートに記載されているOSCCONレジスタの設定値に合わせて周波数を設定してください。多くのデバイスでは周波数の設定はビット6〜4の3ビットで設定します。

ここで、OSCCONに適切な値を代入して設定しておくことで、ICDファイルが正しく内蔵発振子の設定で動作するようになります。

8.これで編集が終わりましたので、このファイルを上書き保存してください。

なお、内蔵発振子を使わないデバイス用のICDファイルを作る場合この記述は矛盾してしまいますので、内蔵発振子を使わないデバイスを作る時はこの記述を必ず削除してください。誤って記述したままにすると、作ったICDファイルが動作しない原因となります。

10.編集が終わったので"ICD Model creator"の画面に戻ります。"Next"を押します。

11.これでファイルが作成されました。ファイルは拡張子.icdです。
作成されたファイルはマイドキュメントの中の"ICDModelCreator"フォルダ内の、"Models"フォルダに保存されています。通常は下記のようなディレクトリになります。

C:\Users\UserName\Documents\ICDModelCreator\Models

※UserNameはパソコンにログインしているユーザー名

12.例えばPIC16F1939用のファイルを作成した場合には、"16F1939.icd"というファイルが作られています。このファイルをMCSPXのインストールされているディレクトリにある"ICDModels"フォルダにコピーします。

通常ICDModelsフォルダは下記の位置にあります。

C:\Program Files\Mecanique\MCSPX\ICDModels

※64ビット版のWindowsの場合にはC:\Program Files (x86)\Mecanique\MCSPX\ICDModels

13.コピーを完了するとMCSPXで、そのデバイスを選択した時にICD機能を利用できようICDツールバーが有効になります。またそのデバイスについては、設定した周波数で内蔵発振子でのICD機能が利用できるようになります。
オリジナル - FAQみたいです - 猫でいいです