- ベストアンサー
H83052 シリアル通信 A/D変換データ送信 について
毎回の質問失礼します。 現在H83052マイコンを使用して、センサで得た電圧値を1ms間隔でA/D変換させるプログラムを作成しています。 マイコンのA/D変換機能と、ITUタイマ機能を用いて測定を行うまでのプログラムの作成は何とか完了しました。 ここで、測定終了後データをどのようにして表示したらいいのかというところでとまっています。 データはA/D変換データ(data[]←int型)、A/D変換時の時間データ(time[]←long型)が、測定プログラム実行時に200個ずつ配列に保存されています。 これをそのままシリアル通信機能を用いてPC側に表示させるようにしたいのです。シリアル通信のH8側からPCへの送信の場合TDRにデータを書き込みそれをTxDより送信すると思うのですが、実際にTDRのアドレスは1バイトですので、データとしては入りません。1バイトごと分けて送信するという方法になってくるのではないかと考えていますが・・・ また、送信する時のコードとしては、数字データもアスキーコードとして送信されてしまうことになるのでしょうか? どなたか、わかることやアドバイスがあれば、回答よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
3052搭載のシリアル通信モジュール(SCI)はTDRにセットされた8bitデータを トコロテンを押し出すかのようにMSBから順に1bitつづ通信経路(TxD)に電位として出力します。 SCIはTDRにセットされた8bitデータが「数値」なのか「キャラクターコード」なのか一切判別しません。 ただのバイナリデータとして取り扱います。(このことが知りたかったのではないかな?) PCで簡易にモニタしたいのであれば、ファームウェアにて取得した数値のデータをキャラクターコードに変換し SCIを用いて出力すればRS232Cケーブルを接続するだけで可能です。 公開されたのは随分昔ですがAcknowrichというフリーウェアが組み込みの動作確認にはお勧めです。 モニタデバッグ環境でシリアルを利用しているのであれば、USB-シリアル変換機等でPC側の シリアル入力を増やしてあげる必要があるかもしれません。 あとはシリアル通信に関するプルトコルを把握するのが近道です。 ■参考サイト http://www.softech.co.jp/mm_050907_firm.htm (サンプルの説明はH8Sですが、内容もレジスタ構成も3052と同じ) 「UART」というキーワードで検索しても仕組みを理解するヒントが見つかるでしょう。 シリアル通信のプロトコルそのものにはACK等の応答確認がありませんから、 「ひたすらデータを垂れ流ししてるだけ」とイメージしちゃうと理解が速いかも
その他の回答 (1)
- techa
- ベストアンサー率60% (41/68)
送信コードがバイナリであるか、アスキーであるかは作成者の組み方次第ですね。H8は16ビットマイコンですから、int型で取得された内容は、 バイナリで送信すれば2バイトで済みますね。 ただ、バイナリにすると、うまく制御手順を決めないとデータの区切りが わからなくなったりするので、初心者には荷が重いのではないかとおもい ます。 というわけで、ASCIIに変換して区切り文字(CR+LF)を付加して 返信することから始めたらいかがですか? 通信時間を最小にしようとすると、16進4桁(10bitADなので3桁でも充分ですが)+CR+LFとなりますか。 int->HEX文字列への変換は適当に。
お礼
バイナリデータでも可能なんですか。。。 でも難しそうなのでアスキーコードに変換してやることにしました。 改行のコードがわからなかったので助かります。ありがとうございます。
お礼
いつもありがとうございます。 そうです。TxDが実際にどのようなデータとして扱っているのかが知りたかったです。判別しないということはやり方次第で両方にもできるということですね。 アスキーコードに変換していろいろなところのサンプルを参考にしたら表示されました。あとは、データの表示方法を工夫するだけです。 本当にありがとうございます。