R8C/M12Aのシリアルとポート出力のタイミング

7バイトを外部クロック同期シリアルで出力し、最終ビットの送出終了時にポートから信号(ゲート)を制御したいのです。外部クロック1個以内の時間誤差は許容。

1バイトづつ7回、TIビットを見ながらU0TBに送信データを書き、7バイト目を書いた後に、NOPや空ループで調整して最終ビットのタイミングでポートから出力します。
一旦うまく行ったのですが、5バイト目を書く前に演算処理を入れたら、ポート出力のタイミングが狂ってしまいました。(演算時間は同期クロック2個分程度)

つまり、TIビットで示す、送信バッファ空になるタイミング(シリアル送信開始を基準)が、それ以前の演算などの内部処理の有無から影響を受けるのでしょうか?
シリアル回路は外部クロック動作だから、こんな事は無いと思うのですが。

ご意見や対策、よろしくお願いします。

Parents
  • 皆様有難うございます。質問者のTHMです。

    詳細を開示して相談したいのはヤマヤマですがCLK周波数など書けない事情があり、失礼します。

    要は送信バッファ空(ti=1)となるタイミングの仕様・条件が知りたいのです。
    マニュアルでは、送信レジスタに残データが有/無だけでti変化のタイミングが定まるようですが、その他に、例えば空き待ち時間中の演算の有無にも影響されるのでは?と言う疑問です。

    なお、Txeptの件は「最終bit」の定義が違いました。私は全Byteの最終1bitのつもりでしたが、確かに各Byteの最終bitを示しますね。失礼しました。

    動作目標はクリアできてるのですが、バッファ空タイミングが不思議だったので皆様のご意見うかがいました。
Reply
  • 皆様有難うございます。質問者のTHMです。

    詳細を開示して相談したいのはヤマヤマですがCLK周波数など書けない事情があり、失礼します。

    要は送信バッファ空(ti=1)となるタイミングの仕様・条件が知りたいのです。
    マニュアルでは、送信レジスタに残データが有/無だけでti変化のタイミングが定まるようですが、その他に、例えば空き待ち時間中の演算の有無にも影響されるのでは?と言う疑問です。

    なお、Txeptの件は「最終bit」の定義が違いました。私は全Byteの最終1bitのつもりでしたが、確かに各Byteの最終bitを示しますね。失礼しました。

    動作目標はクリアできてるのですが、バッファ空タイミングが不思議だったので皆様のご意見うかがいました。
Children
No Data