うらおブログ(移転しました)スマートフォン用の表示で見るやねうらおブログ(移転しました)この広告は、90日以上更新していないブログに表示しています。FT232RLでシリアル通信するプログラムを紹介した。(http://d.hatena.ne.jp/yaneurao/20080628)「FT232RLのところを見るとTXD,RXDがAVRのRXD,TXDに結線」されているのだが、これだけではフロー制御されない。フロー制御されないということはどんどんデータを送られるととりこぼしてしまうと言うことだ。フロー制御を行ないたいなら、RTS,CTSも接続して「これ以上データを送らないでくれ」と言えるようにしておくべきなのだが、そんな結線をするとAVRのI/Oが減ってもったいないので、普通しない。bufferに格納していく。これが基本中の基本...だと思うのだが、あまり解説しているサイトがないのでサンプルコードを書いて解説をしてみる。USARTで受信したデータ。データを受信しているかのチェック。受信しているなら非0。受信したデータを返す。受信したデータがない場合は受信するまで待機。markerを追い越した時には悲劇が起きるが、どうしようもないのでそれは目をつぶることにしてある。サウンドバッファなどでもマシン負荷がかかって書き込みが追いつかないと特定部分が音飛びしたり重複して再生されたりするが、それも同じ事情である。ハマリどころ・UCSR0Bの設定で受信割り込み(RXCIE0)を許可すること。・初期化が終わったらsei()で割り込みを許可すること。これをしないといつまでもデータを受け取れない。・データサイズが8bit長以外だと毎回フレーミングエラーになるっぽい。詳しく調べていないので、原因は、よくわからない。Studioからprojectの設定で行なっておく必要がある。