マイクロコントローラ(MCU)とは?
マイコンのタイマについて

マイコンのタイマについて

タイマの基本機能は時間を測ることです。各種タイマ毎に機能や特徴が異なりますが、マイクロ秒程度の短い時間から、秒、分、時、日、月、年まで計ることができるタイマもあります。また、タイマを応用することにより、決められた時間毎に出力信号のレベルを変化させることや、割り込みによるアクションを起こすことも可能です。


各種タイマの機能・特徴

タイマ(カウンタ)

タイマ回路に入力されるクロック信号をカウントアップ、もしくはカウントダウンして時間を計測します。ほとんどのタイマは、オーバーフロー*1、もしくはアンダーフロー*1に備えて、自動的に値を再設定するリロード機能が備わっています。マイコンに内蔵されたタイマの場合は、ソフトウェアにより、そのタイマの動作を開始・停止させ、また、タイマ値を読み出すことが可能です。タイマが利用するクロック信号の周期とタイマのビット長により、計測可能な時間の粒度、時間長が決まります。 一般的に、タイマはカウンタ回路で構成されており、一定間隔の安定したクロック信号を入力することにより、時間を測ることが可能ですが、このクロック信号を外部から入力すれば、入力された信号をカウントするカウンタとして利用することが可能です。


S1C17M40に搭載されているT16タイマのブロック図

S1C17M40に搭載されているT16タイマのブロック図


タイマとして使用する場合は、クロックジェネレータから安定したクロックが入力されるので、時間計測が可能です。また、カウンタとして使用する場合は、EXCLm端子とIOポートを接続してあれば、外部からIOポートに入力されるパルス信号をカウントすることが可能です。但し、現在当社でリリース中の機種においては、EXCLm端子がIOポートに接続されていないため、カウンタとしての使用はできません。カウンタ機能を使用したい場合は、機能を強化したT16B回路により実現可能です。詳細は、各機種のテクニカルマニュアルを参照してください。
また、タイマ機能に加えて、瞬間的なタイマ値を保持するためのキャプチャ機能や、あらかじめ設定した値とタイマの値を比較し、比較結果に応じて、端子から出力される信号を変化させる機能を備えたタイマなどもあります。この機能により、PWM(Pulse Width Modulation)波形を生成することができます。PWM波形を用いれば、例えば、ACモータの回転制御、LEDの調光などを行うことができます。


リアルタイムクロック(RTC)

タイマを拡張し、秒、分、時、月、年、曜日までカウントできるようにしたものです。クロック(通常は32768Hz)を入力し、時計、カレンダとして使用することができます。ほとんどのリアルタイムクロックは、うるう年にも対応しています。


S1C31W65に搭載されているリアルタイムクロック (RTC)のブロック図

S1C31W65に搭載されているリアルタイムクロック (RTC)のブロック図


当社マイコンに搭載されているリアルタイムクロックは、秒、分、時、月、年、曜日だけでなく、ストップウォッチ機能(1/10秒、1/100秒)にも対応しています。これは、もともと当社マイコンが腕時計をターゲットとしていたためです。このストップウォッチカウンタは、リアルタイムクロックとは独立して動作可能ですので、時計機能を動かしながらストップウォッチを用いて時間を計測することが可能です。

うるう年は、必ず4年に1度起こるわけではなく、例えば、西暦2100年は平年です。しかし、リアルタイムクロックにおいては、単に4年に1度をうるう年にしている場合が多いと思われます。そのため、現在、販売されている時計などのカレンダ機能は、2099年までに制限している場合があります。 現在、世界で用いられているグレゴリオ暦によると、西暦が4で割り切れる年はうるう年とするが、西暦が100で割り切れる年はうるう年としない、さらに西暦が400で割り切れる年はうるう年にするとなっています。これにより西暦2000年はうるう年であったため、「うるう年は4年1度」の法則は崩れませんでした。今後、「うるう年は4年に1度」の法則が崩れるのは西暦2100年です。



エプソンのMCU製品(S1C31 FamilyとS1C17 Family)の概要資料をダウンロード

ウォッチドッグタイマ

ウォッチドッグとは「番犬」のことです。いつも家の前にいて、家に訪れた不審者を追い払う犬です。マイコンでは不審者を追い払うのではなく、マイコンの誤動作を監視し、誤動作と判断されれば、マイコン自身のリセットや強制的な割り込みを発生させます。但し、マイコンが誤動作をしているかどうかを判定することは非常に難しいため、マイコン内のソフトウェアが、制限時間内にタイマをクリアしたかどうかだけで、誤動作の有無を判断します。


S1C17M40に内蔵されているウォッチドッグタイマのブロック図 (WDT2)

S1C17M40に内蔵されているウォッチドッグタイマのブロック図 (WDT2)


ウォッチドッグタイマに内蔵された10ビットカウンタは、クロックにより常にカウントアップされ、このカウンタがオーバーフロー*1するとマイコンの誤動作と判断し、マイコンにリセットや強制的な割り込み(NMI)をかけます。マイコンのソフトウェアは、リセットや割り込みがかからないうちに、常に10ビットカウンタをクリアしなければなりません。


ソフトウェアタイマ

ハードウェア回路ではありませんが、しばしば使われるタイマです。すべてのマイコンで実現が可能です。マイコン上でプログラムが走行する際、必ず、CPUは命令を読み出し、解釈し、実行します。このCPUの命令実行時間を利用してタイマを作ります。例えば、1命令が実行する時間が、1マイクロ秒ということが判っていれば、10命令実行した直後は10マイクロ秒であり、100命令実行した直後であれば100マイクロ秒ということが判ります。通常は、指定回数分ループするソフトウェアを作成し、タイマ時間を決定します。そのため、時間を計測することは難しいですが、必要な待ち時間を設定することは容易です。但し、ソフトウェアタイマによる待ち時間中は、他ソフトウェアによる並列処理はできません。通常は、何も処理をする必要がないので、NOP(何もしない)命令を用いて、時間を作ります。
CPUの命令実行方法については、近年ではパイプライン処理*2が一般的であり、条件により各命令の実行時間が変化することが多くなりました。そのため、ソフトウェアタイマを構成する場合は、各命令の実行時間に十分注意を払う必要があります。

*1:オーバー/アンダーフロー
コンピュータや回路などにおいて、数値を表現するために用意された桁数・サイズを超えてしまう、あるいは下回ってしまうこと。


*2:パイプライン処理
コンピュータにおいて、命令が処理を行う場合は、読込、解読、実行、書込などの手順を踏む必要がある。非パイプライン処理では、これらすべての処理が完了してから、次の命令を処理することになるが、パイプライン処理では、読込、解読、実行、書込の全処理が完了するのを待たず、並列に次の命令を処理する。そのため、パイプライン処理は、非パイプライン処理に比べ、スループット(単位時間当たりの処理量)が向上する。




次のコラム:マイコンとは?意味や役割、機能、動作の仕組み、利用例をわかりやすく解説