• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AVRでUART通信をしたい)

AVRでUART通信をするための問題と解決方法

このQ&Aのポイント
  • AVRTiny2313を利用してUART通信するプログラムを組んでいますが、通信速度が思ったよりも遅いです。
  • 周波数が正しく設定されているか確認しましたが、問題はなさそうです。
  • 他のソースコードでも同じ問題が発生するため、設定を見直す必要があります。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

ヒューズ設定はどうなっていますか? http://www9.plala.or.jp/fsson/NewHP_elc/AVR/Avr_3Wfuse.html 下位バイトのBIT7、CKDIV8が0の場合、クロックが8分周されます。 (ATtiny2313のヒューズ設定は、購入状態で、内蔵RCの8MHzが8分周の1MHz駆動になっています)

DELED
質問者

お礼

>下位バイトのBIT7、CKDIV8が0の場合、クロックが8分周されます。 その通りでした。 無理やりレート合わせれば通信出来ていたのに速度の問題が解決したらエラーばっかりになってまるで使えない通信品質になってしまったので頭を悩ませましたが、内部クロックがかなり振れているのを思い出しセラロックに切り替えたら全て解決しました。 内部クロックが安定してないから分周させて精度を上げていたのですね。 なるほどと思いましたね。 勉強になりました。ありがとうございます!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シフトレジスタのビットレートについて

    シフトレジスタ初心者です。 シフトレジスタにより1と0の信号を出力しようとしています。 現在考えているのは約10Mbit/s~20Mbit/sの出力を考えています。 (周波数で言えば10MHz~20MHz?まちがっているかもしれませんが。。) シフトレジスタはクロックを入力するようになっていますが、そのクロックの周波数を 10MHz~20MHzの周波数に設定すればよいのでしょうか? 詳しい方、教えてください。

  • SH2マイコン・HCAN通信ビットレートの設定に…

    SH2マイコン・HCAN通信ビットレートの設定について いつもお世話になっております。 下記,御教示くださりますよう,宜しくお願いいたします。 CPU:SH7047 システムクロックφ:49.152MHz HCANのクロックfclk=φ/2:24.576MHz SH7047の取説の計算によると通信ビットレートbpsは, bps=fclk/((BRP+1)×(1+TSEG1+TSEG2)) と記載されています。 bpsを1Mにしたい(通信相手の機器が1Mに設定されているため)のですが,下記点が不明です。 ・fclk(24.576MHz)を25MHzとした場合は,BRP,TSEG1,TSEG2の設定値は,どのように設定すべきなのでしょうか? BRP+1=4+1,(1+TSEG1+TSEG2)=5の組み合わせしかないと思いますが,TSEG1~2の最小設定値から選択できません。

  • アナログサーボを3MHzで駆動可能か?

    H8/3048one(24.576MHz)のマイコンボード(YellowSoftのYH3048-3)の、PWMを利用して、アナログサーボを制御しようとしているのですが、このマイコンは「φ/8」でしかPWMの周波数設定ができません。なので、約3MHzでサーボを制御しようと思うのですが、アナログサーボを3MHzという高い周波数で制御できるものでしょうか? また、外部にプリスケーラなどのICを増設することで可能であれば、その方法などを教えてほしいと思います。

  • ArduinoでAVR328のみを使う場合の注意

    こんにちは. マイコンを勉強しています.ArduinoやARMを使って勉強しています. Arduinoは,Arduinoの基盤を用いずにATMega328マイコンのみを用いて使うことができますが,この場合使えなくなる機能などはないのでしょうか? 先日,写真のような回路を組んでオルゴールを作ってみました.事前にArduinoのブートローダを書き込んだATMega328を,Arduinoボードを用いてプログラムを書き込みました.セラロック16MHzのものを加えた以外に,回路はArduinoボードを使って動かすのと変わりません. つまりこれは,クロックさえ供給してやれば,ATMega328のみで動かしても,Arduinoボードを用いて居る場合と同じことができるという理解で合っていますか? さらには,arduinoボードとは,PCとの通信,マイコンへの書き込み,リセットスイッチや動作確認のLED,クロックなどを供給するもので,製品として組み込む場合は特に必要ないもの,あるいは自分で簡単に追加出来るもの,という理解で合っているのでしょうか?もし,マイコンボードが必要な理由,などがあればこちらも回答お願いします . あと少し逸れていても,詳しく解説してある資料など大歓迎です.

  • アンチエイリアシングフィルタについて

    アンチエイリアシングフィルタについて質問です。 これは、入力信号の最大周波数をサンプリングレートの半分以下にするためのものとのことですが、入力信号の最大周波数の二倍のサンプリングレート設定すればこのフィルタはいらないと思うと考えました。 実際どうなのでしょうか?

  • CX2のクロックアップについて

    PC-9821CX2でメルコのMTU-40001を使ってマザーボードのクロックアップを試しています。現在はクロック周波数を60MHz*2でPentium120を使っていますがこのままの周波数でMTU-40001を3倍設定にしてPentium166は、使用できるのでしょうか?それとも66MHz*2.5にしなくてはいけないのでしょうか?また、このまま使える場合は、どの程度のスペックが出るのでしょうか?(166プラスαか166相当か?)

  • オシロスコープの拡張に関する質問

    オシロスコープに関する質問ですが、 ・例えば1MΩの入力インピーダンス、最大入力電圧10Vを持ったオシロスコープを使って最大50Vの信号を測定したい場合には単にBNCプラグの前に単純に490MΩの抵抗を挟めば良いのでしょうか? ・測定出来る帯域が20MHzのオシロスコープを使って200MHzまでの信号を測定出来るようにしたい場合、プリスケーラや分周器などを前に挟んで周波数を1/10倍にして測定すれば良いだけのことなのでしょうか? 原理的にはこれだけで出来るような気がしますが、あまりこういう話を聞いたことがないので何か問題があるからなのでしょうか? どなたかお願い致します。

  • ADコンバータ(ADC08351)のクロック入力ピンについて

    周波数500KHzでVp-p=1Vの交流信号を、ADC08351を用いてAD変換したいと考えております。仕様は以下のとおりです。 Vin=Vp-p=1V(基準電圧0V) Vref=3.3V /OE=0V(つまり常にHigh状態) CLK=8MHz VA=VD=3.3V AGND=DGND=0V これで、回路構成をデータシート(ADC08351)の13ページのようにしました。入力信号の部分は多少違うのですが、まずボルテージフォロアを通し出力抵抗を下げ、その後、コンデンサ(0.1uF)を通して直流成分をカットしておりますので、まず大丈夫だと考えております。デジタル電源とアナログ電源の間のチョークコイルは470uHのものを使用しております。パスコンの値はデータシートのとおりです。個人的には、これで万全だと思ったのですが、結果、上手く復調できませんでした。 その理由として、クロック信号の入力部分となるのですが、これはクロック発振器(Vp-p=3Vほどの周波数8MHz生成)から直接わに口クリップで入力ピンにつないでおります。すると、発振器の部分をオシロスコープで測定するとVp-p=3Vほどの周波数8MHzのクロック信号が確かに出ているのですが、わに口クリップの先であるクロック信号入力ピンの部分をオシロスコープで測定すると、Vp-p=300mVほどの周波数8MHzに減衰しております。つまり、わに口クリップの両端で信号の波形が変わっております。これが原因で復調が出来ないのですが、どうすればよろしいのでしょうか? わに口クリップを使用しているのがいけないのでしょうか? もし、そうだとした場合どのように対処すればよろしいのでしょうか? どなたか分かる方がいれば教えていただけると幸いです。

  • レファレンスクロックとPLL動作

    お世話になっております。 PLLには常にレファレンスクロック(A MHz)が必要ですが、 一旦安定動作(n逓倍動作)した後、 レファレンスクロック周波数が大きく変動し(B MHz)、 再度当初の周波数に戻った場合(x MHz)、 出力クロックが正常動作していない、n*Aになっていない、 等の動作状態に陥り続けることは無いのでしょうか。 また正常動作を保証する周波数範囲(A to B)は、 PLL ICデータシートのどの項目に規定されているものでしょうか。 宜しくお願いいたします。

  • オシロスコープでの繰り返し周波数計測

    お世話になります。 オシロスコープで、パルスの周波数を測定するのに、1GHzのオシロから6GHzのオシロに変えたとたん、おなじパルスで1GHzの時は15kHzと計測されていたものが6GHzでは20MHzと、1000倍も大きく計測されるようになりました。 これはパルスの細かな部分まで計測されてしまったことが原因だと思いますが、どこの設定をどのように変えれば1GHzの時のような計測ができるのでしょうか。 詳しい方ご教示願います。