RA4M1の内蔵クロックでRTCを使った場合の時間のズレ

はじめまして

RA4M1のRTCに関する質問です。

内蔵クロック(LOCO 32.768 kHz)でRTCを動かすと、当然ながらズレが大きく、1日で10分ほど進みます。

ここからの質問が、こちらへ書き込んで良い内容なのか迷いましたが、MCUはRAシリーズなので質問させていただきます。

具体的には、Arduino UNO R4 MinimaとArduino IDEでの話となります。

当初、16 MHzのメインクロックを外部水晶振動子としてクロック源を切り替えましたが、RTCには影響がありませんでした。

次に、ソフト的な補正ができないかデータシートを確認し、時計誤差補正レジスタ(RADJ)を使おうとしましたが、RADJはサブクロックが内蔵クロックの場合は動作しないと記載を確認しました。

そこで、ピン6,7に32.768 kHzの水晶振動子と12 pFを取り付けました。
これをArduino IDEプログラム環境下で、サブクロック源を切り替えるために色々やってみましたが、私の技量では無理でした。

最終的には、Arduino IDEが準備しているRTC.cppの455行目にある「define RTC_CLOCK_SOURCE RTC_CLOCK_SOURCE_LOCO」を「define RTC_CLOCK_SOURCE RTC_CLOCK_SOURCE_SUBCLK」と書き換えるとSOSC(外部サブクロック)で動作し始めたようで1日で1秒以下のズレとなりました。

質問内容は以下の3つです。

1 Arduino IDEのスケッチ(プログラム)内でレジスタを指定して、クロック源を切り替えることは可能でしょうか?

2 Arduino IEDのスケッチで、クロック源などのレジスタの内容を確認する方法はありますか?

3 他に方法がない場合、RTC.cpp内を書き換えるのは抵抗があるのですが、大丈夫でしょうか?

  • わわいです

    そもそも、Arduinoってのは、電子工作初心者向けの環境で、いろいろ難しいこと、ややこしいことはすべて出来合いのコードや出来合いの環境にしてしまって、出来合いのモジュールやら関数で楽に工作しましょう、ってやつです。

    ってことで、提供された環境で実現できない、実装できない、ってなら、自分の知識で、自分の責任で改変していくしかないでしょう

    まあそんかわり、肩代わりしてもらっていた難しいことやややこしいことを自分でどうにかしなければいけないことになるかもしれません。

    それもまた、自分の責任の上で。

  • 返信いただき、ありがとうございます。

    「Arduino IDE」しばりでの問題解決は、大変難しいということが分かりました。

  • 自己レスになりますが、RTC.cppを編集せずにArduino IDEのスケッチで必要な処理が出来るようになりました。

    質問していた1と2以外にも、内部と外部のクロックを端子に出力して校正する方法も分かりました。

    これで、この内容は解決いたしましたので閉鎖とさせて頂きます。

    皆様には大変お世話になりました。ありがとうございます。

    初心者がコミュニティに書き込み、大変失礼いたしました。