RX66N、RX63NのMTU(マルチファンクションタイマパルスユニット)について

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

雪です。

RXシリーズのMTU設定で不明点があり苦戦しております。

データシートを確認しましたが、原因が分からない状況です。

以下に問題内容を記載します。

■問題点

やりたい事は、MTU0にて10msのタイマを作る事です。

問題として、MTU0に同じ設定をしているのですがRX66NとRX63Nでタイマ周期が変化します。

設定後、RX63Nでは10ms周期となっており、RX66Nでは5ms周期となっております。

尚、以下が設定値となります。

・設定値

 ・使用クロック:12.000000MHz


 ・SYSTEM.PLLCR.WORD = 0x1F00; // PLL 逓倍×16 入力1分周


 ・SYSTEM.SCKCR.LONG = 0x21C21211; // PCLKA1/2


 ・MTU0.TGRA = (10 * 48000000) / (*** * 1000) - 1;

10msタイマを作るだけならPCLKAを1/2から1/4に変更すれば良いだと思いますが…

何故、同じ設定をしているのに周期が変わるのかを調査しており、原因究明中です。

RX63NまたはRX66NでPCLKAの分周以外に何か別の分周されるレジスタが存在するのでしょうか?

度々、不躾な質問ばかりで恐縮ですが、何か分かる事があればご教示頂けると幸いです。

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

    > SYSTEM.PLLCR.WORD = 0x1F00; // PLL 逓倍×16 入力1分周

    RX63NとRX66Nのユーザーズマニュアルを見てみたところ、PLLCRの仕様が異なっていますね。上記はRX66Nの設定になりますけど、RX63Nでは0x0F00でしょうか?

  • NoMaY様

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

    RX63Nだと設定値は0x0F00となっております。

    以上

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

    MTUのプリスケーラ仕様も異なっていますね(RX63NではMTU0.TCRで設定、RX66NではMTU0.TCRとMTU0.TCR2で設定)。レジスタへの設定値は幾つでしょうか?

    [追記]

    それから、最初の投稿内のMTU0.TGRAの設定値に *** が含まれていますが、具体的な値は幾つでしょうか?

  • NoMay様

    お世話になっております。

    RX63NでのMTU0.TCRの設定値は0x23です。

    また、RX66NはMTU0.TCRの設定値は0x23、MTU0.TCR2は何も設定していませんのでデフォルト値となっております。

    MTU0.TGRAの設定値に *** の箇所については、64となります。

    RX66Nと63N両方同じ値です。

    以上

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

    リプライありがとうございました。先程からRX63NとRX66Nのユーザーズマニュアルを見比べているのですけれど、想定外の分周器は無さそうですね。というか、設定値から考えるとRX63Nの10msというのは期待通りの値であり、RX66Nの5msというのが期待した値の半分しかありませんので、想定外の分周器というより想定外の逓倍回路という事態ですね。

    それで、気になったのですが、PCLKAが想定の2倍の周波数であることが疑われることのひとつですけど、RX66NでSCKCRは初期値から正しく0x21C21211へ書き換わっていますでしょうか?レジスタライトプロテクトを外し忘れていたりしませんでしょうか?

    [追記]

    あっ、話が逆かな、、、もう一度考え直します、、、

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

    すみません、確認したいのですが、以下の設定ですとPCLKAは96MHzですよね?プリスケーラを64分周として10msを作ろうとして何故48なのでしょうか?96ではないでしょうか?(ちなみに、投稿システムが *** へ変換してしまう、のかな??)

    > 使用クロック:12.000000MHz
    > PLL 逓倍×16 入力1分周
    > PCLKA1/2


    > MTU0.TGRA = (10 * 48000000) / (64 * 1000) - 1

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

    今しがた気付いたのですが、RX66NではMTUはPCLKA(max 120MHz)ですが、RX63NではMTUはPCLKB(max 50MHz)です。そのことに関して何か誤解が存在していませんでしょうか?

  • NoMaY様

    お世話になっております。

    仰るように48に設定した場合だと10msで動作させる事は出来ず、計算上では約5msで動作するという認識です。

    (認識間違いであれば申し訳ございません。)

    ですが、MTU0の割り込み内でポートをトグルさせるとRX63Nでは10msで動作しており、RX66Nでは5msで

    動作している事を確認しております。

    上記の現象から関係者に原因を求められている経緯であります。

    下名からすると10msで動作している事自体が不思議ではあるのですが…

  • NoMaY様

    お世話になっております。

    下名も今、各データシートの1.1.仕様概要からRX66NではMTU:max 120MHz、RX63NではMTU:max 50MHzである事を

    確認致しました。

    初心者的な質問になるかも知れませんが、つまりRX63Nと66NとではPCLKAに出力できるクロックの最大に違いが

    あるという認識で合っておりますでしょうか?

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

    > RX63Nと66NとではPCLKAに出力できるクロック

    たぶん、これが勘違いの原因かな、と私は思い始めました。昨日の文を以下のようにデコレーションしてみました。

    > 今しがた気付いたのですが、RX66NではMTUはPCLKA(max 120MHz)ですが、RX63NではMTUはPCLKB(max 50MHz)です。そのことに関して何か誤解が存在していませんでしょうか?

  • NoMaY様

    お世話になっております。

    >RX63Nと66NとではPCLKAに出力できるクロック

    RX63Nのデータシートを再確認した所、PCLK=PCLKB(max 50MHz)だという注記が確かにありました。

    NoMaY様のご指摘の通り、下名の認識間違いがあるという事が分かりました。

    もしかすると、認識間違いによって今抱えているタイマが10msにならないという問題に繋がっているのかも知れません…

    本日はソースコードを確認出来ないのですが、後日、ソースコード上でPCLKBの設定を確認します。

    確認次第、NoMaY様にも展開させて頂きます。

    以上

  • NoMaY様

    お世話になっております。

    本日、ソースコード上でPCLKBの分周比を確認致しました。

    PCLKBの分周は1/4となっており、10msで動作させる設定となっておりました。

    今回、RX63N、66NのMTUがPCLKAと誤認していた事が原因だと理解でき疑問が解消されました。

    後、NoMaY様には度々アドバイス頂き本当に助かっております。

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

    下名も今後とも精進して参ります。

    以上