RXをe2studioのスマートコンフィグレータのクロック設定で発信源を外部発信入力にしてコード生成し、E2liteでデバッグ実行するとPLLクロックのOSCOVFSRのチェック処理で無限ループします。
mcu_clocks.c
/* Set the oscillation stabilization wait time of the main clock oscillator. */#if BSP_CFG_MAIN_CLOCK_SOURCE == 0 /* Resonator */ SYSTEM.MOSCWTCR.BYTE = BSP_CFG_MOSC_WAIT_TIME;#elif BSP_CFG_MAIN_CLOCK_SOURCE == 1 /* External oscillator input */ SYSTEM.MOSCWTCR.BYTE = 0x00;#else #error "Error! Invalid setting for BSP_CFG_MAIN_CLOCK_SOURCE in r_bsp_config.h"#endif
/* Set the main clock to operating. */ SYSTEM.MOSCCR.BYTE = 0x00;
/* Dummy read and compare. cf."5. I/O Registers", "(2) Notes on writing to I/O registers" in User's manual. This is done to ensure that the register has been written before the next register access. The RX has a pipeline architecture so the next instruction could be executed before the previous write had finished. */ if(0x00 == SYSTEM.MOSCCR.BYTE) { R_BSP_NOP(); }
/* WAIT_LOOP */ while(0 == SYSTEM.OSCOVFSR.BIT.MOOVF) { /* The delay period needed is to make sure that the Main clock has stabilized. If you use simulator, the flag is not set to 1, resulting in an infinite loop. */ R_BSP_NOP(); }
で無限ループします。
何か良い回避方法ありませんでしょうか?
Muraさん、こんにちは。NoMaYと申します。すみませんが、少し教えて下さい。お使いのマイコンはRXマイコンの何でしょうか?(念の為に型番も教えて下さい。) お使いのマイコンボードは何でしょうか?(御社設計ボードであれば、その旨、リプライ下さい。) また、以下のものをzipファイルに固めてリプライに添付して頂き、見せて頂くことは出来ますでしょうか?(1) ○○○.scfgファイル (ぜひ)(2) src/smc_gen/r_config/r_bsp_config.h (ぜひ)(3) .projectファイルと.cprojectファイル (出来れば。なお、個人情報もしくはマル秘情報が含まれていれば"XXX"等で伏字にして下さい。)それで、何か良い回避方法ありませんでしょうか、とのことですけれども、RXスマートコンフィグレータの設定や生成されたコードが正しければ、これは以下の状況になっているということ、の筈ですのでハードウェアを確認されるのが良いと思うのです。これらの点はどうでしょうか?(1) 外部発振入力されていない(回路設計ミス、基板設計ミス、基板製造不良)(2) 発振器でなく発振子であるならば、発振回路のマッチングがとれていなくて、発振していない[追記](3) とりあえずRX65Nのハードウェアマニュアルを見るとLOCOでカウントする仕組みになってますね[メモ]すみません、自分用のメモです。置かせて下さい。ルネサスFAQ検索: MOOVFja-support.renesas.com/search/MOOVF検索結果なしルネサスFAQ検索: mainja-support.renesas.com/search/main検索結果あるものの該当しそうなものはなし(例えば、main関数に来ない、などを期待)
Muraさん、こんにちは。NoMaYです。あと、ひょっとして、○○○ Debug.lauchでデバッガを起動していたりしませんでしょうか?e2 studioでは今までには無かった事例ですけれども(他方CS+では頻発している事例ですが) 初学者さんということですので、シミュレータで起動してしまっていたことになっていたのかも知れないと思ったのです。もし、○○○ Debug.lauchで起動していましたら、○○○ HardwareDebug.lauchで起動してみて下さい。(すみません、シミュレータで起動した場合に、まさにその場所で無限ループするのか、正確には記憶していなかったりしますので、もしかすると外しているかも知れませんけれども。)
シミュレータで起動されていれば「デバッグ」のビューに[Renesas Hardware Debugging] ではなく [Renesas Simulator Debugging (RX,RL78)] のような表示が出るので、そこで区別が付きます。シミュレータは周辺回路をシミュレーションしないので、レジスタの値も期待したようには動いてくれません。(コンペアマッチのタイマイベントは疑似的に動かしてくれますが、それにしても割り込みを発生させるだけでコンペアマッチのカウンタは更新されません)シミュレータだとループを抜けないのはそれが理由です。実際にクロックが来ているかも気にはなりますが。(参考) RX621 内臓フラッシュROMイレーズエラーを伴うデバッグ不可https://japan.renesasrulz.com/cafe_rene/f/forum5/8163/rx621-rom
NoMAYさん、こんにちは。Muraです。
返信遅くなり申し訳ございません。
投稿してからルルツに何故かログインできない症状が発生し、ルルツ管理人さんに対応頂いておりました。
ルネサス技術サポートにも同内容問合せしており、ログイン出来ない期間に技術サポートから回答頂きました。
有難うございました。
ほやさん、こんにちは。Muraです。
ご教示有難うございます。
参考にさせて頂きます。
Muraさん、こんにちは。NoMaYです。すみません、もしよろしければ、教えて下さい。(せっかくのユーザフォーラムですし。) 今回の原因は、どういうことでしたか?
NoMAYさん、こんにちは。MURAです。
承知しました。現在試作ボードが1枚しかなく先に制御基板を作成したグループが基板の確認を行っております。
もうしばらくしましたら試作ボードが私のグループに渡される予定ですので確認出来次第ご報告させて頂きます。
Muraさん、こんにちは。NoMaYです。ごめんなさい、まだ解決まで辿り着いてなかったのですね、解決したものだと早合点してしまいました。でも、リプライ頂いた内容からすると、ルネサスさんの技術サポートからのアドバイスとしては、ハードウェア回りではないか、ということのようですね。ちなみに、お使いのマイコンはRXマイコンの何だったのでしょうか?また、その型番も教えて頂ければ、と思うのです。(ちょっとハードウェアマニュアルを次から次へと確認する気力がなくて、でも、LOCOでカウントする品種がそこで無限ループするのかな?と内心は気になっていて、他方で、LOCOでカウントしない品種だったなら(そういう品種があれば)、自分のリプライした内容も全くの的外れでは無い筈(そうあって欲しいなぁ)、などと気になっていたのでした。)、、、あ、でも、シミュレータで実行していた可能性も排除されていないのかな、、、
すみません。ルルツでのログインに手間取っている間に制御基板の所有権が移ってしまいました。
↑で返信頂きました以下(1)~(3)一式をアップさせて頂きます。
(1) ○○○.scfgファイル (ぜひ)(2) src/smc_gen/r_config/r_bsp_config.h (ぜひ)(3) .projectファイルと.cprojectファイル (出来れば。なお、個人情報もしくはマル秘情報が含まれていれば"XXX"等で伏字にして下さい。)
Muraさん、こんにちは。NoMaYです。ZIPファイルありがとうごさいました。RX72M R5F572MNDxBDだったのですね。(ハードウェアマニュアルを確認すると発振安定時間をLOCOでカウントして確保する仕組みですね。LOCOでカウントするのでカウンタが進まないということがあるのだろうか、という点で私が間違ったことを言ってしまった可能性もありそうです。)それで、頂いたZIPファイルですが、ソース一式も入ってしまっていますけれども、某社さんのソースと思しきソースも含まれていて、うっかり手違いで含めてしまった、ということはないでしょうか?(ライセンス的に大丈夫でしょうか?)