AVRのUSART接続で困っています

このQ&Aのポイント
  • AVRのUSART接続に関する問題が発生しています。
  • 変換モジュールの接続により、AVRが勝手に動作してしまいます。
  • USART初期化ルーチンでの設定に問題があり、UBRRHに正しい値が入りません。
回答を見る
  • ベストアンサー

AVRのUSART接続で困っています。

AVRのUSART接続で困っています。 AVR初心者です。Atiny2313に送受モニタ用のLED2個と秋月のFT232Rシリアル-USB変換モジュールのみを接続した簡単な回路を組み、双方のTXD,RXD同士を交差接続し、PCとUSART経由でデータ転送をする実験をしています。変換モジュールの電源はUSBバスから、AVR側の電源は安定化電源またはモジュール経由でUSBバスから供給しました。データの送受信自体は何の問題もないのですが、わからないことがありご教示下さい。 1)変換モジュールのTXD,RXDをAVR側のRXD,TXDに接続しただけで、AVRに電源が供給されてしまい、わざわざ別電源を供給しなくともAVRが勝手に動いてしまいます。各部の電圧は正規に電源を供給した時よりも0.5V程度低めにでますが、AVR自体の動作はUSARTを使う使わないにかかわらず(例えばLEDポートの初期化のみでも)正常です。AVR側の配線とソフトは何度もチェックして間違いないと確信しています。こんなものなのでしょうか? 2)USART初期化ルーチンで教科書どおり下記の様に書きました。デバッガで追跡すると最初はUBRRHにゼロが入るのですが、なぜか6行目を実行するとUCSRCの内容と同じものがUBRRHにも入ってしまいます。 ldi r16, 0 out UBRRH, r16 ldi r16, 0x19 ;bau rate 2400 at 1MHz out UBRRL, r16 ldi r16, 0b00000110 ;async, no parity out UCSRC, r16 ;1 stop bit data 8bit いろいろ検討したところ、UCSRCのMSBを1(ldi r16, 0b10000110)としてやるとUBRRHにははいらないことがわかりました。ATMELのマニュアルではこのビットはリザーブなおでさわるなとありそれ以上の説明はありません。何かおかしなことをやっているのでしょうか? この簡単な6行だけのプログラムですら1)、2)の問題が起きます。一体何が悪いのか切り分けができず困っています、アドバイスをお願いします。

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

  • ベストアンサー
noname#113216
noname#113216
回答No.1

>接続しただけで、AVRに電源が供給されてしまい AVRマイコンに、予定の電源供給元([電源1]とします)からの 供給がない時でも、AVRマイコンの信号入力端子に"High"レベルの信号入力があると それが電源端子の電圧も引き上げようとします。 電源1 がメカスイッチなどで切り離されてる、AVRマイコン部分の消費電力がごく少ない、と 顕著です。 これは、信号端子の内部に保護回路として電源端子に向かってダイオードが入っている為です。 >0.5V程度低めにでますが、 はダイオードの順方向電圧降下分、低くなる、という事です。 電源投入順序によってはうまく初期化がされない事も起こり得るし、 基本的に半導体部品に「電源供給なしで信号端子に電圧がかかる状態」はまずいです。 (先の保護回路により、すぐ壊れることはないでしょうけど) 電源供給元と供給先が複数ある場合は ・一方で他方をON/OFFコントロールする ・電源OFF部分にに高い電圧を与えないように  「電源ON部分の出力はLowかハイインピーダンスにする」 のようなコントロールが要ります。 この点ではなるべく電源は1つの方がいいです。 >2)USART初期化ルーチン の方は知識がないのでわかりません。

toyono6
質問者

お礼

早速のアドバイスありがとうございました。何となくそんなことではないかと思っていたのですが大変ご丁重な説明をいただきよくわかりました。 >基本的に半導体部品に「電源供給なしで信号端子に電圧がかかる状態」はまずいです。 特にこの点が気になっていましたが、あちこち調べてもわからず、自分の回路に問題があるのでは(といってもあまりにも簡単な回路なので探すまでもない)とずっと悩んでいました。 初めての相談でしたがこんなにも早いお返事をいただけるとは思ってもいませんでした、今後ともよろしくお願いいたします。

関連するQ&A

  • AVRマイコンの未使用ピンの処理について

    全くのマイコン初心者です。AVRマイコンの未使用ピンの処理について教えて下さい。 未使用ピンは基本的に出力に設定しておけばいいというのは判ったのですが、 1,RS232CのRXD、TXDピンはIN或いはOUTどちらに設定しておけば良いのか? 2,ISPのSCK,MOSI,MISOはRUN中は使いませんが、これもIN、OUTどちらに設定しておけば良いのか? 3,ADCを使わない場合、AVREF,AVCCピンはどう処理するのか? 以上、いろいろ調べたのですが、判りません。 よろしくお願いいたします。

  • PICのUSARTについて

    PICのUSARTについて PICのUSART機能を使おうかと思い色々読んでいてPICのUSART(非同期の場合)は (1)基本的に1対1でしか接続できない。 (2)(非同期では)互いは平等でマスター、スレーブ関係はない (3)それぞれ送信側を制御し意図的に受信をする事はできない。 (その場合は相手に取り決めたコードを送ってデータを要求する) という感じでよろしいのでしょうか。 またPICの通信機能としてはSSPのSPIに近いような感じはしますがどちらが簡単でしょうか?

  • SH7144FとFT232RLの接続

    秋月のSH7144Fマイコンボード(AKI-7144 12.5MHz)に、同じく秋月のFT232RL USBシリアル変換モジュールを使ってPCのUSBに繋げて利用していますが、FDTからFlashROMへの書き込み時、ポートオープンエラーが出て書き込めません。 秋月の開発用Tiny BaseBoardでプログラムを書き込み、それをFT232RLを繋げた自作ボードに載せ変えてプログラムを起動すると、FT232RL(SCI_1)に接続したPC上のTeratermにちゃんと処理結果は出力されますのでTxD/RxDの配線ミス等では無さそうです。 FT232RL経由でFlashROMに書き込むにはVcc,GND,TxD RxD以外に接続が必要なのでしょうか? もしくはSH7144F側で FWP,MD0,MD1,MD2,MD3,RES,NMI,DBGMD以外のポートにH/Lが必要なのでしょうか。 よろしくお願いします。

  • AVRーUSBについて

    AVRマイコンを使って以下の機能を実装しようとおもっています。 ・AVRからデータをノートパソコンに送信し、受信したデータをパソコンの画面に表示する ・ノートパソコンからAVRにデータを送信する ノートパソコンのためUSBポートしかないのでUSB通信にしようと思っています。あとFT232などのUSBシリアル変換機も持ってないのでUSBの通信の仕方で通信しようと思っています。 そこで質問なのですがAVRでUSB通信を実現できるらしいAVR-USBライブラリを使って上記の機能を実装しようと思っているのですが配布サイトからダウンロードしたもののどのソースを使ってどの関数を使うのかソースを読んで見たもののわかりません。とうかアドバイスや参考になるサイトや資料があったら教えてください. あと、もうひとつ質問なのですがUSBとパソコンの通信の仕方はどのように行っているのでしょうか?信号線が二本だからI2Cなのかとおもっているのですがそうなのでしょうか? どうかよろしくおねがいします。

  • マイコン同士をsciを使ってシリアル通信をしたいと考えています。

    マイコン同士をsciを使ってシリアル通信をしたいと考えています。 単純に マイコン1側 マイコン2側 RXD<->TXD TXD<->RXD GND<->GND を接続すれば通信できると考えたのですが、上手くデータを送ることが出来ません。 どうすれば通信できるでしょうか? また、参考になる書籍・WEBサイトをご紹介して頂ければ幸いです。

  • シリアル通信について

    PICの出力をシリアル出力(DB9のオス型)にしたいんですが、どのピンをどのピンに接続していいかがわかりません。 レベル変換には、MAX232の互換品のADM3230を使用していて、 14(T1out)→2(RXD) 7(T2out)→8(CTS) 13(R1IN)→7(RTS) 8(R2IN)→3(TXD) 左がADM3230で、右がDB9ピンの番号です。これであっていますでしょうか?いろんなページみても、いろいろ違っててわからないです>< どなたかよろしくお願いしますm(__)m

  • RS-232Cの変換について教えて下さい

    仕様書による、25pin同士の正しい結線は以下です。 FG 1 ----------------- 1 FG TXD 2 --------------- 3 RXD RXD 3 --------------- 2 TXD RTS 4 --------------- 6 DSR CTS 5, DCD 8 ------ 20 DTR DSR 6 --------------- 4 RTS SG 7 ----------------- 7 SG DTR 20 ------------- 5 CTS, 8 DCD これを9pinへと変換するには、どのように繋いだら良いか教えてください。 25pin側 1 FG 2 TXD 3 RXD 4 RTS 5 CTS 6 DSR 7 SG 8 DCD 20 DTR 9pin側の仕様 1 DCD 2 RXD 3 TXD 4 DTR 5 GND 6 DSR 7 RTS 8 CTS 9 RI 予測 25pin  9pin 20 -------- 1, 8 2 ---------- 2 3 ---------- 3 5, 8 ------- 4 7 ---------- 5 4 ---------- 6 6 ---------- 7 これで合っていますか? 25pin側のFGと9pin側のRIが余っているのが気になりますが・・。 シールドはどこにしたら良いでしょうか? それと、「8はNon Connectionです」と仕様書に書いてあるのですが、これはどういう意味でしょうか?

  • macでAVRマイコン(ATtiny13)を開発

    macでAVRマイコン(ATtiny13)を開発しようとしています。 当方初心者です。 環境は mac osx 10.9.5 Xcode 6.1(認証済) macports 2.3.4 ライターAVR ISP mkII Arduino(0023) Mavericsでは、USB接続するにはavrdudeが必要との事で、 sudo port install git-core libusb avrdude としてmacportsにavrdudeをインストールしようとしますが、 Error: git-core has been replaced by git; please install that instead. Error: org.macports.configure for port git-core returned: obsolete port となり、エラーになります。検索しても見当たらず、全く対処法が分かりません。 現状、ArduinoでUSBポートが出てこず、AVR ISP mkIIを接続できない状態です (ATtiny13は接続してあり、電源も供給していますので、AVR ISP mkIIの左下のLEDは 緑に点灯しています。上部のLEDはmac起動時に一瞬点灯しますが、すぐに消えます)。 お詳しい方、ぜひご教授お願い致します。

    • 締切済み
    • Mac
  • RS232Cのハードウェアフロー制御

    TxD,RxD,DTR,DSR,GNDしか端子がない周辺機器を、 TxD,RxD,RTS,CTS,GNDしか端子のないホスト(マイコン)に繋ぎたいのですが・・ 周辺機器側は、DTR/DSRフロー制御に対応し、 ホスト側は、RTS/CTSフロー制御に対応しています。 この場合、 機器側のDTRをホスト側のCTSに、 ホスト側のRTSを機器側のDSRに接続すると、 お互い問題なくハードウェアフロー制御ができるでしょうか?? (なぜ、RTS/CTSとDTR/DSRと、二つの種類があるのかがよく理解できないもので・・)

  • 電源内蔵HDDって?

    最近、電源内蔵HDDというのを見かけます。 大抵USB接続です。 これがよく分かりません。 USB接続の機器は元々そんなものですよね? ・USB接続ではデータの送信のみさせて機器には電源アダプタなどで供給する。 ・USB接続で電源のみ供給させて特にデータは送信しない。(USB扇風機とか) ・USB接続でデータの送信も電源の供給も行う。 1.かなり電気食う機器の場合、別途電源と取る以外選択の余地が無いのでアダプタとかでなくコンセントケーブルが付いていて、そこから電源取るのが前提になっている。 (プリンタとか) 2.微妙に電気を食う機器の場合、アダプタ付けても付けなくてもどっちでもOKみたいになってる。 (USB-HUBとか) 3.あまり電気食わない機器の場合、USB以外の電源は付いていない。 (メモリスティックとか) このうち「3」の場合と電源内蔵HDDはどう違うのですか? 「3」の場合は、独自電源が無いのでPCの電源ユニットのパワーが足りなければUSB-HUBに電源付けて足したりしないといけませんが、そういう事をせずに電源が安定して確保できるとでも言うのでしょうか? 超小型UPSでも入っていて不安定な電源供給でもバッテリーを介す事で安定した電源供給を実現しているのでしょうか?