- ベストアンサー
H8のポートの状態
最近H8をいじり初めて色々と試しています。 使用しているマイコンはH8 3052/Fです。またCでプログラムしています。 そこで質問なんですけど、今H8マイコンボードとPCがシリアル接続されて いるとして、接続が確立している場合にLEDを点灯させて、接続が確立され ていないときは無点灯というような動作を作成したいんですけど、どのよ うな手法を用いればよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 通信が確立している状態とは、例えばハイパーターミナルに > よってPCとH8をシリアル接続を行い、データの送受信ができる状態と > 考えています。 「データの送受信ができる状態」というのがまだ不明確ですね。例えばハイパーターミナル側でポート番号が間違っているのに気付かなければ「あれ?」ってことになりますし、ボーレート、データ長、ストップビット、パリティ等が合わなければ正しくデータをやり取りすることができません。なにせ、USBやTCP/IPと違って通信プロトコルが決まっていませんので。 ではどうしたらよいか。例えば次のように、接続確認のプロトコルを自分で作ってしまってはどうでしょうか。 (準備)接続確認用のコマンド(文字列)を決めておく。(例えば open[CR][LF] など) 1.ホストは接続確認用コマンドをマイコンに送信する。 2.マイコンは接続確認用コマンドを受信したらLEDを点灯して、ホストに正常応答(例えば ack[CR][LF] とか ok[CR][LF] など)を送信する。 3.ホストはマイコンからの正常応答を受信して、接続が確立したと判定する。 [CR][LF] は C言語でいえば \r\n の意味で書きました。
その他の回答 (2)
- SilverThaw
- ベストアンサー率32% (260/806)
No.1です。 >例えばハイパーターミナルによってPCとH8をシリアル接続を行い、 >データの送受信ができる状態と考えています。 「データの送受信ができる状態」という観点のみに注力すると、 ・RxDの監視を開始し、データ解析ができる状態 ・TxDが送信できる状態 という解釈になると思います。 以下は余談ですが、 シリアル(COMポート)通信で非同期通信の場合はRxD/TxDの二本の線しか使用していません。(モデムはさらに複数の信号線を使用します) その為、送信側は「データを送信しない」場合、TxDを常に"H"にしておき、データを送る時に1bit分の時間(時間はボーレートにより違う)"L"にします。それ以降をデータbitとして扱います。 データbitを指定bit分(8bitデータなら8回)送信後、パリティビットを送信、次のbitを「"H"」で送信することでストップビットとして扱います。 同様に、受信側はRxDを監視し「"H"→"L"」を検知したらデータの開始として以降のデータを取り込んでいきます。 このため、明確に「接続が確立している」ということを判断するのは非常に難しいです。 個人的には、RxDが一定期間"H"を維持できていればPC側の送信準備が整った=接続確立したと判断してもよい気もしますが。
- SilverThaw
- ベストアンサー率32% (260/806)
>接続が確立している とする条件は? ・スタートアップコマンドを受信して終了するまで ・DTRの検出 等、通信制御の方法によっていろいろと考えられますが?
お礼
早速の回答ありがとうございます。 まだH8は学び始めたばかりで、通信制御の方式についても詳しくは分からな いのですが、通信が確立している状態とは、例えばハイパーターミナルに よってPCとH8をシリアル接続を行い、データの送受信ができる状態と考えて います。
お礼
遅くなりましたが、プログラムが動作しました。 どうもありがとうございました。