いつもお世話になっております。
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端子のプルアップを外すとどうなるでしょうか?
以上、よろしくお願いします
P11/SI00/RxD0/TOOLRxD/SDA00 と P40/TOOL0 が R2(2kΩ) 介して繋がっていますが、UART0 への入力は E1 との接続に影響があるんでないかな。R2 は KurumiWriter からの書き込み用で E1 との接続には不要なので、R2 を外したらどんなもんでしょうか?
こっちの資料にあるようにTOOL0ピンを1kでプルアップしないとR2とのバランスの関係で
UARTと共用できひんかった気がします。
japan.renesasrulz.com/.../gr-kurumi-e1-e20.aspx
本来の書き込み環境的な資料がRulz改変のときに失われてますけどね。
たぶんそれが原因だと。
皆様におかれては様々なアドバイスをいただき、ありがとうございます。
いただいたアドバイスを試した結果、tetnoguchi様から紹介いただいたサイトを参考に
以下の写真のように自作冶具のTOOL0を1kΩでpull-upしたところ、
UART0受信でデバッガ停止する現象が発生しなくなりました。
今回アドバイスをいただいた、皆様には改めて御礼申し上げます。
ありがとうございました。
うまくいってよかったですね。
ぼくもE1接続でいろいろしたクチですから、お手伝いできてよかったです。
KurumiWriterでTOOL0ピンをつかってシリアルで書き込むように
考えられてつくられたボードなので
起動時にTOOL0ピンからコマンドの送受信をする関係で
FT232の送受信ピンと一部両接続されているわけですよね、たぶん。
で、そのままE1につないじゃうと、UARTの送信時にTOOL0ピンが
反応しちゃって、デバッグ停止になっちゃうんだとおもいます。
で、外側に抵抗をつけて内蔵のR3が1Kになって...という下りだったんじゃ
なかったかな。
とにかくうごいてよかったですね