• ベストアンサー

RS-232C ボーレートの許容誤差

マイコンのシリアルポート(調歩同期)で、 クロック周波数の都合上、どうしても、38400とか57600といったボーレートを正確に作り出せず、なんとか近づけても39062.5とか、56818.2といった数値になってしまいます。 どのくらいの誤差までが許容範囲なのでしょうか?

noname#43437
noname#43437

質問者が選んだベストアンサー

  • ベストアンサー
  • engine
  • ベストアンサー率48% (15/31)
回答No.1

石によってサンプリングポイント(データビットの)が異なるようですが 5%と言う意見と10%と言う意見があります いずれにせよ5%未満の誤差であれば 問題ないわけです それ以上ではフレーミングエラーを覚悟しなければなりません なお この誤差は絶対としての誤差でなく 相手のシリアルポートのクロックに対してである事は言うまでもありません

その他の回答 (2)

  • engine
  • ベストアンサー率48% (15/31)
回答No.3

ANo1です 補足するとこうなります 調歩式ではスタートビット+データビット+パリテイビット+ストップビットで構成されていることはご存知だと思います 受信の判定はスタートビット検出時に発生し それから与えられたクッロクタイミングでサンプリングします したがってクロックがずれていると誤差が加算されてNGになります データビットが7と8ではあるいはパリテイの有無 ストップビットが1か2かで許容誤差率は変わります データ7ビット パリテイなし ストップビット1 とデータ8 パリテイあり ストップ2ではビット総数が8と11では誤差が積算される事を考えれば 大幅に変わります 16という数字は初期のUART(調歩同期式用の石 1602や6011)が入力クロックに16倍を要求したからです

  • Qwerty-36
  • ベストアンサー率25% (58/226)
回答No.2

私が理由とともに聞いたのは、±1/16ですね。 ですから、他人にはマージンを取って5%と言っています。 ±2%以内なので、大丈夫ではないかと思います。 #通常は、Xtalの方を変えますが。

関連するQ&A

  • RS232C 調歩同期のビットレート誤差について

    RS232C 調歩同期のビットレート誤差は何%程度まで許容できるのでしょうか? また、目安とその理由について教えて下さい。 SH4のプログラムを組んでいます。 例えば、パソコンとRS232C(調歩同期)通信を行う際のビットレートの設定で、SH4側のビットレート誤差は何%以内にするべきでしょうか? クロック同期の場合は、「なるべく1%以内になるように」とマニュアルに記載があるのですが。。。

  • 約○○件の誤差はどのくらいまで許容範囲?

    個人的に請け負っている仕事で 約10000件ですと提示された仕事があり、 納期も自己申告でいいということで(常識的な範囲であれば) 話し合って、1日何件のペースでできるので 納期はいついつと決まったのですが 結構10000件を上回っており、毎日急ピッチで入力作業をするはめになってしまいました。 どうやら相手側もこういう発注を出し慣れていないようで… どう考えても、無理な業務を請け負ってしまい、下請けを探して、 それに私が引っかかったみたいな感じです。 (一応、業務が確定するまでは、不信感は抱きませんでした) 悪徳企業とかいうわけではないのですが、 SOHOの理解に乏しい?という感じです。 で、約○○件、 この件数によって誤差の範囲も変わってくるかと思いますが どのぐらいまでが許容範囲でしょうか? 私の場合、約10000件の結果 13000件強(入力途中のため、正確な件数は憶測ですが、このぐらいはいきます)です。 これは許容範囲でしょうか? 少し気になったので質問しました。

  • 水晶振動子と通信誤差について

    マイコンに水晶発振子を付けますが、通信(シリアル通信)に対する誤差との関係はどのようになっているのでしょうか。 どのように、水晶発振子のクロック数を決定するのでしょうか。 ある通信速度を決定したとき、8MHz、10MHz、16MHzのどれを選択するのが最善なのでしょうか。 UiBRG とは何ですか。 UiBRG の値を使って誤差を求めるとき、UiBRG は整数値でなければいけないのですか。普通、一般的に考えなければならないことだとは思いますが。 以上  宜しくお願いします。

  • 車の燃費計表示は誤差なの?

    車の燃費計表示は誤差なの? この頃の車には燃費計たるものが付いるのが多いようですが どこも実燃費よりも約1割程度良く表示しているような気がします。 燃費計は正確な表示は無理で単なる目安とは思っていますが、 実燃費より悪く表示されることはなくていつも良く表示されるようです。 これも誤差の範囲というんでしょうか。 どこまでは誤差(許容範囲?)で、どれ以上だったら不当表示 とかの基準はあるんでしょうか。

  • ガラス器具の許容範囲誤差と有効数字

    大学の実験レポートを執筆中なのですが、ガラス器具を用いた計測結果の扱いについて質問です。 化学の基礎実験でホールピペットやビュレットといったガラス器具を用いたのですが、計算の際に数値の精度を考慮して計算しなくてはなりません。 一般に有効数字の最後のけたには曖昧さが含まれるときいたことがあります。とある文献には25mlホールピペットの許容範囲誤差は±0.03mlとありましたので、溶液を25ml計量した場合、小数第2位に曖昧さがあると考えて25.00mlとして考えていいのでしょうか? また、こういった数値の扱いに詳しい参考書があれば書名を教えていただけると助かります。

  • H8/3069 SCIについて

    H8/3069のシリアル通信機能についての質問です。 SCI0を調歩同期式に設定して、パソコン上のハイパーターミナルと通信しています。SCI1とSCI2をクロック同期式に設定して、tx1とrx2,tx2とrx1,sck1とsck2を配線接続した状態です。 このとき、PC(ハイパーターミナル)からの送信データ⇒SCI0で受信⇒SCI1から送信⇒SCI2で受信⇒SCI0からパソコンに対してデータ送信したいと思っています。 ところが、SCI1のクロック同期式でのデータ送信がまずできません。データもクロックも出せていないです。 そこで、SCI0,SCI1,SCI2のすべてを調歩同期式に設定した場合は、上記のデータの送受信は成功しています。 H8/3069において、SCI0,SCI1,SCI2のシリアル通信方式の設定を上記のように、1つのH8に対してクロック同期と調歩同期を混在させた場合、何かうまく動作しない原因は考えられますでしょうか。 プログラムでのSCI0とSCI1,SCI2の初期設定の違いは、SCI1とSCI2は、SMRレジスタC/Aビットを1(SCI0は0)にして、SCI2については、SCRレジスタのCKE1ビットを1(SCI0,SCI1は0)にした状態にしています。 よろしくお願いいたします。

  • 99.98+0.01の誤差

    double型での計算を行うとよく誤差が出るのは知っているのですが System.out.println(99.98+0.01); といった簡単な計算ですら数値が狂うのは何故なのでしょうか?-サブ質問1 みなさんは厳密な計算が必要なときどのように処理を行っていますか?-サブ質問2 ちなみに私はできるだけdouble型は使わないことで回避しています。 処理したい有効桁数分10^n倍していってlong型で計算したのち元に戻したりと。 もっとスマートにdouble型だけで正確に計算して使っている方が いらっしゃいましたらその技を伝授していただけませんか?-メイン質問 わかる範囲でいいのでお答えをお持ちの方がいらっしゃいましたらよろしくお願いします。

    • ベストアンサー
    • Java
  • VC++でrs232c通信

    ハイパーターミナルで試したところ、以下のプログラムにも書いてありますが C,OL,1と入力すると OKという文字が返ってくるというものなのですが、 printf("%s,オンラインに失敗しました\n",l);の所で lがnoneのままでした。 説明書にはC,OL,1[CR][LF]と入力すると OK<CR><LF>またはER,n<CR><LF>と返ってくると書いてありました。 色々調べはしたのですが、わかりません。 根本から間違っているような気もします。 何処が間違っているかご指摘をお願いします。 ************************************* HANDLE COMHandle; DWORD dwRoad,dwWrite,dwError,dwCount; COMSTAT ComStat; char *l="none"; COMHandle=CreateFile("COM3",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//ハンドルの取得 if ( COMHandle == INVALID_HANDLE_VALUE ) { printf("COMport Open Error!\n"); getch(); exit(1); } DCB dcb; GetCommState(COMHandle,&dcb);//シリアルポートの状態を取得 dcb.BaudRate=2400;//ボーレート,伝達速度,bps dcb.ByteSize = 8; // データサイズ,bit dcb.Parity = NOPARITY; // パリティ:エラー検出 dcb.StopBits = ONESTOPBIT; // ストップビット SetCommState(COMHandle,&dcb); // シリアルポートの状態を設定 ncf1="C,OL,1\r\n";//入力コマンド WriteFile(COMHandle,ncf1,strlen(ncf1),&dwWrite,NULL); ClearCommError(COMHandle,&dwError,&ComStat); dwCount=ComStat.cbInQue; ReadFile(COMHandle,l,dwCount,&dwRoad,NULL); if(l!="OK\r\n"){ printf("%s,オンラインに失敗しました\n",l); getch(); exit(1); }

  • 「±」の記号について質問

    数学板久々だな、、 ある英文の日本語訳で以下のようなものがありました。 「サンプリング誤差は±2%だった」 質問:「±」ってどういう意味ですか? wikiぺディアにおいては下のように書かれています。 「量の数値をその公差やその統計的誤差の範囲と組み合わせて表すときである。 たとえば、「5.7 ± 0.2」は5.7から0.2単位内にあると規定もしくは推定される量を示す。5.7 - 0.2 から 5.7 + 0.2 までの範囲内のあらゆる値がありうる。」 また、ある辞書では以下のようにかかれてます。「ある数値を中心とした増減を示し、許容や誤差の範囲を表すのに用いる語。記号「±」。 つまりこういうことですか? 「±とは、誤差の範囲を表す。例えば、±2であったら、真の値との誤差は-2~+2である。 例えば、ある調査において、サンプリングの結果、1000の値が出たら、真の値は998~1002の間にある」こういうことですか?

  • 反転増幅回路によるBPF回路の誤差について

    先日オペアンプ(LF356N)を用いたBPFを作成しました。 回路は後述のURLに書いてある回路を参考に組み立てました。使用した回路素子は C1=1μF×3+0.1μF×2=3.2μF(電解コンデンサを並列接続で使用しました) R1=1kΩ C2=1000pF+100pF=1.1nF(マイラコンデンサとセラミックコンデンサを並列接続で使用しました) R2=15kΩ×2=30kΩ です。遮断周波数は foL=1/(2πC1R1)≒49.7Hz foH=1/(2πC2R2)≒4822.9Hz を目的としました。しかし実際に回路を組み立て、10mVrmsを回路に入力し、測定してみたところfoLは+21%、foHは-17%のズレが生じました。コンデンサと抵抗の許容誤差を含んで周波数を計算してみましたが、foLとfoHは許容誤差内に収まりませんでした。 そもそも測定機器(NI-ELVIS)の都合上±18Vでオペアンプを動かすべきところを±12Vで動かしたので、それによる誤差かと考えましたが、電源電圧がどういう影響を及ぼすのかよくわかりません(最大出力電圧が下がるだけ・・・?)。 他に考えられる影響として何が考えられるのでしょうか・・・? 以下に参考にしたサイトのURLを挙げておきます。 http://www.piclist.com/images/www/hobby_elec/pyro1_31.htm