■ホビーロボット部品の製造・販売 
  モータコントローラ、センサ、音声、画像、無線モジュールなど、
■ホビーロボット制作記事のページ (各種マイコン、PCとの接続事例)
■特殊メイク、特殊材料の販売 ※特殊メイクのコーナーはこちらに移りました。
Top(お知らせ) 製品紹介 使い方とサンプルプログラム 通信販売 リンク ロボット掲示板 会社案内
 Easy Robotics for all enthusiastic people!!!  ---HOBBY ROBOT PARTS SHOP ASAKUSAGIKEN---   Since 2003...

PICとPCとの通信(デバックモニタ)

はじめに

 H8などの一般的な市販のマイコンボードの場合はPCとの通信ができるように工夫されているものがほとんどですが、今回のようにPICのチップから回路を作る場合はPCとの通信回路を自分で作らなければなりません。
 PCとの通信は、計算結果の確認など、プログラムのデバックを行うときに必要です。

 ここではPICとPCをシリアル通信で接続し、PICで計算した結果をPCに表示するまでを説明します。

 尚、PICの開発方法については前のページ「PICを使ってみる」を参照願います。

回路

 他のページでも説明していますが、5V系のTTLレベルICとプラスマイナス12V系のPCのCOMポート(RS232C電圧レベル)を直接接続することはできません。この電圧差(しかも正負が逆)を変換するICの代表的なものにMAX232があります。前回の実験ボードにPCとの通信機能を付けたものが次の回路になります。
尚、ここではGP5をTx(PICからデータを送信するピン)にしています。GP5を送信に設定するのはソフト的に行いますがこれについては後で説明します。


ここではMAX232Aを使います。MAX232の後につく型番によってC1〜C5のコンデンサの値が変わりますので注意してください。MAX232Aの場合は0.1uFです。
データは矢印の方向に流れます。図のようにTTレベルのシリアル通信データをRS232Cレベルに変換するにはピン10からピン7、又はピン11からピン14に接続します。
PCとの接続はストレートのシリアルケーブルで行います。コネクタ形状はCOMポートと同じD−sub9コネクタにしました。普通のストレートのシリアルケーブルを使う場合はPICボード側は(メス)になりますので注意してください。
D−subコネクタの7,8番ピンがショートしているのは、PC側でRTS/CTSフロー制御のときでも通信ができる(というかRTS/CTSを無視する)ようにしたものですが、PC側でフロー制御の設定を必ず「無し」にする場合はこの配線は不要です。
D−sub9ピンコネクタのGND(ピン5)と他のGND(PICのピン8やMAX232のピン15)と接続しますので注意してください。ビギナーの場合、通信する回路を組むときに、GNDを共通化(つなぐ)しないで信号線だけつなぐ方が結構多いです。

それではさっそく前回の基板に追加してみましょう。


D−subコネクタを基板に取り付けるためには基板を加工する必要があります。手持ちにあったコネクタが平面にネジ留めするタイプだったので基板に四角い穴をあけました。このようなときには写真のようにハンドニブラで加工すると簡単です。


コネクタをネジ留めして、上の回路図の通りに配線したのがこの写真です。コンデンサのうちいくつかは裏面にハンダ付けされてます。コネクタの横(写真では左側)にあるのがMAX232です。


プログラム




テキストはこちらRCRCVtest.c

#use rs232...の部分で、CCS−CコンパイラのRS232Cに関する機能をONにします。上のプログラムではGP5を送信、GP3を受信に設定してますが、プログラムを見れば設定方法はわかるかと思います。詳しくは書籍を参照願います。これを行うことでシリアル通信に関する機能が使えるようになります。
実際にデータを送信する部分は printf( ) 関数のところになります。普通、PCのC系の言語の場合はPrintf関数は標準表示装置、つまりモニタ画面に文字を表示するものですが、PICの場合は標準でモニタなどついてないのでシリアル通信で文字データを送ることになります。この関数を実行すると#use rs232...のところのxmitで指定したピンからデータが送信されるというわけです。
printf関数についてはC言語の教科書を参照してください。このプログラムではfor文の変数countを一秒おきにカウントアップしてPCに送信します。

プログラムができたらコンパイルしてPICに書き込んでください。

※printf文のバックスラッシュ(rとnの前)はキー入力は¥です。MBLAB上(というか米国のソフト)では上の画像のように表示されます。¥r¥nは改行コードです。


PCでの文字の受信

プログラムを書き込んだらさっそくPICボードに差し込んで動作確認をしたいところですが、困ったことに私が使っている環境ではPCのCOMポート、ここではCOM1をPICライタにつないでいるため、PCのCOMがふさがっています。
ということでまずはPICライタの通信を切ります。これにはMPLAB上でライタを使用不可に設定するだけでOKです。


MPLABのProgrammer->DisableProgrammerでPICライタとの通信を切断することができます。ProgrammerとはPICライタのことで、Disableは不許可という意味です。ちなみに許可はEnbleになります。(Disable...の上がEnableですのでDisした後EnebleすればまたPICライタが使えるようになります。)

COMポートが開いたのでPICボードを接続してみましょう。私はPICライタに PICSTART Plus を使用してますが、これのケーブルは普通のストレートのシリアルケーブルなのでPICボードにそのまま使えます。よって、ライタのコネクタを抜いてそのままPICボードに差し込みます。
ちなみに他のPICライタを使っていてケーブルが無い場合は「D-sub9ピンストレート オス−メス」ケースブルを用意します。(もしくはD-subコネクタだけ買ってきてそれぞれのピンを直結して自作するか)


ライタのケーブルを抜いて


PICボードに挿しました。
上では電源が入ってますが、この時点ではまだ電源を入れなくて良いです。

電源を入れるとPICから文字データが送られますが、PCの方ではCOM1から入ったデータを表示するプログラムを立ち上げておく必用があります。Windowには標準で通信ソフト(ハイパーターミナル)がついてますのでこれを使います。


スタート−>プログラム−>アクセサリ−>通信−>ハイパーターミナル
を選びます。


適当な名前とアイコンを選んでOKを押します。


ハイパーターミナルは基本的にモデムの通信を意識してますのでこのようなウィンドウが開きますが、接続方法のところでCOMポートを選ぶとCOMで通信することができます。ここでは現在ケーブルがつながっているCOM1を選択します。


COM1の設定をします。上のプログラムの#use rs232...で設定した通信速度、今回は9600bpsを設定します。また、フロー制御は行わないので「なし」に設定します。その他も上の通りです。
設定が終わったらOKを押します。これで通信が可能な状態に設定されました。(まだ通信はできません)


ちなみに、MPLABの方でPICライタとの通信を切ってないとこのような表示が出ます。テレフォニーってのがいいですね。昔は今と違ってパソコン通信は電話とモデムでしたからねえ。私はもっぱらマイコンとの通信にしか使ってませんが。

通信を開始するには電話アイコンを押します。

これです。「接続」とかでなくて電話です。モデム用なもんで。
ちなみに、その右のアイコンを押すと接続が切れます。PICライタを使うときは接続を切ってからPICライタにケーブルをつなぎ変えます。

さていよいよ電源を入れてみましょう。間違いなかったら次のように表示されるはずです。


これでPICで行った計算があってるかとか、センサーからの情報の値を見ることができるようになりました。
ちなみに、ハイパーターミナルは単にPICから送られた文字データを表示しているだけですのでこの値でPCをどうにかする、というような使い方はできません。そうゆうときはVisualBASICやC#とかでWindowsプログラムを組む必用があります。

電源を抜いてもう一度挿してみましょう。今度はまた0からカウントするはずですね。


ということでPICのデバックを行うことができるようになりました。

2005年8月10日
 
(C)Copylight 2003. 有限会社浅草ギ研 | 通信販売の法規(訪問販売法第8条)に基づく通信販売業者の表示