[中級の電子工作テスト]
CANONデジ一で遊ぶ
PIC24F RTCCでカレンダー
PICで赤外線通信
PICでシリアル通信
FT232RL変換モジュール
K型熱電対 AD595CQ
K型熱電対のテスト MAX6675
連枝でラダープログラム
連枝でステッピングモータ
各種デバイスのテスト
[シーケンス回路テスト]
リレーシーケンス
[車載用電子工作テスト]
電源の取り方
[PCBCAD]
EAGLE CAD
[掲示板]
電子工作のテスト工場BBS
[リンク]
工作お役立ちリンク集
[電子工作のテスト工場]
表紙[TOP]へ戻る
[電子工作系]
Sivanyan_Radioのブログ
(↑↑管理人のブログです)
GAMEってたのすぃー
電子回路実験教材の部屋 RLC
電子マスカット 必見[MP3]!
kunioのホームページ AVR+MP3
なひたふ電子
ワタヤンの日記
BLUE's electronics room
isi's 趣味の電子工作
獣医さんの電子工作とパソコン研究室
電子用語集Web
YS電子工作ラボ
(↑↑管理人のブログです)
[プログラム系]
信彦の家
[SNS]
電子工作の広場SNS
[写真]
シャッターを押した瞬間
回路は上図の通りです。さっぱりとした感じで不安がよぎりますが、これでUSB通信が出来るのでしょうか・・・。 USBコネクタをブレッドボードに挿入出来るように基板化しました。 |
このテストを参考にされる方は「MPLAB−C18」というコンパイラがないと同じことは出来ません。
マイクロチップのサイトより無償でダウンロードできます(デモバージョン)。 USB機能を内臓したPICが登場してからかなり経ちますが、ようやくテストを行ってみました。 マイクロチップが用意しているフレームワークスを用いれば簡単にPIC単体でパソコンと通信が出来るようです。 MicrochipのUSB Software & Toolsサイト 上記のサイトからフレームワークスをダウンロードしてパソコンにインストールするところから始まります。 V2.3をダウンロードしてインストールするとあまりにもファイルが多すぎてどれを参考にしていいのやらわからず、レガシーバージョンのV1.3をダウンロードして使うことにしました。 以下「MCHPFSUSB Framework v1.3 (legacy version) 」を用いた説明です。 何も変更せずにインストールするとCドライブに「MCHPFSUSB」というフォルダが作成されます。 この中にサンプル(?)が入っています。 作成するものにより使うものが変わるようですが、今回はPICとパソコンをシリアル通信するだけが目的です。 USBシリアル変換ICを使わずに出来ればこれはかなり安上がりにすみます。さてさて・・・。 「MCHPFSUSB」フォルダ内の「fw」と進み、そのなかの「Cdc」というのが目的のフォルダです。 ここにPICとパソコンをUSBで接続して通信をする、尚且つパソコンからはシリアルポートに見える動作をするサンプルファイルがはいっています。 作業をすすめましょう。プロジェクト用のフォルダを作成し、「Cdc」フォルダ内のファイルを全てコピーしてきます。 コピーされたファイルの中にある「MCHPSB.mcp」がプロジェクトファイルなのでダブルクリックします。 MPLABが立ち上がるとプロジェクトウィンドウにたくさんのファイルが入っているのがわかります。 使うのは少量なのであまり思いつめずにすすめましょう。 さて、プロジェクトが立ち上がったらリンカーの変更をします。 今回使用するPICは18F2550なのでリンカを変更します。 出力先などの変更も必要な場合は手を抜かずに行ってください。 つぎにメニューバーの「Configure」から「Select Device...」と進み、使用するデバイスを18F2550に設定します。 ここまでの流れ @フレームワークスのダウンロード Aインストール Bプロジェクトフォルダの作成 CCdcの中身をコピー Dリンカー等の変更 E使用するPICの変更 |
プロジェクト内の「main.c」内のmain関数が基本となるのですが、ここにはプログラムを書きません。
ユーザーがプログラムを書くのは「user」フォルダ内の「user.c」です。
-main.cのmain関数----- void main(void) { InitializeSystem();//初期設定 while(1) { USBTasks(); ProcessIO();//ユーザープログラム呼び出し }//end while }//end main ------------------------ 初期設定のInitializeSystem()関数を見てみると ------------------------ ・ ・ mInitializeUSBDriver(); UserInit();//ユーザー設定 ・ ・ ------------------------- と、なっている箇所があります。 ここから判断すると「ProcessIO()」関数内にプログラムを、「UserInit()」関数内に設定を行えばいいのがなんとなく理解出来ます。 この両関数が存在するのが「user.c」なのです。 しかし、main.cでも1箇所変更の必要があります。それはCONFIGURATIONです。 サンプルは「PIC18F4550」と「PIC18F87J50」を使用する場合の設定が書かれています(83行目くらいから160行目くらいまで)。 しかし、コメントアウト(//)で下記のようになっている箇所があります。 --------------------------- ・ ・ //If using the YOUR_BOARD hardware platform //#elif defined(YOUR_BOARD) //Add the configuration pragmas here //#pragma config ... = ... ・ ・ ---------------------------- YOUR_BOARDがいかにもって感じなのでここのコメントを削除してPIC18F2550用(今回使用する)のコンフィグを記入します。 もう一箇所変更の必要がある箇所があります。 今回はバスパワーで動かしますが、その監視を行うか否かの設定です。 「usbcfg.h」を開きます。55行目くらいにあるパワー監視を下図のようにコメントアウトします。 PIC18F4550用の設定にも見えますが、ここをコメントアウトしないとRA1が入力限定となってしまいます(監視用)。 Fmain.cにコンフィグ設定を追記 Gusbcfg.hの電源監視をコメントアウト |
上図が「user.c」に書いたプログラムです。UserInit関数にポートの設定を、ProcessIOに動作を書いています。 RB0にスイッチ、RC0−2にLEDを接続しています。 27−45行が動作を行うプログラムです。パソコンから送られてきた先頭文字を読み、0か1か2かそれ以外かを判定してアクションをおこします。 0が送られきた場合はRC0を反転させてパソコンへ変更したというレスポンスを返しています。 |
パソコン用のUSBドライバは「Cdc」フォルダ内の「inf」→「win2k_winxp_winvista32」内にあります。
接続した時にドライバの場所を聞かれたらここを指定します。
通信の設定は勝手にやってくれるみたいなのでプログラム内にも書いてません。
接続してポート番号が分かればそこと通信するように設定するだけです。
ハイパーターミナルなどで動作確認が出来ます。うまく動作してよかったです。 |
リンカー等の設定例をアップします。 こちらでは「Cドライブ直下」に「prog」というフォルダをつくり、その中にプロジェクトフォルダがあります。 この場合のプロジェクトフォルダ名は「USB_PIC_Cds_Test」です。 その他、お使いの環境下ではリンク先が異なる場合などはご自身の環境にあった設定に変更して下さい。 Project→BuildOptions...→Procect→Directories |
Copyright (c) 2007-2022 amahime All Rights Reserved.