« 職人サン | メイン | シビアなタイミング »

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

コメントしてください




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)