RX651の入力信号が正しく読めない件について、アドバイスをお願いいたします。

初めましてSWRIと申します。

現在、RX651(型番R5F5651EDDFB)144PINを開発中なのですが、P20の入力が正しく読み取れません。

E2Lite(FINEモード)を使用して、PORT2.PIDR.BIT.B0をウォッチしているのですが、2,3秒おきにHIGH⇔LOWを繰り返しているような状況です。

(ウォッチしている値だけでなく、実際の基板動作もそれに追従しています)。

オシロで観測する限り、該当の端子はLOWで安定しています。

データシートでは、

「PORTm.PIDR レジスタを読むと、PORTm.PDR レジスタ、PORTm.PMR レジスタ の値に関係なく端子の状態が読めます」
とのことなのですが、一応、PDRの設定、PDRの設定は一通り試しました。
出力側の端子(PORT2.PODR.BIT.B0)は制御しておりません。

基板の電源、GNDは全て確認しました。

上記の内容以外のマイコン動作は、今のところ特に問題無さそうです(開発初期段階なので細かいところは判りませんが、タイマ割り込みは正常に動作します)。

上記の現象(実際の入力と、PIDRの値が乖離する)に思い当たることがあれば、お教えいただけると助かります。

  • 追記:プルアップはしておりません。

  • 追記

    入力がHIの時はPIDRもHIで安定しています。

    入力がLO(正確には80mV(VCC3.3V))の時、HI,LOを繰り返します。

  • SWRIさん、こんにちは。NoMaYと申します。

    私は、デバッグの次のステップとして把握したいこととして、以下の状況を知りたいです。

    ・ そのポートの入力値がLowであり続けることを確認するだけのプログラムを作成して試すとどうなりますか?

    void main(void)
    {
        ポートの初期設定
        for(;;)
        {
            ポートを読む
            if( 値が1だった )
            {
                nop(); ← ブレークポイントを設定
            }
        }
    }

     
    実際、例えば、自分でもそのようなことをした、他の相談者に似たことをしてもらうとした、ことがあります。

    FIT R_SCI_RXモジュールでprintfをfrom inside interrupt routine内から行えるかどうか考えてみるスレッド
    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/9610/fit-r_sci_rx-printf-from-inside-interrupt-routine/47585#47585 以降

    Config_ICUでのIRQの設定について
    community-ja.renesas.com/cafe_rene/forums-groups/beginners/f/002-2095199602/9604/config_icu-irq/47571#47571 以降
     

  • NoMay様

    ご返信、ありがとうございます。

    御提示いただいた、試験プログラムはやってみましたが、結果は同じでした。

    新たに分かったのですが、他のポートでも、同じ動作の端子がありました(PORTF.PIDR.B5)

    こちらは、DIPSWに接続している端子なので、より分かりやすく確認できましたが、同じ症状でした。

    ただ、全ての入力ポートが同じかというと、そうではないようで、別の入力端子(こちらもDIPSWに接続)

    では、問題無さそうです(頻度の違いだけなのかもしれませんが)。

    どうやら、不特定の入力ポートで入力をLOにすると不定(HI⇔LOを繰り返す)になっているようです。

    GNDくらいしかないように思えるのですが、一通りVSSをみても問題無さそうです・・・・。

    このマイコン。 昨今の入手状況の問題から正規の代理店を経ずに納入されたもので、

    (あり得ないと思うのですが)なにか問題のあるマイコンなのかもしれないと、疑ってしまいたくなります。

  • NoMay様

    どうやら、プログラムの問題のようです。

    空のプロジェクトを作成して、該当の端子を見てみますと、ちゃんと変化することが確認できました。

    原因はこれから解析しますが、ソフト上の問題のようです。

  • 原因が判りました。

    周辺モジュールの動作クロックは120MHzがmaxですが、モジュールBだけは60MHzが最大でした。

    これを120MHzに設定してしまうと、上記の現象が発生するようです。

    解決しました。

    ありがとうございました!

  • SWRIさん、こんにちは。NoMaYです。

    > モジュールBだけは60MHzが最大でした。 これを120MHzに設定してしまうと、上記の現象が発生するようです。

    どうも情報ありがとうございました。そういう設定にすると、こういう現象が起きてしまう、のですね。初めて知りました。ハードウェアマニュアルを見直してみたのですけれども、I/Oポートモジュール(という表記が妥当なのかどうかちょっと怪しいですけれども)に関しては、どのクロック系で動作しているか分かり易く明記されているのでは無いなぁ、でも以下の文面からすると、きっとPCLKB系/モジュールB系なのだろうなぁ、という印象がしますね。


    表9.1 クロック発生回路の仕様 (1 / 2)

    ● CPU, DMAC, DTC, コードフラッシュメモリおよびRAMに供給されるシステムクロック(ICLK)の生成
    ● ETHERC (注1), EDMAC, RSPI, SCIi, MTU3, AES (注2), GLCDC (注3), DRW2D (注3)に供給される周辺モジュールクロック(PCLKA)の生成
    ● 周辺モジュールに供給される周辺モジュールクロック(PCLKB)の生成
    ● S12ADに供給される周辺モジュール(アナログ変換用)クロック(PCLKC:ユニット0, PCLKD:ユニット1)の生成



    あと、良いとか悪いとか、そういったことでは無いのですけれども、PCLKBを120MHzに設定出来た、ということは、RXスマートコンフィグレータは御使用になっていないようですね。というのは、RXスマートコンフィグレータの設定GUI画面上からは、その設定は出来ないようになっているから、なのですけれども。ひょっとすると、RX621とかRX631とか、そういったものからの移植案件だから、といったことでしょうかね、、、