[H8-ML(2269)] Re: SCI 連続送信時の障害
From: "Masanobu Suzuki" <signas@xxxxxxxxxxxxxxx>
Date: 2002年10月08日(火)00時14分54秒
ポーリングでデータ送信されているのでしょうか?

その場合、ハードウエアマニュアルP.13-13〜P.13-14
に書かれているTDREフラグのクリア条件は満足していますか?

具体的に言いますと、

1)TDREフラグをリードする。

2)TDRE='1'ならデータをTDRにライトする。

3)その直後、直ぐにTDREフラグに'0'をライトして、フラグをクリアする。

恐らく3)を行っていないのではないかと思います。

3)を怠ると、TDREが'1'のまま残ってしまうため、次にTDREを
ポーリング(読みこみ)しても、本当にさっきライトしたデータが
TSRから吐き出されてTDREが'1'になったかどうかが判定できません。

>そもそもこれはH8/3048 全部の癖なのですか?

SCIに限らず、H8のステータスレジスタのフラグの多くはDMA
を除いて、ソフト側で意識的にそのフラグを1回リードし、次にゼロ
(0)クリアしてフラグを落とすやり方です。
これはZ80などのステータスレジスタの動作と少し違いますので、
最初は戸惑うかも知れません。

PS.
できればテキストモードでメールをしていただくと、返信しやすい
のですが・・・

鈴木

スレッド概略
[表示中](起点)


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]