こんにちは、水野と申します。 On Fri, 19 Jul 2002 12:37:03 +0900 "Kazuhiro Nonaka" <non@xxxxxxxxxxxxx> wrote: > while(1){ > data=inch(); > if(data=='\r') > outcrlf(); > outch(data); > } > 手でキー入力する分には、うまくいきます。 > ところが、ハイパーターミナルでテキストファイル送信をすると > 受信エラーが発生するようです。 ソースを見ただけですが、おそらくオーバーランエラーが 出ているのではないかと思います。 理由は、受信動作 inch の呼び出し間隔が開きすぎ、次回 inch 呼び出し前に 1byte受信し(これはセーフ)、さらにもう1byte受信してしまった ためにオーバーランがでたのだと。(ウソダッタラゴメンネ) 特に outch は while(!SCI1.SSR.BIT.TDRE); /* transmit ready? */ のように、送信Ready をポーリングしており、ここで受信とは無関係に 待たされている様に思えます。 私が確実なシリアル送受信が必要な場合、送受信の割り込みと キュー(順番待ち行列)を使っています。 ちょうどいいサンプルを見つけることはできませんでしたが、 調べてみてください。 /* 水野 成俊 * Shigetoshi Mizuno * mailto: nong@xxxxxxxxxxxxxxx */