SCIのTENDフラグの注釈

お世話になります。sei10です。

 
RX210のSCIのTENDフラグについて質問させてください。

 
RX210のハードウェアマニュアル内、SCI(シリアルコミュニケーションインターフェース)にて、

TENDフラグ(トランスミットエンドフラグ)
送信が終了したことを表示します。
[“1”になる条件]
•SCR.TEビットが“0”(シリアル送信動作を禁止)のとき
SCR.TEビットを“0”から“1”にするときは、TENDフラグは影響を受けず“1”の状態を保持します。
•送信キャラクタの最後尾ビットの送信時、TDRレジスタが更新されていないとき
[“0”になる条件]
•SCR.TEビットが“1”の状態でTDRレジスタへ送信データを書き込んだとき
TDRレジスタへの送信データの書き込みによりTENDフラグをクリアしたときは、以下の順序でSSRレ
ジスタをダミーリードしてください。
(1)TDRレジスタに送信データを書く
(2)SSRレジスタを汎用レジスタに読み出す
(3)読み出した値を使って何らかの演算を実行する

との記載があります。

[“0”になる条件]で2つ気になることがあります。

①TEビットが1のままでTDRレジスタに間欠的に送信データを書き込んだ際は、
送信完了後にTENDレジスタを使う使わないに関わらず、
SSRレジスタをダミーリードしなければならないということなのでしょうか?

②恥ずかしながらこの一文を見落としていたため、TENDをif文で直に比較しているプログラムがあります。
if( 1 == SCI4.SSR.BIT.TEND )
{
 処理
}
アセンブラで見ると、
  MOV.L #0008A083H, R1 SCI4を汎用レジスタR1に読み出し
  MOVU.B 01H[R1], R1  構造体オフセットを取ってR1に読み出し
  SHLR #02H, R1   汎用レジスタR1を2ビット分論理右シフト
  AND #01H, R1   数値1と汎用レジスタR1の論理積を取りR1へ格納
  CMP #01H, R1   数値1と汎用レジスタR1を比較し、結果をR1へ格納
  BNE L204    異なっている場合はL204へ分岐
のような処理となっていました。
たまたまコンパイラが汎用レジスタにリードしてくれているため動いているという認識で良いでしょうか?
(コンパイラに依存するプログラムになってしまっている?)


よろしくお願いします。

Parents
  • わわいです
    内蔵周辺デバイス全般に言えることですが、周辺IOクロックをベースとした同期回路になっています
    クロックごとを区切りとして各種処理が動いていく、というイメージですか。

    細かくいえば、
    ・TDRにデータを書きこむ動作を行う
    ・次のIOクロックが来ると、
    ・TDRにデータが書き込まれ、TENDを0とする
    という動作となります

    これがIOクロックとCPUクロックが同じであれば、書き込んで読むあいだに数クロック経過するため特別の配慮はいらないですが、最近のCPUではCPUクロックとIOクロックは別になっていて、CPUと周辺デバイスは同時に動かなくなってます。

    ということで、CPUはTDRにデータを書き込んだんだけど、IOクロックは来なくて次の処理に入ってないうちにTENDを読まれると、まだ1だった、ということがありえてしまいます
    ということで、一旦読み出し動作を挟んで、確実に内部処理を進めておく必要がある、ということだと思ってます

    #って、ホンマのところはルネサスの中の人に聞かないとねー
Reply
  • わわいです
    内蔵周辺デバイス全般に言えることですが、周辺IOクロックをベースとした同期回路になっています
    クロックごとを区切りとして各種処理が動いていく、というイメージですか。

    細かくいえば、
    ・TDRにデータを書きこむ動作を行う
    ・次のIOクロックが来ると、
    ・TDRにデータが書き込まれ、TENDを0とする
    という動作となります

    これがIOクロックとCPUクロックが同じであれば、書き込んで読むあいだに数クロック経過するため特別の配慮はいらないですが、最近のCPUではCPUクロックとIOクロックは別になっていて、CPUと周辺デバイスは同時に動かなくなってます。

    ということで、CPUはTDRにデータを書き込んだんだけど、IOクロックは来なくて次の処理に入ってないうちにTENDを読まれると、まだ1だった、ということがありえてしまいます
    ということで、一旦読み出し動作を挟んで、確実に内部処理を進めておく必要がある、ということだと思ってます

    #って、ホンマのところはルネサスの中の人に聞かないとねー
Children
No Data