前回からの続きです。
このテーマを最初からご覧になる場合はこちらからどうぞ。
シリアル通信用の配線の引き出し
さて、いよいよパソコンと「PIC32MX1/2/5 Starter Kit」評価ボードを接続します。
接続した結果は以下のような感じになりますが…。
まず、USBの方はデバッガと接続するためのものですが、問題はそれ以外の電線。
これらは「TOPPERS/ASP PIC32MX版」のサンプルプログラムで使用するデバッグメッセージ用のシリアル通信線です。
しかし「PIC32MX1/2/5 Starter Kit」評価ボードには、既に最初からD-SUBコネクタが実装されていますよね。
実は、これはシリアル通信のためのものではなく、CANのためのD-SUBコネクタなのです。
では、シリアル通信のためのコネクタが何処にあるかというと、実は、この評価ボードでは用意されていないのです。
そのため、シリアル通信を使用するには必要な信号線を評価ボードから引き出してあげる必要があるのです。
さて、どこから引き出しましょうか?
以下の「PIC32MX1/2/5 Starter Kit」評価ボードの回路図を御覧ください。
74ピンの「SOSC0/T1CK/RC14」と73ピンの「SOSC1/RC13」に注目してください。
これらのピンは「Y2」というクリスタルに接続されていますね?
しかしながら「DNP」とあるように、どうやらこのクリスタルは実装されていないようです。
そして、74ピンの「SOSC0/T1CK/RC14」と73ピンの「SOSC1/RC13」は、レジスタの設定により、それぞれシリアル通信の受信(RXD)と送信(TXD)端子として使用することができるようです。
では早速、そのレジスタの設定をしなくちゃ!
…って、実はもう設定できているんです。
思い出してください。
「TOPPERS/ASP - PIC32MX版 その6」の投稿の下の方で既にやっています。
こんな感じで雛形プロジェクトで設定しましたよね?
この設定により、74ピンの「SOSC0/T1CK/RC14」と73ピンの「SOSC1/RC13」は、それぞれシリアル通信の受信(RXD)と送信(TXD)端子として使用することになります。
そして、この雛形プロジェクトから吐き出されたソースコードを前回「TOPPERS/ASP PIC32MX版の」ソースツリーにコピーしたため、これから動かすサンプルプログラムは、この設定通りに動くことになるのです。
では、シリアル通信に必要な信号線を評価ボードから引き出しましょう。
必要な信号線は、受信(RXD)、送信(TXD)、そしてGNDの計3本ですね。
受信(RXD)、送信(TXD)は、基板下方の未実装の「Y2」クリスタルのホール(穴のことね)をそのまま使いましょうか。
GNDは、基板上方にパッドがあります。
未実装の「Y2」クリスタルのホールから受信(RXD)と送信(TXD)を引き出しましょう。
こんな感じ。
続いて、GNDも引き出します。
こんな感じ。
これで、必要な信号線の引き出しは完了です。
プログラムの転送とデバッグ
引き出した線は、パソコンのシリアルポートに接続します。
しかしながら、今どきシリアルポートが備えられているパソコンは稀でしょう。
そこで、以下のような市販のUSB/シリアル通信変換ケーブルを用意します。
USB/シリアル通信変換ケーブルのコネクタの形状によりますが、引き出した信号線は圧着端子などで加工する必要があるかもしれません。
USB/シリアル通信変換ケーブル側の配線は、上からTXD、RXD、GNDの順番でこんな感じ。
これでシリアルポートが使えるようになりました。
続いて、このUSB/シリアル通信変換ケーブルをパソコンに繋いでみましょう。
パソコン上でデバイスマネージャーを開きます。
ポート(COMとLPT)のサブカテゴリーとして「USB Serial Port」というポートが追加されているはずです。
(私のパソコンでは、「COM15」として認識されていますね。)
このポート番号、覚えておいて下さい。
ここで、ターゲットとパソコンもUSBケーブルで繋げちゃいましょ。
ご覧の通り、通電します。
次に「TeraTerm」をご用意ください。
インストールしていない方は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「TeraTermの導入」の項目を参考にしてください。
もちろん、シリアル通信のターミナルであれば、他のものもお使いいただけます。
今回のTOPPERS/ASPのサンプルプログラムは、シリアル通信のメッセージを出力しますので、先程「USB Serial Port」として認識されたシリアルポート番号でターミナルを立ち上げておきましょう。
設定は、こんな感じです。
ボーレートは「9600」です。
(私のパソコンは、USB/シリアル通信変換ケーブルをCOM15として認識していました。)
さて、「MPLAB X IDE」に戻りましょう。
「MPLAB X IDE」でプロジェクトを作成した状況から始めます。
画面左上の「Projects」リストにおいて「OBJ」プロジェクトが選択されていることを確認してください。
次に、プログラムの実行を行います。
画面上部のデバッグボタンをクリックします。
デバッガの起動には、意外と時間がかかります。
もしこの時、以下のようなエラーが表示されてしまったら、それはサンプルプログラムがビルドされていない証拠です。
「Eclipse」の方で「Makeターゲット」タブから「depend」、「all」の順にダブルクリックして、ビルドを終わらせましょう。
無事にデバッガが起動すると、立ち上げておいたターミナルに以下のような表示が出ていると思います。
TOPPERS/ASPカーネルとそのサンプルプログラムの転送と実行に成功です。
ブレークポイントを試してみましょう。
動作中のプログラムを停止します。
画面上部の「■」ボタンをクリックします。
ブレークポイントを仕掛けましょう。
エクスプローラーで「TOPPERS/ASP PIC32MX版」のソースツリーの「OBJ」ディレクトリの中にある「sample1.c」をドラッグし「MPLAB X IDE」にドロップして、ソースコードを表示します。
このソースコードの丁度中盤くらい、メインタスクの始めに仕掛けましょうか。
ブレークポイントは、ソースコードビューの左端をクリックすると■が表示され、セットされていることを表します。
仮に、これを再びクリックするとブレークポイントが解除され■も消えます。
では、ブレークポイントを仕掛けた状態で、プログラムを再び実行してみます。
上手く引っかかってくれるでしょうか…。
以下のようにプログラムが停止すれば成功です!
ここからは、「F8」キーでステップオーバー、「F7」キーでステップインなど、おなじみの操作が使用できます。
因みに、ステップオーバーやステップインなどを行っている時に命令が飛んでしまったり前後したりする場合は、最適化のせいです。
デバッグ時は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「サンプルプログラムのデバッグ」の項目を参考に最適化を解除しましょう。
今回の「TOPPERS/ASP PIC32MX版」は、やることが多くて大変でした~。
お疲れ様でした!!
次回はいよいよ最終回。
サンプルプログラムの動きの説明や、PIC32MX版カーネルの詳細な情報や注意事項などを書いていきます。