rl78F14のUART受信の問題点について

こんにちは TTです。

 

現在、下記のような処理を行おうとしています。

A:自分(RL78F14)

B:通信相手(Aからもらったデータ内容に応じて返信してくる)

1. A→Bへデータを送信する

2.  自分(A)は自分で送信したデータを受信してしまうので、送信したデータと受信したデータが同じならデータを破棄する

3. Bからの返信を受信するまで待つ

4. Bからの返信を受信出来たら、データを取り出す。

 

しかし、上記処理中の3でBからのデータを受信することが出来ません。

通信ログを確認したところ、

・A→Bへ正しくデータを送信できている事、B→Aへデータが正しく送信されていることは確認できています。

・BはAからのデータをもらって15ms程度で返信を返してきています。

現在の不具合の仮説としては、「自分の送信データ受信→受信完了の間にBからの返信が来てしまっている?」と考えています。

そこで、EUARTの受信データの受信完了にはどれくらい時間がかかるものなのでしょうか?

また、ほかに考えられる原因等あればご教授ください。

  • NoMaY さん。ご丁寧な返信ありがとうございます。
    受信するデータ長より長いバッファを用意する
    →とにかく受信したものを放り込む
    →ある程度以上たまったら、該当のデータを探して取り出す
    の手順で受信データをとり切れないことが無い様にしました。
    プログラムの構造的には褒められたモノではありませんが、ひとまず解決できました。
    ありがとうございました
  • fujita nozomu さん お返事ありがとうございます。
    他の方が回答してくださってる通り、DMAで解決できそうな問題ではなさそうです。
    >データとデータの間が 15ms 程度「も」あって受信オーバーランが発生するというのはそれだけ長い期間
    >割り込みを受け付けない期間があるということでありプログラムの構造の問題でしょう
    おっしゃる通り、受信したデータの振り分けに時間がかかっています。少しずつ効率的に書ける様精進します!
    ありがとうございました
  • TTさん、こんにちは。NoMaYです。

    漠然とした予感ですが、TTさんのプログラムの構造における今回の問題に関しては、チョコさんの以下のサンプルプログラムが今後の改善のお役に立つのではないかなぁ、という気がしました。一度、ご覧になってみてはどうでしょうか。

    RL78コード生成へのリングバッファ追加
    japan.renesasrulz.com/cafe_rene/m/sample_program/306