- 締切済み
マイコンのシリアル通信
マイコンでシリアル通信を用いてセンサのデータを取得したいのですが、このセンサのシリアル通信の設定がストップビット2、奇数パリティとマイコンでシリアル通信をするのにやっかいな設定となっています。また取得したセンサデータをシリアル通信を用いてPCに送りたいと考えているのでマイコンのシリアルは2ch必要です。私もいろいろ探しているのですが、なかなか条件を満たすマイコン(ストップビット2対応、シリアル2ch、A/D2ch)が見つかりません。どなたか情報ありましたら教えてください。よろしくお願いします。できればDIPタイプのマイコンを探しています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
> タイマーか何かで時間を空ければいいのでしょうか そうですね。複雑なマイコンでなければソフトウェアループで充分です。 無駄な時間浪費をなるべく避けたいなら、 「ストップビットが出終わってから」待ち時間カウントスタートできればベストですが、 ソフトが知ることができる情報は限りがあるのでデータシートで 使えそうなフラグ類を確認してください。 最悪、オシロスコープで実際の動作を観測して 「フラグ見て送信データを書き込んだらxxmSec後なら大丈夫」と 判断するとか。 時間待ち方法も、UART が余ってれば、でたらめデータを書き込んで 「パラシリ変換バッファが空いた」フラグ(あれば)を待つという手も。 後でソースを読んだ時に「これ何やってたんだっけ」と 首をかしげないようにコメントを書いときましょう。 > 以前PSoCを用いてシリアル通信を試みたのですがうまくいかなかったので。。。 これについては何とも。
いまどきはストップビット1ですよね... シリアル送受信で、 ストップビット2側が送信のみなら、 受信側はストップビット1の設定でもかまいませんよ。 ストップビットの状態は、「シリアルデータなし」と同じなので 受信側は「シリアルデータの間隔が1ビット分空いてる」ように見えるだけで フレーミングエラーになりません。 逆方向についても、このことをうまく利用できれば... つまり 送信側ストップ1でもシリアルデータの間隔を空けることが できるなら、受信側はストップビット2と区別つかないので これまたエラーになりません。 間隔を空けることができるなら、と書きましたが、 プロトコルによっては...例えば1バイトのコマンドを送ると 数バイトのレスポンスが来る...ようなものなら、 特に「間隔を空ける」と意識しなくてもかまいません。
お礼
>ストップビット2側が送信のみなら、 >受信側はストップビット1の設定でもかまいませんよ。 受信側はストップビット1でも受信できるんですね。知りませんでした。 送信側がよくわからないのですが感覚をあけるというのはタイマーか何かで時間を空ければいいのでしょうか?以前PSoCを用いてシリアル通信を試みたのですがうまくいかなかったので。。。できれば送信側についてはもう少し詳しく教えていただけないでしょうか?
お礼
そうですか...ありがとうございます.今度また試してみます.