RL78 高速システムクロックへの切り替え

■マイコン:RL78(R5F10EGE)

上記のマイコンを使用しています。
X1/P121端子、X2/EXCLK/P122端子に水晶発振子を接続し、
プログラム起動時にCPUクロックを「高速オンチップ・オシレータ」から「高速システムクロック」に切り替えようと
試みていますが、うまくクロックが切り替わってくれません。何が原因なのかを特定するのに苦慮しております。
アドバイスがございましたらご教授いただけると助かります。

以下、該当箇所(クロック切り替え)のプログラムです。

void R_CGC_Create(void)
{
    uint8_t           temp_stab_set;
    uint8_t           temp_stab_wait;

    /* Set fMX */
    CMC = 0x40U;
    OSTS = 0x07U;
    MSTOP = 0U;
    temp_stab_set = 0xFFU;
    do
    {
        temp_stab_wait = OSTC;
        temp_stab_wait &= temp_stab_set;
    }
    while (temp_stab_wait != temp_stab_set);
    /* Set fMAIN */
    MCM0 = 1U;
    while (MCS == 0U);
    /* Set fSUB */
    XTSTOP = 1U;
    OSMC = 0x10U;
    /* Set fCLK */
    CSS = 0U;
    /* Set fIH */
    HIOSTOP = 1U;
}

現象としては、上記のプログラムの中の、
while (temp_stab_wait != temp_stab_set);
でwhile文のループから抜けなくなります。

試しに上記のWhile文のループをコメントアウトすると、今度は
while (MCS == 0U);
で同じくwhile文のループから抜けなくなります。

Parents
  • Former Member
    Former Member
    ひょっとして設定がシミュレータになっているということはないですか?
  • チョコ様
    サンプルプログラムのご提供有難うございます。確認してみます。
    d70116C様
    hexファイルをフラッシュメモリに書き込んで動作確認を行っておりますので、設定がシミュレータになっていることはないと思います。

    該当マイコンのHWマニュアルを読み込むと「IAWCTL(不正メモリ・アクセス検出制御レジスタ)でガード機能がONになっているとCMCレジスタの書き込み不可」という情報を得たのですが、残念ながら該当せずでした。
  • チョコです。
    おそらく、初期設定の段階でおかしくなっているようなので、そこまでのプログラムをzipにしてアップしてもらうことは可能でしょうか?
Reply
  • チョコです。
    おそらく、初期設定の段階でおかしくなっているようなので、そこまでのプログラムをzipにしてアップしてもらうことは可能でしょうか?
Children
  • チョコ様
    無事に高速システム・クロックに切り替えてソフトを動作させることができました。
    色々と対応いただき感謝です。お騒がせしました。
    原因は、CMCレジスタの仕様である「リセット解除後、1回のみ書き込み可能」が満たされておらず、CMCレジスタの設定が切り替わらないことでした。