« 職人サン | メイン | シビアなタイミング »
2005年11月24日
わからん。
とあるマイコンで、シリアルで送られてきたデータを直接受けるときと、別のマイコンでボーレート変換したあとで受けるのと、挙動が違ってしまう。オシロで波形を見る限り、両者は同じ波形に見える。
前者は予定通りに動作し、後者は「ときどき」予定通りに動作する。しかも後者は再現性がない。
どうも電源っぽいな・・・困った。なにが原因なんだろう。
投稿者 akita : 2005年11月24日 09:47
トラックバック
このエントリーのトラックバックURL:
http://akita11.jp/mt/mt-tb.cgi/353
コメント
毎度、お騒がせしております、ルミナートです(^^;
コッチにあった時も、隣の信号線とくっついて無いかとか
結構細かく見たつもりなんですけどねぇ・・・なんでだろ(−−?
投稿者 あきこ : 2005年11月24日 13:26
ハンダ付けの問題ではなく、いまのところ想定される原因は以下の3つ。(ほとんど備忘録)
・74HC14の出力インピーダンス
・電源ケーブルが長いことによるGNDラインの共通インピーダンス
・PIC16F873の出力駆動回路の電流駆動能力が大きすぎる?
投稿者 あきた : 2005年11月24日 13:30
どうもスタートビットが長すぎるっぽい。
投稿者 akita : 2005年11月24日 18:39
そうか。スタートビットは立下りのタイミングだから、1ビット分の時間で割り込みをかけてスタートビット→順に各ビット、と変えていくのに、実際に出力ポートの値を変化させるタイミングをあわせないと、事実上スタートビットが長くなってしまって、タイミングがズレるんだな。なるほど。
投稿者 akita : 2005年11月24日 19:12
スタートビットが確定した時点から1ビット時間後にデータビットを読みにいく受信側に対して、送信側はスタートビットを受信側が確定した時点から1ビット時間後にデータビットの送信をしていなかった(まだLOWレベル=スタートビットの途中)みたいな感じなんですかね。
投稿者 macyu : 2005年11月24日 21:26
まさにそゆことです。気づいてしまえば、あたりまえ、といえば、あたりまえのことなんですけど。
投稿者 あきた : 2005年11月24日 22:34