RL78/L13を使用して設計を行っています。
消費電流を抑えるために待機時はSTOPモードにしています。
STOPから復帰後約1mseウエイトを入れたのち周辺機能を動作させていますが、
UARTの送信がどうも正常にできていない状態です。
UARTはUART2を使用しており送受信とも動作許可しています。
受信は正常に割り込みが入りデータの読み出しもできているのですが、
送信はレジスタにデータを書き込んでも端子から出力されない状態です。
少し他の処理を進めた後だと問題なく送信もできているのですが、
なぜかSTOP復帰直後の送信だけがうまく動かない状態です。
解決策等をご存じの方がおりましたらご教授いただけますでしょうか?
チョコです。
STOPから復帰後に「SO1=0x0001」とされていますが、STOPに入る前のSO1はどうなっているのでしょうか。
(どのような状態でSTOPに入れようとしているか)
TxD2がLowの状態(SO10=0)でUART2を停止すると、UARTの信号としてはブレーク状態となってしまうので、STOPする前にはSO10を1にしておく必要があります。ここらあたりを確認してください。
以上
ハードウェア マニュアルを眺めていたら、以下のようなフローが記述されていました。
STOPモードにする場合(SNOOZEモードにしない場合)にはこの処理を行って、STOP解除後は初期設定からやり直したらどうでしょうか。
L13で単純にSTOP解除後どのぐらい待つと送信データが出力されるか見てみたのですが、
community-ja.renesas.com/.../r_5F00_cg_5F00_main_5F00_c.txt
端末には
-----
bootSTOP0123456789
と出力されたので、添付のコードで試した限りでは、STOP解除直後のデータも、TXD2から出て来ています。こちらで試した限りでは、一定時間送信データが出ないという現象は再現させられませんました。(クロックは、内蔵クロックとXTALの両方試しました。)
(起動後、タイマで10秒経過するとSTOPモードに入れる。INTP0(P137)=LでSTOPから復帰させています。)
なお、
while((SSR10 & 0x0040) != 0) __nop(); //送信完了を確認
上記を入れないでSTOPモードに入れると、TXD2=LでSTOPモードに入り(STOPモードの間はTXD2=L)、出力データは文字化けしました。(が、STOP解除後も直ぐにデータは出ていました)
ご返答ありがとうございます。
一度この方法を試してみます。
添付のコード参考にさせていただき、現在のコードと比較してみます。