いつもお世話になっております。
E1でのデバッグについて質問があり、投稿させていただきます。
RL78/G13(GR-KURUMI)において、E1でデバッグ中、
UARTでデータ受信をすると、ブレークポイントを入れていないのに
必ず以下の写真のように、関数r_uart0_interrupt_receiveにおいてブレークしてしまいます。
開発環境はCS+を使用しています。
デバッグ中に1byte受信する度に停止するため、データの送受信が検証できないでいます。
本現象が発生する理由や対策について何かご存知でしたら、教えていただきたくお願い申し上げます。
ぼくもkurumiや自社製kurumi互換?ボードでCubeSuite+(とかCS+)でデバッグするけれど
そういう事態にはなってないなあ。
デバッガ接続するためにはTOOL0ピンとRXだっけ?の部分に抵抗をいれないとだめだけど
その抵抗値がちがうんじゃない?
befigureさん、
停止時のレジスタ状態がわかる画像を貼ってもらえませんか?
受信時にデータを格納する gp_uart0_rx_address のアドレスも知りたいです。
よろしくお願いします。
チョコです。
RL78ではいくつもUART受信を行うプログラムを作成しましたが、
投稿されたような状態は経験したことはありません。
現象から想像すると、不正命令の実行の可能性が考えられます。
(デバイスの本来の動作では、不正命令の実行はリセットとなり
ますが、オンチップ・デバッグではリセットではなく、ブレーク
になったと思います。)
どちらにしても、鈴木さんがコメントされているように、もっと
情報がないと判断はできません。
各位
皆様におかれては、早速のご回答ありがとうございます。
tetnoguchi様
GR-KURUMIは以下のように始めからTOOL0などに抵抗が入っており、抵抗値に問題はないと考えていたので、自作した接続治具は、直接にE1とこれら端子をつなげていました。
また、それとは別にRX0端子とTX0端子はpullupさせています。
tetnoguchi様の環境では使用できているとのことなので、
資料『E1/E20エミュレータ ユーザーズマニュアル別冊 (RL78接続時の注意事項)』
などを参照して、抵抗値を変えて再度試してみたく思います。
鈴木 康之様
説明不足で申し訳ありません。
受信データは以下の命令で受信割り込みを待機して、受信データをグローバル変数に格納しています。
R_UART0_Receive(&global_var[0], 1);
グローバル変数のアドレスが0xFAFCEで、受信時のgp_uart0_rx_addressのアドレスも0xFAFCEでそこに受信したデータが格納されているのを確認しました。
レジスタについては制御レジスタやUART0のレジスタに特に不審な点は見られませんでした。
チョコ様
本現象はUART2などを使用した場合には発生していないので、
P11/RxD0/TOOLRxDとP12/TxD0/TOOLTxDの端子をUART0とE1エミュレータに使用していることが
原因ではないかと推測しています。
E1と接続していないときは、プログラムは正常に動作し、
E1と接続しているときも、停止後に実行(F5)すれば、通信タイミングを逃してデータを取りこぼす以外は、
プログラムの続きが正常に行われます。
私の作成したE1との接続治具が不正な動作の原因となっているかもしれないので、
E1の資料を読んで、再調査してみます。
動作がうまくいきましたら、また改めて報告させていただきます。
以上よろしくお願い申し上げます。
一応参考になるかもしれないので貼っておきます。
『GR-KURUMIとE1接続』
R2とR7は何のために入っているのですか。
befigureさん、 fujitaさん
GR-KURUMIと接続していたのを見逃してました。プログラムではなく、回路の問題ような気がします。
GR-KURUMIのRXD0がTOOL0と2KΩの抵抗(R2)でつながっているのが問題かもしれません。
>また、それとは別にRX0端子とTX0端子はpullupさせています。
RX0端子のプルアップを外すとどうなるでしょうか?
以上、よろしくお願いします