マイコンに時計機能が付いた当初は、1秒を作る機能しかありませんでした。1秒を作って、それをソフトウェアで累算して1分を作り、さらに1時間を作って時計機能を実現していました。1時間ができれば、さらにソフトウェアで累算して1日、1月、1年と作れます。4年がカウントできれば、うるう年にも対応するカレンダーを作れます。しかし、これでは周期的にCPUに割り込みが発生し、他のタスクの邪魔をすることになります。
そこで、ソフトウェアの負荷を軽くするために、時計機能とカレンダー機能をハードウェアで実現するようになりました。
最近のRTCは時計とカレンダー機能に対応し、さらに、うるう年にも対応している製品があります。
RTCは、時計やカレンダー機能だけではなく、一定時間刻みで実行されるタスクの基準クロックとしても使われています。例えばOS(Operation System)*4)上でマイコンを動作させる時のタイムベース用タイマーとして使われます。
*4):マイコン入門!!必携用語集(最終回):時間、順序を律義に守る――リアルタイムOSとは
基本的な構成要素は、「32.768kHzクロックの分周器」と「時刻用のカウンタ/レジスタ」と「日付用カウンタ/レジスタ」です(図2参照)
32.768kHzのクロックを32768分周して1秒のクロックを作ります。それを60カウントすると「分」になり、さらに60カウントすると「時間」になります。1時間を24カウントして、「日」にして、さらに365カウントして「年」を作ります。
各カウンタ/レジスタには、初期化のための設定用レジスタがあります。ユーザーはこれらのレジスタに現在時刻を書き込むことによって、時刻合わせができます。設定用レジスタから各カウンタ/レジスタに書き込む際には、全項目を一度に書き込みます。なぜなら、「分」のカウンタ/レジスタを書き込んで、次に時間差をもって「秒」を書き込むと、その時間差の間に「秒」がオーバーフローして「分」を書き換えてしまい、「秒」を書き込む時には分が更新されて、時刻が意図した値にならないという問題が発生する恐れがあるからです。そこで、通常はハードウェアで、「秒」「分」「時」の各レジスタを同時に書き込む構造になっています。
時刻や日付を読み出す際にも、各項目に読み出し用レジスタが設けられています。読み出しの場合も、各レジスタの読み出しタイミングに時間差を発生させずに、一度に読み出せるようになっています。
読み出し用レジスタは自動的にBCD変換されるので、ユーザーは10進数に変換する必要がありません。
時計機能には、アラーム(目覚まし)機能(図3参照)が付き物です。すなわち、ある時刻になると割り込みを発生させることができます。ユーザーが希望する時刻をアラーム用のレジスタに設定すると、その時刻に割り込みが発生します。日付でも同じように割り込みを発生させることができます。
また、一定周期で割り込み信号を発生させる機能も付いています。例えば1秒間隔で割り込みを発生させ、そのタイミングを利用して、一定時間刻みで実行されるタスクの基準時間としても使うことも可能です。OS上でマイコンを動作させる時のタイムベースタスクには、この機能が必要です。
一方、マイコンに時計機能が付いた当初と同じように、1秒間隔の割り込みを利用して、CPUはLCDなどの時刻と日付の表示を変更できます。
Copyright © ITmedia, Inc. All Rights Reserved.