[H8-ML(2731)] Re: データ送信がうまくいきません
From: "Hiroshi Tada" <tada@xxxxxxxxxxxxxxxxxxxxxxx>
Date: 2003年01月20日(月)17時28分26秒
お世話になってます。多田です。

皆さんから多数のアドバイスを頂きまして、どうもありがとうございました。
皆さんからのアドバイスを基に色々とやってみましたので、
ご報告致します。

> Tadaさんは19200bpsとのことですが,PCとターミナルソフトはどのように
> なっているのでしょうか。

WindowsXP上で市販の通信ソフト「CCT Win」を使ってチェックを行っています。

> 1)8251へのクロックを上げる

現在、タイマ出力にて8251のクロックを生成しているのですが、
H8のクロックが16MHzの場合、タイマにて出力できるクロックの周波数は
1.6MHz辺りが最大なのではないでしょうか?
なので、これ以上、8251に入れているクロックを上げることはできないのです...
本当はハード的にクロックを入れられれば良いのでしょうが、スペース的な
都合から回路を入れられない現状です。

> 2)TxRDY端子をH8の空きポートでモニタする(割り込みにする)

TxRDY端子をH8の外部割込端子(IRQ0)に接続し、割込にてTxRDYを
チェックするようにしてみました。
TxRDY端子は送信データキャラクタを受付不可の状態の時はLowレベルで
受付可能な状態の時はHighレベルになると思うので、
この立ち上がりエッジで割り込みをかけたかったのですが、H8の
割り込みレベルは立ち下がりエッジかLowレベルにしか設定
出来ないのですね。

結局、割り込みを使ったプログラムは以下のようにしました。
(IRQ0の割り込みレベルは立ち下がりエッジに設定しています)

1)TxRDY端子がHighレベルがどうかチェック
2)送信完了フラグをOFF
3)IRQ0の割込を許可
4)送信データ書込
5)送信完了フラグがONになったかチェック
※IRQ0割込処理の中では送信完了フラグをONにし、IRQ0割込を禁止。
 (送信完了フラグはグローバル変数です)

このプログラムでは、正常に送信が出来ました。
ちなみに8251のステータスワードは見ていません。
TxRDYを割り込みにしたプログラムは経験が無かったので、
このようにプログラムを組んでみましたが、皆さんはどのように
しているのでしょうか?

> 3)28tcyc待ってから8251のステータスを見る。

これは私のほうもマニュアルを見落としていました。
ウエイトを入れれば正常に送信できるということは、
ステータスを見て送信した場合、これが原因のような感じがしますね。

以上です。




スレッド概略
[2708(R)](起点)
 └[表示中]
   ├[2732(1)]
   ├[2733(2)]
   └[2735(3)]


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


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