最終更新日:2022/4/20
RP2040にはRTCが内蔵されていると資料に書かれています。既に先人の情報でとても精度が悪いという事も判っています。
Picoの場合、32kHzのXtalは搭載していないようなので、装備されている12MHzXtalから、125MHzを生成し、これを内部クロックのベース周波数として使用しているのかと考えます。
このことが原因なのかどうかは判りませんがRTCとしての精度は悪いとの事です。先人は200ppm程度の誤差が出ると指摘し、一般的なRTC精度±20ppmより10倍悪いとしています。※ユーザフォーラム
これが理由なのか、外部RTCを進めている方が多いかと思います。https://raspberrypi.github.io/pico-sdk-doxygen/group__hardware__rtc.html に SDKドキュメントとして情報掲載されています。
ここに RP2040のHardware_RTCのアクセス方法が示されています。
このAPIを見る限りdatetime_t型の構造体で扱うしかなさそうです。エポックかUTCのような起点からの起算数値で扱えた方が扱いやすいのですが致し方無しなのでしょうか?
PicoにはBatteyBackUpの端子はありません。VSYS端子を使用すれば良いのかと思いますが、USBからの電源と衝突するようです。※BluePillにはBatteyBackUpの端子が存在します。さて、ArduinoIDE環境から使用する場合を検討します。
WDT同様直接SDKにアクセスするか、外部ライブラリを探して利用するかになるかと思います。
後者の場合、Khoi Hoang氏作のライブラリがArduino公式版として紹介されているようです。
https://www.arduino.cc/reference/en/libraries/rp2040_rtc/
ところが、自分の環境ではサンプルスケッチがビルド出来ません。MBED版では無く、伯爵版の環境を使用しているからでしょうか?
なんとかRTCの扱いを習得したいと思います。その後 #include <TimeLib.h> を使って エポックタイムを time_t型で setTime()で登録 now()で取得するのがリーズナブルかという結論に至りました。敢えて構造体では扱わない事にしました。
適当なサンプルスケッチが提供されていないかと調査中です。
/* * 2022年4月20日 T.Wanibe * RPiPicoの内蔵RTCの使い方を検討したスケッチ * 最大2093056バイトのフラッシュメモリのうち、スケッチが58840バイト(2%)を使っています。 * 最大262144バイトのRAMのうち、グローバル変数が11140バイト(4%)を使っていて、ローカル変数で251004バイト使うことができます。 */ #include <TimeLib.h> long epoch = 1650453324; //2022.4.20 //-------------- void setup() { Serial.begin(115200); while(!Serial); //シリアルポートが接続するのを待ちます。 ネイティブUSBポートにのみ必要 setTime(epoch); } //-------------- void loop() { if(Serial) Serial.println(now()); delay(1000); } |
免責事項
本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。
商標・登録商標
Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。