工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

マイクロコントローラータイマーのリアルタイムクロック(RTC)

この記事は、マイクロコントローラー内部のRTCについて説明するマイクロコントローラータイマーに関するシリーズの第3回です。

この記事は、マイクロコントローラータイマーに関するシリーズの第3回です。最初の記事では、ほとんどのタイプのタイマーの主な機能について説明し、定期的なタイマーについて説明し、2番目の記事ではパルス幅変調MCUタイマーについて説明します。

リアルタイムクロック(RTC)は、1秒のタイムベースを維持するための専用タイマーです。さらに、RTCは、ソフトウェアまたはハードウェアのいずれかで時刻とカレンダーの日付を追跡するためによく使用されます。 RTCの機能の多くは非常に特殊化されており、高精度と非常に信頼性の高い操作を維持するために必要です。マイクロコントローラの外部に、I 2 とインターフェイスするRTCデバイスがあります。 CまたはSPIバス。

この記事では、マイクロコントローラー内のRTCについて説明します。

リアルタイムクロックの概要

リアルタイムクロックの基本的な機能は、1秒の間隔を生成し、連続カウントを維持することです。

下の図でこれを表すことができます。

図1。 このタイミング図は、RTCの基本的な機能を示しています

また、秒カウンターを読み取り、3秒後に発生するイベントBをスケジュールするプログラム関数Aも示されています。このアクションはアラームと呼ばれます。秒カウンターが継続的に実行され、停止および開始しないことに注意してください。 RTCの2つの主要な要件は、精度と継続的な運用です。

次の図は、RTCの一般的なハードウェア機能を示しています。

図2。 リアルタイムクロックハードウェア機能

RTCには、多くの場合、外部水晶を備えた独自の内部発振器と、外部周波数基準を使用するオプションがあります。すべてのクロックソースは32,768Hzで動作します。外部クロックソースにより、TCXO(温度補償水晶発振器)などの非常に正確で安定したデバイスを使用できます。

クロックソースはマルチプレクサで選択され、プリスケーラに入力されます。プリスケーラはクロックを32,768(215)の係数で除算して、1秒のクロックを生成します。

基本的なRTCには、通常32ビット以上の秒カウンターがあります。一部のRTCには、時刻とカレンダーの日付を追跡するための専用のカウンターがあります。

時間と日付のカウンターがない基本的なRTCは、この目的のためにソフトウェアを使用します。一般的なオプションは、出力ピンからの1Hzの方形波です。 RTCには、プロセッサ割り込みを生成するためのいくつかの可能なイベントがあります。

RTCには、多くの場合、マイクロコントローラーの残りの部分の電源がオフになっているときに動作できるように、専用の電源ピンがあります。この電源ピンは通常、バッテリーまたは別の電源に接続されています。

RTCの精度と周波数補正

RTCの精度は、32,768Hzのクロックソースに依存します。適切に設計された水晶発振器では、エラーの主な原因は水晶です。外部TCXOを使用して非常に正確なタイミングをとることができます。または、より安価な水晶と内部発振器を使用して特別な周波数補償技術を使用することもできます。クリスタルからのエラーの主な原因は3つあります。

以下のグラフは、RTCの精度に関連するいくつかの概念を示しています。

図3。 TexasInstrumentsの厚意により使用された温度を使用した誤差測定を示すグラフ

このグラフの濃い青色のトレースは、典型的な初期許容誤差と温度による変化を示しています。ピンクのトレースは、温度誤差だけを示しています。温度を補償するための鍵は、結晶の振る舞いがよく​​知られており、二次方程式で予測されるという事実です。回路基板の製造後に初期誤差を測定し、温度がわかれば、最大の誤差源を補正することができます。

黄色の帯は、注意深く補正した後の精度の妥当な目標です。 1年間の1ppmは約30秒であることに注意してください。結晶の老化を補うことは困難です。幸いなことに、老化は通常、年間わずか数ppmです。

RTCタイミングを変更する方法

エラーを補正するために、システムの一部としてRTCのタイミングを変更する2つの方法があります。

最初の図(図4)は、秒カウンターの各期間でプリスケーラーによってカウントされたオシレーターサイクルの数を示しています。

最初の2秒間は、通常の32,768サイクルです。ソフトウェアは、温度の読み取り値と初期エラーを使用して、発振器が少し速く動作していることを判断し、32,768サイクルは実際には0.99990秒の周期です。この小さなエラーを補正するために、ソフトウェアはRTCに、プリスケーラのモジュラスを4秒ごとに32,781に変更して、時間を追加するように指示します。

図4。 プリスケーラによってカウントされた発振器サイクルの表現

この手法には、秒から秒への周期のわずかな変化という利点があります。ただし、この手法では、特別なプリスケールカウントと特別なカウントの適用間の秒数を保持するために、調整可能なプリスケーラと追加のレジスタが必要です。これはかなりクールだと思います。少し複雑ですが、かなりかっこいいです。

RTCにタイミングを調整するための特別なプリスケーラーがない場合はどうなりますか?この図は別の方法を示しています。

図5。 図4に示したのと同じ状況ですが、プリスケーラがありません

この場合、ボックス内の数字は秒カウンターです。表示されるカウントは100251の後に100252が続きます。ソフトウェアは継続的に調整を計算し、RTC秒カウントを追跡しています。エラーが正確に1秒に累積されると、ソフトウェアは1秒を加算または減算して、累積エラーを調整します。

この手法の欠点は、調整が行われるときに秒から秒への変化が大きいことです。この手法には、任意のRTCと互換性があるという利点があります。

RTCのセキュリティ

セキュリティは興味深い要件です。サービスの使用やリソースの消費について顧客に請求するために時間が使用されるアプリケーションがあります。 RTCのハッキングの防止または検出に関しては、さまざまな実践があります。技術は、エンクロージャーの侵入検知からマイクロコントローラー内の特別な機能まで多岐にわたります。

私が現在使用しているマイクロコントローラーのRTCには、ソフトウェアが重要なレジスターを永続的にロックできるようにするための特別なレジスターがあります。ロックされると、それらを変更することはできず、ハッキングや制御不能なコードから保護されます。時間を変更するには、マイクロコントローラーを完全にリセットする必要があります。

日時

一部のRTCには、時刻とカレンダーの日付を維持するためのハードウェアカウンターがあります。これには、分、時間、日、月、年のカウンター、およびうるう年の考慮が必要です。時刻とカレンダーの日付もソフトウェアで保持できます。

顕著な例は、time.hファイルにあるC標準ライブラリの関数です。マイクロコントローラーの場合、このシステムはRTCの秒カウンターに基づくことができます。 time.hライブラリを完全にサポートするには、4つの小さなカスタム関数を作成する必要があります。

ここで重要な関数の1つは、ライブラリのtime()関数によって呼び出されます。この関数は、「エポック」と呼ばれる開始点(通常は1970年1月1日)からの秒数として時間を返します。通常、読み取るカスタム関数ハードウェアタイマーの名前はget_time()または同様のバリエーションです。 get_time()が行うのは、秒カウンターを読み取り、値を返すことだけです。ライブラリは残りの時間を実行して、この時刻を秒単位で現在の時刻と日付に変換します。

32ビット秒カウンターの問題

32ビット秒のカウンターは長時間実行されますが、永久には実行されません。カウント範囲が限られているため、深刻な問題が発生する可能性があります。たとえば、C標準ライブラリを使用する32ビットカウンタと1970年1月1日のエポックに基づくシステム時刻は、カウンタが最大カウント後にロールオーバーする2038年1月に失敗する可能性があります。この問題はY2038問題として知られています。

彗星を研究するためのNASAディープインパクト宇宙ミッション中に失敗が発生しました。主要なミッションの目標は達成され、宇宙船は他の物体の研究を続けました。しかし、2013年に突然通信が途絶えました。これがNASAの公式コメントです。

「損失の正確な原因は不明ですが、分析により、DeepImpactの方向性の制御が失われる可能性のあるコンピューター時間のタグ付けに関する潜在的な問題が明らかになりました。」

-2013年のNASAニュースリリース

失敗の原因として考えられるのは、32ビットタイマーが0.1秒単位で時間を維持し、ロールオーバーしてミッションの「終了」を引き起こしたことです。

日時が関係する場合の私の提案は、設計で予想よりも長い寿命を使用することです。

次のステップ

次の記事では、ウォッチドッグタイマーを使用してシリーズを締めくくっています。


産業技術

  1. クラウド管理を真のITプラクティスにする時が来ました
  2. コンデンサの充電と放電
  3. 時定数方程式
  4. 電圧と電流の計算
  5. 本当の機会は産業の機会です
  6. 作業設備:アップグレードの時期ですか?
  7. デジタルトランスフォーメーションの7つの推進要因
  8. 高性能機械加工を採用する時が来ましたか?
  9. ロボットはリアルタイムで3Dの変化を検出して共有します
  10. より優れたセンサーが氷の堆積をリアルタイムで検出
  11. リアルタイムのエンタープライズ相互運用性