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)の問題が起きます。一体何が悪いのか切り分けができず困っています、アドバイスをお願いします。
お礼
ありがとうございます。 なるほど、そのような役目があるのですね。