UART受信すると、デバッガがブレークしてしまいます

いつもお世話になっております。

E1でのデバッグについて質問があり、投稿させていただきます。

RL78/G13(GR-KURUMI)において、E1でデバッグ中、

UARTでデータ受信をすると、ブレークポイントを入れていないのに

必ず以下の写真のように、関数r_uart0_interrupt_receiveにおいてブレークしてしまいます。

開発環境はCS+を使用しています。

デバッグ中に1byte受信する度に停止するため、データの送受信が検証できないでいます。

本現象が発生する理由や対策について何かご存知でしたら、教えていただきたくお願い申し上げます。

Parents
  • ぼくも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接続』

Reply Children
  • 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になって...という下りだったんじゃ

    なかったかな。

    とにかくうごいてよかったですね