PICマイコンを使って測定ツールを作ってみよう(3) ―― Visual BasicでPICマイコンを制御する

中西 紫朗

tag: 組み込み 電子回路

エレキ系DIY 2011年5月25日

 制御の中心部分は、ソース・リスト内のCOMM_USB関数です.3種の処理部から構成されています.図10に構成図を示します.

 

図10 USB_COMM関数の構成図

 

 最初の処理部は,基板のタクト・スイッチの処理です.左のS1スイッチ(黄色)が「メニュー番号増加」,右のS3スイッチ(青色)が「メニュー番号減少」,真ん中のS2スイッチ(緑色)が「メニューの決定」となっています.黄色のスイッチと青色のスイッチを操作して目的のメニューが液晶ディスプレイの一番上にくるようにします.そして,選択の青色スイッチを押すと,そのメニューが選択されます.

 次の処理部は,選択されたメニュー番号により,その処理を実行します.前回はカウンタしか機能しませんでした.今回は,RS-485,UART,VDC(電圧測定),ADC(電流測定)を追加しました.

 最後の処理がUSBです.ホストとなるパソコン(HOST PC)からは,PICマイコンはシリアル・ポートとして見えています.筆者のパソコンではCOM9として登録されています.設定されているボーレートは38400bpsですが,115200bpsに変更しても動作します.実際のUSBの速度は12Mbpsなので,CDCにおける変化処理を考慮しても十分な能力があります.

 トランジスタ技術 2006年9月号の特集記事ではPIC16F877が使われており,メモリも少ないので小規模なデータでしたが,今回のPIC基板が搭載するPIC16F2550ではメモリが約2.5Kバイトもあるので,かなりのデータをやりとりできます.コマンドとしては,PING,リセット,リード,ライトがあります.PINGはネットワークではおなじみのコマンドです.もともとのソース・リストはアセンブラで書かれていて,初心者には読みづらいものでしたが,今回はC言語で書きました.少しは読みやすくなったと思います.メモリは,LCD,SPI,I2C,USBのバッファが割り付けてあり,今後の記事で使い方の拡張方法を紹介していきます.

 

●VBでホスト制御を行う

 パソコンからは,マスタと各スレーブに接続されているI/Oを自由に制御できます.今回の例題では,1個のマスタと3個のスレーブ,計4個のPICマイコンを制御します(図11写真1).100ms周期で各スレーブをマスタが巡回するので,各スレーブの状態は300msごとに更新されます.最初の電源投入時には,どのようなスレーブが接続されているかは不明です.前述のトランジスタ技術 2006年9月号の特集ではこれは決定済みで,システム構築時にプログラムに書き込まれています.

 

図11 ネットワーク構成図

 

写真1 実際の構成

 

 互換性をとる場合は同じようにしますが,参考として自動構築のフローも説明します.

 まず一度,全ノードにPING要求を出します.一度に全ノードへ要求を送出する場合,特別なID「0xFE」を使います.各ノードが自分のIDを返すには,通常のパケット・フォーマットと違い,1バイト応答をIDに指定されているタイミング・スロットで返します.スレーブのIDが4,6,10なら,マスタからのPING要求のあと,4番目,6番目,10番目のタイム・スロットで自分のIDを返信します.マスタは,254個分のタイム・スロット(38400bpsの場合,約4800バイト/sなので約50ms)の間,返信を待ちます.この特別なプロトコルの実施以降は,今までと同じプロトコルで通信できます(図12).

 

図12 RS-485ネットワークの自動構成

 

 もう少し普通のネットワークに近い形にするのであれば,スレーブが追加されたときにスレーブからマスタへ接続要求を出すことを許可する必要があります.マスタから通信を始めるという前提が崩れ,制御は複雑になります.

 今回は事前決定方式にします.すべてのIDとスレーブ数はプログラムの中に含まれます.

 VB6では,マスタとスレーブの状態を表示します.また,マスタから要求するコマンドを発行できます.リスト3にVBのコードを示します.なお,リスト1リスト3のコードはこちらからダウンロードできます.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日