"入力信号に特定方向のエッジである有効エッジが発生すると、その時の時刻を示す時刻情報を記憶する時刻記憶レジスタと、プログラムを実行するCPUと、を有したマイクロコンピュータであって、前記時刻記憶レジスタが前記時刻情報を記憶すると、前記CPUから出力される許可信号を受けるまでは、前記時刻記憶レジスタが前記時刻情報を更新して記憶するのを禁止する更新制御手段を備えていること、特徴とするマイクロコンピュータ。請求項1に記載のマイクロコンピュータにおいて、前記時刻記憶レジスタを、第1の時刻記憶レジスタとして備えると共に、前記入力信号は、立ち上がりエッジと立ち下がりエッジとのうちの一方である基準エッジが複数回発生する信号であり、前記第1の時刻記憶レジスタは、前記入力信号に、前記有効エッジとして、前記基準エッジとは反対方向の非基準エッジが発生すると、その時の時刻を示す時刻情報を記憶するようになっており、更に当該マイクロコンピュータは、前記入力信号に前記基準エッジが発生すると、その時の時刻を示す時刻情報を記憶する第2の時刻記憶レジスタと、前記入力信号に前記基準エッジが発生すると、割り込み要求を発生する割り込み発生手段とを備え、前記CPUは、前記割り込み要求が発生すると実行を開始する割り込み処理において、前記第1の時刻記憶レジスタに記憶されている時刻情報を読み込む第1の処理と、前記第2の時刻記憶レジスタに記憶されている時刻情報を読み込む第2の処理と、前記第2の処理で読み込んだ時刻情報の値と、当該割り込み処理を前回実行した際に前記第2の処理で読み込んでメモリに記憶しておいた時刻情報である基準エッジ前回発生時刻情報の値との差分から、前記入力信号に前記基準エッジが前回発生してから今回発生するまでの時間である1周期時間を算出する第3の処理と、前記第1の処理で読み込んだ時刻情報の値と、前記基準エッジ前回発生時刻情報の値との差分から、前記入力信号に前記基準エッジが前回発生してから前記非基準エッジが発生するまでの時間であるパルス幅時間を算出する第4の処理と、を行うと共に、前記第3の処理と前記第4の処理よりも後に、前記第2の処理で読み込んだ時刻情報を前記メモリに新たな前記基準エッジ前回発生時刻情報として更新記憶する第5の処理を行い、更に前記第1の処理よりも後に、前記更新制御手段に前記許可信号を与えて前記第1の時刻記憶レジスタが前記時刻情報を更新して記憶するのを許可する第6の処理を行うこと、を特徴とするマイクロコンピュータ。請求項2に記載のマイクロコンピュータにおいて、前記入力信号は、前記基準エッジの発生周期が一定のPWM信号であり、前記CPUは、前記割り込み処理において、前記第3の処理で算出した前記1周期時間と前記第4の処理で算出した前記パルス幅時間とから前記PWM信号のデューティ比を算出する第7の処理を行うこと、を特徴とするマイクロコンピュータ。請求項3に記載のマイクロコンピュータにおいて、前記CPUは、前記割り込み処理において、前記第3の処理で算出した前記1周期時間が所定の正常範囲内であるか否かを判定する第8の処理を行うと共に、該第8の処理により前記1周期時間が前記正常範囲内ではないと判定した場合には、前記第7の処理をスキップすること、を特徴とするマイクロコンピュータ。請求項4に記載のマイクロコンピュータにおいて、前記CPUは、前記割り込み処理において、前記第8の処理により前記1周期時間が前記正常範囲内ではないと判定した場合には、前記第5の処理もスキップすること、を特徴とするマイクロコンピュータ。ところで、上記従来のマイコンにおいて、キャプチャレジスタの値は、そのキャプチャレジスタにとっての有効エッジが発生する毎に、自動的につまり、ソフトウェアに従いCPUが行う処理とは関係なく更新される。このため、所定のモニタ開始時から、CPUがキャプチャレジスタの値を読み込む読込処理を行う時までの期間を、有効エッジのモニタ期間とすると共に、そのモニタ期間中に有効エッジが最初に発生した時の時刻情報を上記読込処理で取得したい場合に、下記の不具合が生じる。即ち、モニタ期間中に有効エッジが2回以上発生してしまうと、CPUが上記読込処理を行った時点で、キャプチャレジスタの値は、有効エッジが最初に発生した時の時刻情報ではない時刻情報に更新されてしまっていることとなり、有効エッジが最初に発生した時の時刻情報を失ってしまう有効エッジが最初に発生した時の時刻を検出することができない、という不都合が生じる。例えば、立ち上がりエッジキャプチャレジスタと立ち下がりエッジキャプチャレジスタとを備えたマイコンの前述した使用例図10に示したに関して説明すると、図11に例示するように、時刻t3でPWM信号に立ち下がりエッジが発生してから、CPUが割り込み処理を開始するまでより詳しくは、割り込み処理において立ち上がりエッジキャプチャレジスタの値を読み込むまでの、処理開始遅れ期間中の時刻t4にて、ノイズによりPWM信号に不要な余分な立ち上がりエッジが発生したとする。すると、その時刻t4でのフリーランニングタイマのカウント値C4が、立ち上がりエッジキャプチャレジスタに更新記憶されることとなり、PWM信号が前回立ち下がってから最初に立ち上がった時刻t2でのカウント値C2が失われてしまう。このため、CPUは、その時刻t2でのカウント値C2を取得することができず時刻t2を検出することができず、延いては、PWM信号のパルス幅及びデューティ比を正しく算出することができなくなる。この図11の例では、時刻t1から時刻t4までのフリーランニングタイマのカウント数=C4-C1であって、周期Tよりも長い時間を、パルス幅Wとして算出してしまうこととなる。尚、図10及び図11の例では、割り込み処理において立ち上がりエッジキャプチャレジスタの値を読み込んだ時が、立ち上がりエッジについての前回のモニタ期間の終了時であり、次回のモニタ期間の開始時モニタ開始時点でもある。本発明は、こうした問題に鑑みなされたものであり、入力信号に特定方向の有効エッジが発生すると、その時の時刻情報を記憶する時刻記憶レジスタを備えたマイコンにおいて、所定のモニタ開始時からCPUが時刻記憶レジスタの値を読み込む処理を行う時までのモニタ期間中に、有効エッジが複数回発生したとしても、その有効エッジが最初に発生した時の時刻情報をCPUが取得できるようにすること、を目的としている。請求項1のマイコンマイクロコンピュータは、入力信号に特定方向のエッジである有効エッジが発生すると、その時の時刻を示す時刻情報を記憶する時刻記憶レジスタと、プログラムを実行するCPUとを備えており、更に、更新制御手段を備えている。そして、更新制御手段は、時刻記憶レジスタが時刻情報を記憶すると、CPUから出力される許可信号を受けるまでは、時刻記憶レジスタが時刻情報を更新して記憶するのを禁止する。このマイコンでは、入力信号に有効エッジが発生して時刻記憶レジスタが時刻情報を記憶すると、CPUがソフトウェアの処理によって更新制御手段に許可信号を与えるまでは、入力信号に再び有効エッジが発生しても時刻記憶レジスタの記憶値は更新されない。よって、このマイコンによれば、所定のモニタ開始時からCPUが時刻記憶レジスタの値を読み込む処理を行う時までのモニタ期間において、有効エッジが複数回発生したとしても、有効エッジが最初に発生した時の時刻情報をCPUに取得させたい場合には、CPUがモニタ開始時に更新制御手段へ許可信号を与えるようにしておけば良い。そのようにすれば、時刻記憶レジスタは、モニタ開始時から、時刻情報を更新記憶できる状態となり、その後、入力信号に有効エッジが複数回発生したとしても、最初に有効エッジが発生した時にだけ時刻情報を更新記憶することとなる。よって、モニタ期間中に有効エッジが複数回発生したとしても、CPUは、時刻記憶レジスタの値を読み込むことにより、有効エッジが最初に発生した時の時刻情報を取得することができ、延いては、有効エッジが最初に発生した時刻を検出することができる。次に、請求項2のマイコンでは、請求項1のマイコンにおいて、前記時刻記憶レジスタを、第1の時刻記憶レジスタとして備えると共に、入力信号は、立ち上がりエッジと立ち下がりエッジとのうちの一方である基準エッジが複数回発生する信号である。そして、第1の時刻記憶レジスタは、入力信号に、有効エッジとして、基準エッジとは反対方向の非基準エッジが発生すると、その時の時刻を示す時刻情報を記憶するようになっている。更に、請求項2のマイコンは、入力信号に基準エッジが発生すると、その時の時刻を示す時刻情報を記憶する第2の時刻記憶レジスタと、入力信号に基準エッジが発生すると、割り込み要求を発生する割り込み発生手段とを備えている。そして、このマイコンにおいて、CPUは、割り込み発生手段による割り込み要求が発生すると即ち、入力信号に基準エッジが発生すると実行を開始する割り込み処理において、下記の第1~第6の処理を行う。即ち、CPUは、割り込み処理において、第1の時刻記憶レジスタに記憶されている時刻情報を読み込む第1の処理と、第2の時刻記憶レジスタに記憶されている時刻情報を読み込む第2の処理と、第2の処理で読み込んだ時刻情報の値と、当該割り込み処理を前回実行した際に第2の処理で読み込んでメモリに記憶しておいた時刻情報である基準エッジ前回発生時刻情報の値との差分から、入力信号に基準エッジが前回発生してから今回発生するまでの時間である1周期時間を算出する第3の処理と、第1の処理で読み込んだ時刻情報の値と、前記基準エッジ前回発生時刻情報の値との差分から、入力信号に基準エッジが前回発生してから非基準エッジが発生するまでの時間であるパルス幅時間を算出する第4の処理とを行う。そして、第3の処理と第4の処理よりも後に、第2の処理で読み込んだ時刻情報を前記メモリに新たな基準エッジ前回発生時刻情報として更新記憶する第5の処理を行い、更に第1の処理よりも後に、更新制御手段に許可信号を与えて第1の時刻記憶レジスタが時刻情報を更新して記憶するのを許可する第6の処理を行う。このようなマイコンによれば、基準エッジの発生に伴う割り込み処理により、入力信号の1周期時間基準エッジが前回発生してから今回発生するまでの時間と、入力信号のパルス幅時間基準エッジが前回発生してから非基準エッジが発生するまでの時間とを算出することができる。また、算出した周期とパルス幅時間から、入力信号の1周期時間に対するパルス幅時間の比を算出することもでき、基準エッジの発生周期が一定のPWM信号が入力信号であるならば、その比として、PWM信号のデューティ比を算出するこができる。そして特に、割り込み処理では、第1の時刻記憶レジスタの値時刻情報を読み込む第1の処理より後の第6の処理により、更新制御手段に許可信号を与えるため、入力信号に基準エッジが発生してから割り込み処理が開始されるまでより詳しくは、割り込み処理における第1の処理が行われるまでの間に、ノイズによって入力信号に不要な非基準エッジ即ち、第1の時刻記憶レジスタにとっての有効エッジが発生したとしても、第1の時刻記憶レジスタの値は更新されない。このため、割り込み処理における第1の処理で第1の時刻記憶レジスタの値を読み込む時に、その第1の時刻記憶レジスタには、入力信号に基準エッジが前回発生してから最初に非基準エッジが発生した時の時刻情報が記憶されていることとなる。よって、上記ノイズによる不要な非基準エッジが発生しても、割り込み処理では、入力信号に基準エッジが前回発生してから最初に非基準エッジが発生した時の時刻情報を取得することができ、誤ったパルス幅時間を算出してしまうことを回避することができる。つまり、入力信号に基準エッジが前回発生してから最初に非基準エッジが発生した時までの時間を、パルス幅時間として算出することができ、ノイズによるパルス幅時間の誤算出を回避することができる。尚、このマイコンでは、割り込み処理における第1の処理で第1の時刻記憶レジスタの値を読み込んだ時が、前回のモニタ期間の終了時であり、次回のモニタ期間の開始時モニタ開始時点にも相当するが、モニタ開始時点については、厳密には、第6の処理で更新制御手段に許可信号を与えた時となる。次に、請求項3のマイコンでは、請求項2のマイコンにおいて、入力信号は、基準エッジの発生周期が一定のPWMパルス幅変調信号である。そして、CPUは、前記割り込み処理において、第3の処理で算出した1周期時間と第4の処理で算出したパルス幅時間とからPWM信号のデューティ比を算出する第7の処理を行う。このマイコンによれば、入力信号としてのPWM信号に基準エッジが発生してから割り込み処理における第1の処理が行われるまでの間に、ノイズによってPWM信号に不要な非基準エッジが発生したとしても、誤ったデューティ比を算出してしまうことを回避することができる。次に、請求項4のマイコンでは、請求項3のマイコンにおいて、CPUは、前記割り込み処理において、第3の処理で算出した1周期時間が所定の正常範囲内であるか否かを判定する第8の処理を行うと共に、その第8の処理により1周期時間が正常範囲内ではないと判定した場合には、第7の処理をスキップするようになっている。つまり、割り込み処理では、今回算出した1周期時間が正常範囲内でなければ、今回算出した1周期時間とパルス幅時間を用いてデューティ比を算出しないようになっている。尚、正常範囲は、PWM信号の周期基準エッジの発生周期の正常許容範囲正常と考えられる許容範囲に設定しておけば良い。このマイコンによれば、PWM信号に正規の基準エッジが発生してから次の正規の基準エッジが発生するまでの間に、ノイズによる不要な基準エッジが発生して、基準エッジの発生間隔が正常範囲よりも短くなった場合には、割り込み処理における第3の処理で算出される1周期時間が正常範囲よりも短くなり、そのことが第8の処理で判定されて、第7の処理がスキップされることとなる。このため、ノイズによってPWM信号に不要な基準エッジが発生した場合基準エッジの発生間隔が正常範囲よりも短くなった場合に、誤ったデューティ比を算出してしまうことを回避することができる。次に、請求項5のマイコンでは、請求項4のマイコンにおいて、CPUは、前記割り込み処理において、第8の処理により1周期時間が前記正常範囲内ではないと判定した場合には、第5の処理もスキップするようになっている。つまり、割り込み処理では、今回算出した1周期時間が正常範囲内でなければ、デューティ比の算出だけではく、基準エッジ前回発生時刻情報の更新記憶も止めるようになっている。このマイコンによれば、PWM信号に正規の基準エッジが発生してから次の正規の基準エッジが発生するまでの間に、ノイズによる不要な基準エッジが発生した場合でも、PWM信号に次の正規の基準エッジが発生して割り込み処理が実行されれば、その回の割り込み処理により、正しい1周期時間PWM信号の周期が算出されることとなる。その回の割り込み処理における第3及び第4の処理で用いられる基準エッジ前回発生時刻情報は、ノイズによる基準エッジが発生した時の時刻情報ではなく、前回の正規の基準エッジが発生した時の時刻情報になっているからである。また、PWM信号に正規の基準エッジが発生してから次の正規の基準エッジが発生するまでの間に、ノイズによる不要な基準エッジが発生した場合には、その不要な基準エッジの直近に不要な非基準エッジも発生することとなるが、その場合でも、PWM信号に次の正規の基準エッジが発生して割り込み処理が実行されれば、その回の割り込み処理により、正しいパルス幅時間が算出されることとなり、延いては、正しいデューティ比が算出されることとなる。このことについて説明すると、まず、PWM信号に正規の基準エッジが発生してから次の正規の基準エッジが発生するまでの間に、ノイズによる不要な基準エッジ及び非基準エッジが発生するパターンとしては、下記の第1パターンと第2パターンとがある。第1パターンは、PWM信号に正規の基準エッジが発生してから正規の非基準エッジが発生するまでの期間であるパルス幅期間中に、ノイズによって、非基準エッジと基準エッジとがその順に発生するというパターンである。第2パターンは、PWM信号に正規の非基準エッジが発生してから次の正規の基準エッジが発生するまでの期間である反パルス幅期間中に、ノイズによって、基準エッジと非基準エッジとがその順に発生するというパターンである。そして、第1パターンの場合、ノイズによる非基準エッジが発生した時の時刻情報が第1の時刻記憶に記憶されてしまうが、その直後のノイズによる基準エッジに伴う割り込み処理においては、その第1の時刻記憶レジスタの値は無視されることとなる。第8の処理により1周期時間が正常範囲内ではないと判定されて、第7の処理がスキップされるからである。また、ノイズによる基準エッジに伴う割り込み処理においても、第6の処理により更新制御手段に許可信号を与えることとなる。よって、その後に正規の非基準エッジが発生すれば、その時の時刻情報が第1の時刻記憶レジスタに更新記憶される。そして、その後に正規の基準エッジが発生して、割り込み処理が実行されれば、その回の割り込み処理により、PWM信号の正しい1周期時間とパルス幅時間とが算出されることとなり、延いては、正しいデューティ比が算出されることとなる。一方、第2パターンの場合、ノイズによる基準エッジが発生した時点では、既に第1の時刻記憶レジスタには正規の非基準エッジが発生した時刻の時刻情報が記憶されており、第1の時刻記憶レジスタは更新記憶禁止状態になっている。このため、ノイズによる基準エッジが発生してから該基準エッジに伴う割り込み処理が開始されるまでより詳しくは第6の処理が行われるまでに同ノイズによる非基準エッジが発生しても、第1の時刻記憶レジスタの値が更新されない。また、第2パターンの場合にも、ノイズによる基準エッジに伴う割り込み処理においては、第8の処理により1周期時間が正常範囲内ではないと判定されて、第7の処理がスキップされる。よって、その後に正規の基準エッジが発生して、割り込み処理が実行されれば、その回の割り込み処理により、PWM信号の正しい1周期時間とパルス幅時間とが算出されることとなり、延いては、正しいデューティ比が算出されることとなる。以上のことから、請求項5のマイコンによれば、ノイズによるデューティ比誤算出の回避性能を一層向上させることができる。以下に、本発明が適用された実施形態のマイコンについて説明する。図1に示すように、本実施形態のマイコン1は、プログラムを実行するCPU3と、実行対象のプログラムが記憶されたROM5と、プログラムの一部やCPU3による演算結果等が記憶されるRAM7と、当該マイコン1への入力信号にエッジが発生した時の時刻情報を記憶する機能を有したタイマユニット9と、それらを接続するバス11と、CPU3に割込み要求信号を出力する割り込みコントローラINTC13と、エッジ検出ポート15とを備えている。エッジ検出ポート15は、当該マイコン1の特定の端子17に入力される入力信号に立ち上がりエッジローからハイへのレベル変化エッジが発生すると、立ち上がりエッジ検出信号を出力し、上記入力信号に立ち下がりエッジハイからローへのレベル変化エッジが発生すると、立ち下がりエッジ検出信号を出力する。尚、立ち上がりエッジ検出信号と立ち下がりエッジ検出信号の各々は、例えば、当該マイコン1における内部クロックの所定周期分例えば半周期分や1周期分のパルス幅を有したパルス信号である。また、タイマユニット9は、当該マイコン1における内部クロックによってカウントアップされるフリーランニングタイマ19と、立ち上がりエッジキャプチャレジスタ21と、立ち上がりエッジキャプチャモードレジスタ23と、立ち上がりエッジキャプチャイネーブルレジスタ25と、立ち上がりエッジキャプチャ制御回路27と、立ち下がりエッジキャプチャレジスタ31と、立ち下がりエッジキャプチャモードレジスタ33と、立ち下がりエッジキャプチャイネーブルレジスタ35と、立ち下がりエッジキャプチャ制御回路37と、割り込み要求信号生成部41と、割り込み要求有効エッジ設定レジスタ43とを備えている。そして、エッジ検出ポート15から出力される立ち上がりエッジ検出信号が、立ち上がりエッジキャプチャ制御回路27と割り込み要求信号生成部41とに入力され、また、エッジ検出ポート15から出力される立ち下がりエッジ検出信号が、立ち下がりエッジキャプチャ制御回路37と割り込み要求信号生成部41とに入力されるようになっている。立ち上がりエッジキャプチャレジスタ21は、フリーランニングタイマ19と同じビット数のレジスタであり、上記立ち上がりエッジ検出信号が立ち上がりエッジキャプチャ制御回路27を介して入力されると、その時のフリーランニングタイマ19のカウント値以下、タイマ値というをラッチする記憶する。そして、立ち上がりエッジキャプチャレジスタ21は、CPU3からのリードアクセスが可能である。立ち上がりエッジキャプチャモードレジスタ23は、立ち上がりエッジキャプチャ制御回路27の動作モードを設定するための1ビットのレジスタであり、CPU3によって1か0が書き込まれる。立ち上がりエッジキャプチャイネーブルレジスタ25は、立ち上がりエッジキャプチャレジスタ21がタイマ値をラッチする毎即ち、更新記憶する毎に1がセットされる1ビットのレジスタである。そして、この立ち上がりエッジキャプチャイネーブルレジスタ25の値は、CPU3によって0に書き換えることができるようになっている。立ち上がりエッジキャプチャ制御回路27は、立ち上がりエッジキャプチャモードレジスタ23の値が0である場合には、動作モードがノーマルモードとなり、立ち上がりエッジキャプチャモードレジスタ23の値が1である場合には、動作モードがワンショットモードとなる。尚、この対応関係とは逆に、立ち上がりエッジキャプチャモードレジスタ23の値は、0がワンショットモードに対応し、1がノーマルモードに対応するようになっていても良い。また、このことは、後述する立ち下がりエッジキャプチャモードレジスタ33の値についても同様である。そして、立ち上がりエッジキャプチャ制御回路27は、ノーマルモードの場合には、エッジ検出ポート15からの立ち上がりエッジ検出信号を、立ち上がりエッジキャプチャレジスタ21に、そのまま出力する。よって、立ち上がりエッジキャプチャ制御回路27の動作モードがノーマルモードに設定された場合には、立ち上がりエッジについてのタイマユニット9での処理形態がノーマルモードとなり、そのノーマルモードでは、端子17への入力信号に立ち上がりエッジが発生する毎に、立ち上がりエッジキャプチャレジスタ21がタイマ値を更新記憶することとなる。また、立ち上がりエッジキャプチャ制御回路27は、ワンショットモードの場合には、立ち上がりエッジキャプチャイネーブルレジスタ25の値が0ならば、エッジ検出ポート15からの立ち上がりエッジ検出信号を立ち上がりエッジキャプチャレジスタ21に出力するが、立ち上がりエッジキャプチャイネーブルレジスタ25の値が1ならば、立ち上がりエッジ検出信号を立ち上がりエッジキャプチャレジスタ21に出力しなくなる。このため、立ち上がりエッジキャプチャレジスタ21は、立ち上がりエッジキャプチャイネーブルレジスタ25の値が0の場合にだけ、タイマ値を更新記憶することとなる。よって、立ち上がりエッジキャプチャ制御回路27の動作モードがワンショットモードに設定された場合には、立ち上がりエッジについてのタイマユニット9での処理形態がワンショットモードとなり、そのワンショットモードでは、CPU3によって立ち上がりエッジキャプチャイネーブルレジスタ25の値が0に設定されてから、端子17への入力信号に立ち上がりエッジが最初に発生すると、立ち上がりエッジキャプチャレジスタ21がタイマ値を更新記憶するが、その更新記憶時点からCPU3によって立ち上がりエッジキャプチャイネーブルレジスタ25の値が1から0に書き換えられるまでの間は、入力信号に立ち上がりエッジが発生しても、立ち上がりエッジキャプチャレジスタ21がタイマ値を更新記憶することが、禁止されることとなる。また、立ち下がりエッジキャプチャレジスタ31、立ち下がりエッジキャプチャモードレジスタ33、立ち下がりエッジキャプチャイネーブルレジスタ35及び立ち下がりエッジキャプチャ制御回路37の各々も、上記立ち上がりエッジキャプチャレジスタ21、立ち上がりエッジキャプチャモードレジスタ23、立ち上がりエッジキャプチャイネーブルレジスタ25及び立ち上がりエッジキャプチャ制御回路27の各々と同様のものである。即ち、立ち下がりエッジキャプチャレジスタ31も、フリーランニングタイマ19と同じビット数のレジスタであり、上記立ち下がりエッジ検出信号が立ち下がりエッジキャプチャ制御回路37を介して入力されると、その時のタイマ値をラッチする記憶する。そして、立ち下がりエッジキャプチャレジスタ31も、CPU3からのリードアクセスが可能である。立ち下がりエッジキャプチャモードレジスタ33は、立ち下がりエッジキャプチャ制御回路37の動作モードを設定するための1ビットのレジスタであり、CPU3によって1か0が書き込まれる。立ち下がりエッジキャプチャイネーブルレジスタ35は、立ち下がりエッジキャプチャレジスタ31がタイマ値をラッチする毎即ち、更新記憶する毎に1がセットされる1ビットのレジスタである。そして、この立ち下がりエッジキャプチャイネーブルレジスタ35の値は、CPU3によって0に書き換えることができるようになっている。立ち下がりエッジキャプチャ制御回路37は、立ち下がりエッジキャプチャモードレジスタ33の値が0である場合には、動作モードがノーマルモードとなり、立ち下がりエッジキャプチャモードレジスタ33の値が1である場合には、動作モードがワンショットモードとなる。そして、立ち下がりエッジキャプチャ制御回路37は、ノーマルモードの場合には、エッジ検出ポート15からの立ち下がりエッジ検出信号を、立ち下がりエッジキャプチャレジスタ31に、そのまま出力する。よって、立ち下がりエッジキャプチャ制御回路37の動作モードがノーマルモードに設定された場合には、立ち下がりエッジについてのタイマユニット9での処理形態がノーマルモードとなり、そのノーマルモードでは、端子17への入力信号に立ち下がりエッジが発生する毎に、立ち下がりエッジキャプチャレジスタ31がタイマ値を更新記憶することとなる。また、立ち下がりエッジキャプチャ制御回路37は、ワンショットモードの場合には、立ち下がりエッジキャプチャイネーブルレジスタ35の値が0ならば、エッジ検出ポート15からの立ち下がりエッジ検出信号を立ち下がりエッジキャプチャレジスタ31に出力するが、立ち下がりエッジキャプチャイネーブルレジスタ35の値が1ならば、立ち下がりエッジ検出信号を立ち下がりエッジキャプチャレジスタ31に出力しなくなる。よって、立ち下がりエッジキャプチャ制御回路37の動作モードがワンショットモードに設定された場合には、立ち下がりエッジについてのタイマユニット9での処理形態がワンショットモードとなり、そのワンショットモードでは、CPU3によって立ち下がりエッジキャプチャイネーブルレジスタ35の値が0に設定されてから、端子17への入力信号に立ち下がりエッジが最初に発生すると、立ち下がりエッジキャプチャレジスタ31がタイマ値を更新記憶するが、その更新記憶時点からCPU3によって立ち下がりエッジキャプチャイネーブルレジスタ35の値が1から0に書き換えられるまでの間は、入力信号に立ち下がりエッジが発生しても、立ち下がりエッジキャプチャレジスタ31がタイマ値を更新記憶することが、禁止されることとなる。一方、タイマユニット9において、割り込み要求有効エッジ設定レジスタ43は、CPU3によってライトアクセスが可能な1ビットのレジスタである。そして、割り込み要求信号生成部41は、エッジ検出ポート15からの立ち上がりエッジ検出信号と立ち下がりエッジ検出信号とのうち、割り込み要求有効エッジ設定レジスタ43の値によって指示される方の信号が入力されると、割り込みコントローラ13へ割り込み要求信号を出力する。本実施形態では、例えば、割り込み要求信号生成部41は、割り込み要求有効エッジ設定レジスタ43の値が1の場合には、立ち上がりエッジ検出信号が入力されると割り込み要求信号を出力し、逆に、割り込み要求有効エッジ設定レジスタ43の値が0の場合には、立ち下がりエッジ検出信号が入力されると割り込み要求信号を出力する。そして、割り込み要求信号生成部41から出力される割り込み要求信号は、割り込みコントローラ13からCPU3へ、外部割り込みに対応する割り込み要求信号即ち、外部割り込み要求信号として出力される。すると、CPU3は、その外部割り込み要求信号に対応する割り込み処理即ち、外部割り込み処理を実行することとなる。つまり、割り込み要求有効エッジ設定レジスタ43は、割り込み要求の有効エッジ詳しくは、割り込み要求を発生させることとなる入力信号のエッジを任意に設定するためのレジスタであり、そのレジスタ43の値を1にすれば、立ち上がりエッジが割り込み要求の有効エッジとなり、そのレジスタ43の値を0にすれば、立ち下がりエッジが割り込み要求の有効エッジとなる。尚、割り込み要求有効エッジ設定レジスタ43を複数ビットのレジスタにして、割り込み要求信号生成部41が、立ち上がりエッジ検出信号と立ち下がりエッジ検出信号との何れが入力されても割り込み要求信号を出力するモードと、立ち上がりエッジ検出信号が入力された時にだけ割り込み要求信号を出力するモードと、立ち下がりエッジ検出信号が入力された時にだけ割り込み要求信号を出力するモードと、立ち上がりエッジ検出信号と立ち下がりエッジ検出信号との何れが入力されても割り込み要求信号を出力しないモードとの、4つのモードに切り替わるように構成しても良い。以上のことから、タイマユニット9の動作内容をまとめると、図2に示すフローチャートのようになる。尚、ここでは、端子17への入力信号に立ち上がりエッジが発生した場合を例に挙げて説明するが、入力信号に立ち下がりエッジが発生した場合にも同様の動作となる。図2に示すように、例えば、入力信号に立ち上がりエッジが発生した時に、立ち上がりエッジキャプチャモードレジスタ23の値が0であればS101:NO、立ち上がりエッジキャプチャイネーブルレジスタ25の値に拘わらず、立ち上がりエッジキャプチャレジスタ21がタイマ値を更新記憶しS102、その更新記憶が行われることに伴って、立ち上がりエッジキャプチャイネーブルレジスタ25に1がセットされるS103。また、入力信号に立ち上がりエッジが発生した時に、立ち上がりエッジキャプチャモードレジスタ23の値が1であればS101:YES、立ち上がりエッジキャプチャイネーブルレジスタ25の値が0の場合にだけS104:YES、立ち上がりエッジキャプチャレジスタ21がタイマ値を更新記憶しS102、その更新記憶が行われることに伴って、立ち上がりエッジキャプチャイネーブルレジスタ25に1がセットされるS103。このため、入力信号に立ち上がりエッジが発生した時に、立ち上がりエッジキャプチャモードレジスタ23の値が1でありS101:YES、且つ、立ち上がりエッジキャプチャイネーブルレジスタ25の値が1であればS104:NO、立ち上がりエッジキャプチャレジスタ21はタイマ値を更新記憶しない。一方、入力信号に立ち上がりエッジが発生した時に、割り込み要求有効エッジ設定レジスタ43によって、立ち上がりエッジが割り込み要求の有効エッジに設定されているならばS150:YES、割り込み要求信号生成部41が割り込みコントローラ13へ割り込み要求信号を出力するS106。逆に、立ち上がりエッジが割り込み要求の有効エッジに設定されていなければS105:NO、割り込み要求信号生成部41は割り込み要求信号を出力しない。尚、端子17への入力信号に立ち下がりエッジが発生した場合のタイマユニット9の動作は、上記図2に関する説明において、立ち上がりエッジを立ち下がりエッジと読み替え、レジスタ21をレジスタ31と読み替え、レジスタ23をレジスタ33と読み替え、レジスタ25をレジスタ35と読み替えた動作になる。次に、以上のようなマイコン1の使用例について説明する。本実施形態において、マイコン1の端子17には、立ち下がりエッジの発生周期が一定であるPWM信号が入力される。そして、マイコン1では、CPU3が、図3及び図4の処理を実行することにより、PWM信号のデューティ比を算出する。尚、以下の説明において、周期エッジとは、PWM信号のエッジのうち、該PWM信号の1周期毎に発生する方のエッジこの例では、立ち下がりエッジのことであり、非周期エッジとは、周期エッジとは反対方向のエッジこの例では、立ち上がりエッジのことである。そして、本実施形態では、PWM信号における周期エッジ立ち下がりエッジの発生間隔を、PWM信号の1周期時間以下、単に周期というとして検出すると共に、周期エッジ立ち下がりエッジが発生してから非周期エッジ立ち上がりエッジが発生するまでの時間を、パルス幅時間以下、単にパルス幅というとして検出し、その検出した周期に対するパルス幅の比を、PWM信号のデューティ比として算出する。まず、図3は、マイコン1が起動した直後にCPU3が実行する初期化処理を表すフローチャートである。図3に示すように、CPU3は、初期化処理の実行を開始すると、まずS110にて、割り込み要求有効エッジ設定レジスタ43に0を書き込むことにより、周期エッジである立ち下がりエッジを、割り込み要求の有効エッジに設定する。そして、次のS120にて、立ち上がりエッジキャプチャモードレジスタ23に1を書き込むことにより、立ち上がりエッジキャプチャ制御回路27の動作モードをワンショットモードに設定する。また、次のS130にて、立ち下がりエッジキャプチャモードレジスタ33に0を書き込むことにより、立ち下がりエッジキャプチャ制御回路37の動作モードをノーマルモードに設定する。つまり、本実施形態では、PWM信号の立ち上がりエッジについては、タイマユニット9での処理形態をワンショットモードに設定し、PWM信号の立ち下がりエッジについては、タイマユニット9での処理形態をノーマルモードに設定している。次に、S140にて、立ち上がりエッジキャプチャイネーブルレジスタ25に、初期値としての0を書き込み、続くS150にて、立ち下がりエッジキャプチャイネーブルレジスタ35にも、初期値としての0を書き込む。そして、その後、当該初期化処理を終了する。次に、図4は、CPU3が、割り込みコントローラ13からの外部割り込み要求信号即ち、割り込み要求信号生成部41からの割り込み要求信号を受けると実行する割り込み処理を表すフローチャートである。このため、図4の割り込み処理は、端子17へのPWM信号に立ち下がりエッジが発生する毎に実行される。図4に示すように、CPU3は、割り込み処理の実行を開始すると、まずS210にて、立ち下がりエッジキャプチャレジスタ31の値を読み込み、その読み込んだ値を、周期エッジ今回発生時刻としてRAM7に記憶する。尚、周期エッジ今回発生時刻とは、周期エッジが今回発生した時刻のことである。次に、S215にて、今回の当該割り込み処理が初回の処理詳しくは、当該マイコン1が起動してから最初に実行する処理であるか否かを判定する。そして、今回の当該割り込み処理が初回の処理でなければ即ち、2回目以降の処理であれば、S220に進む。S220では、立ち上がりエッジキャプチャレジスタ21の値を読み込み、その読み込んだ値を、非周期エッジ発生時刻としてRAM7に記憶する。尚、非周期エッジ派生時刻とは、非周期エッジが発生した時刻のことである。そして、次のS230にて、上記S210でRAM7に記憶した周期エッジ今回発生時刻から、RAM7に記憶されている周期エッジ前回発生時刻を引くことにより、PWM信号の周期詳しくは、PWM信号に周期エッジが前回発生してから今回発生するまでの時間を算出する。尚、周期エッジ前回発生時刻は、周期エッジが前回発生した時刻のことであり、当該割り込み処理が前回実行された際に、S210で立ち下がりエッジキャプチャレジスタ31から読み込んで、後述のS270でRAM7に記憶しておいた値である。そして、続くS240にて、上記S220でRAM7に記憶した非周期エッジ発生時刻から、周期エッジ前回発生時刻を引くことにより、PWM信号のパルス幅詳しくは、PWM信号に周期エッジが前回発生してから非周期エッジが発生するまでの時間を算出する。尚、本実施形態では、エッジの発生時刻を示す時刻情報がタイマ値であるため、S230で算出される周期の値は、実際には、周期の時間をフリーランニングタイマ19の1カウント分の時間即ち、内部クロックの1周期で割った値となり、同様に、S240で算出されるパルス幅の値は、実際には、パルス幅の時間を上記1カウント分の時間で割った値となる。次に、S250にて、上記S230で算出した周期が正常範囲内であるか否かを判定する。尚、この正常範囲は、周期の値として正常と考えられる許容範囲に設定されている。上記S250にて、周期が正常範囲内であると判定した場合には、S260に進み、S230で算出した周期と、S240で算出したパルス幅とから、PWM信号のデューティ比を算出する。具体的には、周期に対するパルス幅の比=パルス幅/周期を、デューティ比として算出する。そして、次のS270にて、周期エッジ今回発生時刻を、RAM7に、新たな周期エッジ前回発生時刻として更新記憶する。そして更に、次のS280にて、立ち上がりエッジキャプチャイネーブルレジスタ35に0を書き込むことにより、立ち上がりエッジキャプチャレジスタ21がタイマ値を更新記憶するのを許可し、その後、当該割り込み処理を終了する。また、上記S250にて、周期が正常範囲内ではないと判定した場合には、S260とS270をスキップして、S280に進み、立ち上がりエッジキャプチャイネーブルレジスタ35に0を書き込んだ後、当該割り込み処理を終了する。一方、上記S215にて、今回の当該割り込み処理が初回の処理であると判定した場合には、そのままS270に移行する。つまり、初回の割り込み処理では、周期とデューティ比を算出することができないため、次回の割り込み処理に備えるために、立ち下がりエッジキャプチャレジスタ31の値を周期エッジ前回発生時刻としてRAM7に記憶する処理S210及びS270と、立ち上がりエッジキャプチャイネーブルレジスタ35に0を書き込む処理S280だけを行う。次に、マイコン1の作用及び効果について、図5~図9を用い説明する。まず図5は、PWM信号にノイズが乗らない場合の動作を表すタイムチャートである。図5に示すように、マイコン1では、PWM信号に立ち下がりエッジが発生する毎に、CPU3が図4の割り込み処理を実行する。そして、前述したように、PWM信号の立ち下がりエッジについては、タイマユニット9での処理形態をノーマルモードに設定している図3のS130。また、PWM信号の立ち上がりエッジについては、タイマユニット9での処理形態をワンショットモードに設定している図3のS120が、CPU3は、割り込み処理において、立ち上がりエッジキャプチャイネーブルレジスタ35に0を書き込むようになっている図4のS280。このため、図5に示すように、PWM信号に、時刻t1で立ち下がりエッジが発生し、時刻t2で立ち上がりエッジが発生し、時刻t3で立ち下がりエッジが発生したとすると、時刻t1では、その時刻t1でのタイマ値C1が立ち下がりエッジキャプチャレジスタ31に記憶され、時刻t2では、その時刻t2でのタイマ値C2が立ち上がりエッジキャプチャレジスタ21に記憶され、時刻t3では、その時刻t3でのタイマ値C3が立ち下がりエッジキャプチャレジスタ31に記憶される。そして、時刻t3の立ち下がりエッジに伴う割り込み処理では、時刻t1から時刻t3までの時間詳しくは、時刻t1から時刻t3までのフリーランニングタイマのカウント数=C3-C1を周期Tとして算出するS230と共に、時刻t1から時刻t2までの時間詳しくは、時刻t1から時刻t2までのフリーランニングタイマのカウント数=C2-C1をパルス幅Wとして算出しS240、更に、算出した周期Tに対するパルス幅Wの比=W/Tを、デューティ比として算出するS260こととなる。次に、図6は、PWM信号にノイズが乗った場合の動作を表す第1のタイムチャートであり、詳しくは、PWM信号に正規の立ち下がりエッジが発生してからCPU3が割り込み処理を開始するまでの処理開始遅れ期間中に、PWM信号にノイズによる不要な立ち上がりエッジが発生した場合の動作を表すタイムチャートである。尚、正規の立ち下がりエッジとは、発生間隔がPWM信号の周期として正常な立ち下がりエッジであり、換言すれば、発生間隔が図4のS250での判定に用いられる正常範囲に入っている立ち下がりエッジである。図6に示すように、図5と同じ時刻t3でPWM信号に正規の立ち下がりエッジが発生してから、CPU3が割り込み処理時刻t3の立ち下がりエッジに伴う割り込み処理を開始するまでの処理開始遅れ期間中の時刻t4にて、PWM信号にノイズによる不要な立ち上がりエッジが発生したとする。この場合、時刻t3よりも前の時刻t2にて、PWM信号に正規の立ち下がりエッジ後の最初の立ち上がりエッジが発生しており、その時刻t2で、立ち上がりエッジキャプチャレジスタ21がタイマ値C2を記憶したことにより、立ち上がりエッジキャプチャイネーブルレジスタ35の値が1になっている。そして、立ち上がりエッジキャプチャイネーブルレジスタ35の値が1になっている状態は、時刻t3の立ち下がりエッジに伴う割り込み処理図6において、時刻t3より後の最初の割り込み処理におけるS280が実行されるまで継続する。このため、時刻t4でPWM信号に立ち上がりエッジが発生しても、立ち上がりエッジキャプチャレジスタ21の値は、更新されず、PWM信号に正規の立ち下がりエッジが前回発生してから最初に立ち上がりエッジが発生した時刻t2でのタイマ値C2のままになる。よって、時刻t3の立ち下がりエッジに伴う割り込み処理において、S220では、立ち上がりエッジキャプチャレジスタ21から、時刻t4でのタイマ値ではなく、時刻t2でのタイマ値C2を取得することができ、その結果、S240で誤ったパルス幅を算出してしまうことを回避することができる。つまり、時刻t3の立ち下がりエッジに伴う割り込み処理では、図5の場合と同様に、立ち下がりエッジが前回発生してから最初に立ち上がりエッジが発生した時までの時間時刻t1から時刻t2までのフリーランニングタイマのカウント数=C2-C1をパルス幅Wとして算出することができ、ノイズによるパルス幅の誤算出を回避することができる。そして、このため、デューティ比も正しく算出することができる。尚、図6の例では、時刻t4の後の時刻t5にて、PWM信号にノイズによる立ち下がりエッジが発生しているが、その時刻t5は、時刻t3の立ち下がりエッジに伴う割り込み処理において、立ち下がりエッジキャプチャレジスタ31の値を読み込む処理S210が行われた後である。このため、時刻t3の立ち下がりエッジに伴う割り込み処理において、S210では、立ち下がりエッジキャプチャレジスタ31から、時刻t3でのタイマ値C3を読み込むこととなる。また、図6では、時刻t1から時刻t3までの時間をT1と記載している。そして、図6の例において、時刻t3の立ち下がりエッジに伴う割り込み処理のS230では、その時間T1に相当するフリーランニングタイマのカウント数=C3-C1が、周期として算出され、その回の割り込み処理のS260では、パルス幅W/時間T1の値が、デューティ比として算出されることとなる。次に、図7は、PWM信号にノイズが乗った場合の動作を表す第2のタイムチャートであり、詳しくは、PWM信号に正規の立ち下がりエッジが発生してからCPU3が割り込み処理を開始するまでの処理開始遅れ期間中に、PWM信号にノイズによる不要な立ち上がりエッジと立ち下がりエッジとの両方が発生し、更に、前回の正規の立ち下がりエッジから不要な立ち下がりエッジまでの間隔図7におけるT1も、PWM信号の周期として正常と考えられる許容範囲内であった場合の動作を表すタイムチャートである。図7に示すように、図5と同じ時刻t3でPWM信号に正規の立ち下がりエッジが発生してから、CPU3が割り込み処理時刻t3の立ち下がりエッジに伴う割り込み処理を開始するまでの処理開始遅れ期間中の時刻t4にて、PWM信号にノイズによる不要な立ち上がりエッジが発生すると共に、その処理開始遅れ期間中の時刻t5にて、PWM信号にノイズによる不要な立ち下がりエッジが発生し、更に、正規の立ち下がりエッジが前回発生した時刻t1から時刻t5までの時間T1も、PWM信号の周期として正常と考えられる許容範囲内であったとする。この場合も、図6の場合と同様に、時刻t3よりも前の時刻t2にて、PWM信号に正規の立ち下がりエッジ後の最初の立ち上がりエッジが発生しており、その時刻t2で、立ち上がりエッジキャプチャレジスタ21がタイマ値C2を記憶したことにより、立ち上がりエッジキャプチャイネーブルレジスタ35の値が1になっている。そして、立ち上がりエッジキャプチャイネーブルレジスタ35の値が1になっている状態は、時刻t3の立ち下がりエッジに伴う割り込み処理図7において、時刻t3より後の最初の割り込み処理におけるS280が実行されるまで継続する。このため、時刻t4でPWM信号に立ち上がりエッジが発生しても、立ち上がりエッジキャプチャレジスタ21の値は、更新されず、PWM信号に正規の立ち下がりエッジが前回発生してから最初に立ち上がりエッジが発生した時刻t2でのタイマ値C2のままになる。よって、時刻t3の立ち下がりエッジに伴う割り込み処理において、S220では、立ち上がりエッジキャプチャレジスタ21から、時刻t4でのタイマ値ではなく、時刻t2でのタイマ値C2を取得することができ、その結果、S240では、時刻t1から時刻t2までのフリーランニングタイマのカウント数=C2-C1をパルス幅Wとして算出することができる。このため、ノイズによるパルス幅の誤算出を回避することができる。また、立ち下がりエッジについては、タイマユニット9での処理形態をノーマルモードに設定しているため、時刻t5で立ち下がりエッジが発生すると、立ち上がりエッジキャプチャレジスタ21の値が、時刻t3でのタイマ値C3から、時刻t5でのタイマ値C5に更新される。このため、時刻t3の立ち下がりエッジに伴う割り込み処理において、S210では、立ち下がりエッジキャプチャレジスタ31から、時刻t5でのタイマ値C5を取得することとなり、S230では、時刻t1から時刻t5までの時間T1に相当するフリーランニングタイマのカウント数=C5-C1を周期として算出することとなる。そして、この例では、時刻t3から時刻t5までの時間が微小であって、時刻t1から時刻t5までの時間T1もPWM信号の周期の許容範囲内であるため、時刻t3の立ち下がりエッジに伴う割り込み処理において、S250では、S230で算出した周期が正常範囲内であると判定することとなり、S260では、パルス幅W/時間T1の値であって、正しいと見なすことのできるデューティ比が算出されることとなる。尚、図7に関する上記説明では、時刻t3の立ち下がりエッジが正規の立ち下がりエッジで、時刻t5の立ち下がりエッジがノイズによる不要な立ち下がりエッジであると説明したが、それとは逆に、時刻t5の立ち下がりエッジが正規の立ち下がりエッジで、時刻t3の立ち下がりエッジがノイズによる不要な立ち下がりエッジであると見なしても、時刻t3の立ち下がりエッジに伴う割り込み処理による算出結果は実質的に同じになる。つまり、図7の例において、時刻t1から時刻t3までの時間と、時刻t1から時刻t5までの時間とが、両方共にPWM信号の周期として許容範囲内であれば、時刻t3と時刻t5のどちらの立ち下がりエッジが正規の立ち下がりエッジであっても処理結果は実質的に変わらない。次に、図8は、PWM信号にノイズが乗った場合の動作を表す第3のタイムチャートであり、詳しくは、PWM信号に正規の立ち下がりエッジが発生してから正規の立ち上がりエッジが発生するまでのパルス幅期間本実施形態ではローレベル期間中に、ノイズによって、立ち上がりエッジと立ち下がりエッジとがその順に発生した場合の動作を表すタイムチャートである。図8に示すように、図5と同じ時刻t1から時刻t2までのパルス幅期間ローレベル期間において、CPU3が時刻t1の立ち下がりエッジに伴う割り込み処理図8において、時刻t1より後の最初の割り込み処理を行った後の時刻taで、PWM信号にノイズによる不要な立ち上がりエッジが発生すると共に、その直後の時刻tbで、PWM信号にノイズによる不要な立ち下がりエッジが発生したとする。この場合、時刻taの前に、立ち上がりエッジキャプチャイネーブルレジスタ25の値が0に戻されているため、時刻taでノイズによる立ち上がりエッジが発生すると、その時刻taでのタイマ値Caが、立ち上がりエッジキャプチャレジスタ21に記憶される。そして、時刻tbでノイズによる立ち下がりエッジが発生すると、その時刻tbでのタイマ値Cbが、立ち下がりエッジキャプチャレジスタ31に記憶される。しかし、時刻tbの立ち下がりエッジに伴う割り込み処理においては、両キャプチャレジスタ21,31から読み込んだ値が無効になり、誤ったデューティ比を算出してしまうことが防止される。その回の割り込み処理において、S250では、S230で算出した周期即ち、図8において、時刻t1から時刻tbまでの時間T1に相当する値が正常範囲内ではないと判定することとなり、S260とS270がスキップされるからである。また、時刻tbの立ち下がりエッジに伴う割り込み処理においても、S280により、立ち上がりエッジキャプチャイネーブルレジスタ25の値を0にするため、その後の時刻t2にて、PWM信号に正規の立ち上がりエッジが発生すると、その時刻t2でのタイマ値C2が立ち上がりエッジキャプチャレジスタ21に更新記憶される。そして、その後の時刻t3にて、PWM信号に正規の立ち下がりエッジが発生すると、その時刻t3でのタイマ値C3が立ち下がりエッジキャプチャレジスタ31に更新記憶される。更に、時刻t3の立ち下がりエッジに伴う割り込み処理が開始される時点において、RAM7内の周期エッジ前回発生時刻は、ノイズによる立ち下がりエッジが発生した時刻tbでのタイマ値Cbではなく、前回の正規の立ち下がりエッジが発生した時刻t1でのタイマ値C1になっている。時刻tbの立ち下がりエッジに伴う割り込み処理においては、デューティ比を算出するS260だけでなく、周期エッジ前回発生時刻を更新するS270もスキップされているからである。よって、時刻t3の立ち下がりエッジに伴う割り込み処理が実行されれば、その回の割り込み処理により、正しい周期即ち、図8において、時刻t1から時刻tbまでの時間T1と、時刻tbから時刻t3までの時間T2とを加算した時間=T1T2に相当する値と、正しいパルス幅即ち、図8において、時刻t1から時刻t2までの時間Wに相当する値とが算出され、延いては、正しいデューティ比図8におけるW/T1T2が算出されることとなる。次に、図9は、PWM信号にノイズが乗った場合の動作を表す第4のタイムチャートであり、詳しくは、PWM信号に正規の立ち上がりエッジが発生してから次の正規の立ち下がりエッジが発生するまでの反パルス幅期間本実施形態ではハイレベル期間中に、ノイズによって、立ち下がりエッジと立ち上がりエッジとがその順に発生した場合の動作を表すタイムチャートである。図9に示すように、図5と同じ時刻t2から時刻t3までの反パルス幅期間ハイレベル期間において、時刻tcでPWM信号にノイズによる不要な立ち下がりエッジが発生し、その時刻tcの立ち下がりエッジに伴う割り込み処理が開始されるよりも前の時刻tdで、PWM信号にノイズによる不要な立ち上がりエッジが発生したとする。この場合、時刻tcでは、既に、立ち上がりエッジキャプチャレジスタ21には正規の立ち上がりエッジが発生した時刻t2でのタイマ値C2が記憶されていると共に、立ち上がりエッジキャプチャイネーブルレジスタ25の値が1になっている。このため、時刻tcの立ち下がりエッジに伴う割り込み処理が開始される前の時刻tdでノイズによる立ち上がりエッジが発生しても、立ち上がりエッジキャプチャレジスタ21の値は更新されずにタイマ値C2のままである。また、時刻tcでノイズによる立ち下がりエッジが発生すると、その時刻tcでのタイマ値Ccが、立ち下がりエッジキャプチャレジスタ31に更新記憶されるが、その時刻tcの立ち下がりエッジに伴う割り込み処理において、S250では、S230で算出した周期即ち、図9において、時刻t1から時刻tcまでの時間T1に相当する値が正常範囲内ではないと判定することとなり、S260とS270がスキップされる。よって、両キャプチャレジスタ21,31から読み込んだ値が無効になり、誤ったデューティ比を算出してしまうことが防止される。そして、その後の時刻t3にて、PWM信号に正規の立ち下がりエッジが発生すると、その時刻t3でのタイマ値C3が立ち下がりエッジキャプチャレジスタ31に更新記憶される。また、その時点において、立ち上がりエッジキャプチャレジスタ21の値は、時刻t2でのタイマ値C2のままになっている。更に、時刻t3の立ち下がりエッジに伴う割り込み処理が開始される時点において、RAM7内の周期エッジ前回発生時刻は、ノイズによる立ち下がりエッジが発生した時刻tcでのタイマ値Ccではなく、前回の正規の立ち下がりエッジが発生した時刻t1でのタイマ値C1になっている。前述したように、時刻tcの立ち下がりエッジに伴う割り込み処理においては、S270がスキップされているからである。よって、時刻t3の立ち下がりエッジに伴う割り込み処理が実行されれば、その回の割り込み処理により、正しい周期即ち、図9において、時刻t1から時刻tcまでの時間T1と、時刻tcから時刻t3までの時間T2とを加算した時間=T1T2に相当する値と、正しいパルス幅即ち、図9において、時刻t1から時刻t2までの時間Wに相当する値とが算出され、延いては、正しいデューティ比図9におけるW/T1T2が算出されることとなる。一方、前述した図6の例において、時刻t5の立ち下がりエッジに伴う割り込み処理図6において一番右側に示している割り込み処理では、S210にて、立ち下がりエッジキャプチャレジスタ31から時刻t5でのタイマ値C5を読み込むこととなり、S230では、時刻t3から時刻t5までの時間T2に相当するフリーランニングタイマのカウント数=C5-C3を、周期として算出することとなるが、S250では、そのS230で算出した周期時間T2に相当する値が正常範囲内ではないと判定することとなり、S260とS270がスキップされる。つまり、図6の例において、時刻t5の立ち下がりエッジに伴う割り込み処理では、図8における時刻tbの立ち下がりエッジに伴う割り込み処理と同様の処理結果となる。よって、その後、PWM信号に正規の立ち上がりエッジが発生してから正規の立ち下がりエッジが発生すれば、その正規の立ち下がりエッジに伴う割り込み処理により、正しい周期、パルス幅及びデューティ比が算出されることとなる。また同様に、前述した図7の例においても、時刻t5の立ち下がりエッジに伴う割り込み処理図7において一番右側に示している割り込み処理では、S210にて、立ち下がりエッジキャプチャレジスタ31から時刻t5でのタイマ値C5を読み込むこととなる。そして、その回の割り込み処理において、S230で周期を算出する際には、周期エッジ前回発生時刻の値が、前回の割り込み処理即ち、時刻t3の立ち下がりエッジに伴う割り込み処理のS270により時刻t5でのタイマ値C5に設定されているため、0=C5-C5を周期として算出することとなり、S250では、そのS230で算出した周期=0が正常範囲内ではないと判定することとなる。よって、S260とS270がスキップされる。このため、図7の例において、時刻t5の立ち下がりエッジに伴う割り込み処理でも、図8における時刻tbの立ち下がりエッジに伴う割り込み処理と同様の処理結果となる。よって、その後、PWM信号に正規の立ち上がりエッジが発生してから正規の立ち下がりエッジが発生すれば、その正規の立ち下がりエッジに伴う割り込み処理により、正しい周期、パルス幅及びデューティ比が算出されることとなる。以上のようなマイコン1によれば、立ち上がりエッジキャプチャモードレジスタ23に1を書き込めば、入力信号の立ち上がりエッジについて、タイマユニット9での処理形態をワンショットモードに設定することができ、また、立ち下がりエッジキャプチャモードレジスタ33に1を書き込めば、入力信号の立ち下がりエッジについて、タイマユニット9での処理形態をワンショットモードに設定することができる。そして、例えば、立ち上がりエッジについてワンショットモードに設定すれば、任意のモニタ開始時からCPU3が立ち上がりエッジキャプチャレジスタ21の値を読み込む処理を行う時までのモニタ期間において、入力信号に立ち上がりエッジが複数回発生したとしても、立ち上がりエッジが最初に発生した時の時刻情報としてのタイマ値をCPU3に取得させることができる。そして更に、CPU3が図3の初期化処理と図4の割り込み処理を行うことで、PWM信号の周期、パルス幅及びデューティ比を算出することができると共に、PWM信号にノイズが乗った場合に誤った算出結果を出してしてしまうことを回避することができる。尚、前述したマイコン1の使用例PWM信号のデューティ比を算出するための使用例では、図4の割り込み処理におけるS220で立ち上がりエッジキャプチャレジスタ21の値を読み込んだ時が、立ち上がりエッジについての前回のモニタ期間の終了時であり、次回のモニタ期間の開始時モニタ開始時点にも相当するが、モニタ開始時点については、厳密には、S280で立ち上がりエッジキャプチャイネーブルレジスタ25に0を書き込んだ時となる。一方、上記実施形態のマイコン1では、立ち上がりエッジキャプチャレジスタ21と、立ち下がりエッジキャプチャレジスタ31とが、時刻記憶レジスタの一例に相当している。そして、立ち上がりエッジを有効エッジとする立ち上がりエッジキャプチャレジスタ21については、動作モードがワンショットモードに設定された立ち上がりエッジキャプチャ制御回路27と、立ち上がりエッジキャプチャイネーブルレジスタ25とが、更新制御手段の一例に相当しており、CPU3が立ち上がりエッジキャプチャイネーブルレジスタ25に0を書き込む信号が、許可信号の一例に相当している。同様に、立ち下がりエッジを有効エッジとする立ち下がりエッジキャプチャレジスタ31については、動作モードがワンショットモードに設定された立ち下がりエッジキャプチャ制御回路37と、立ち下がりエッジキャプチャイネーブルレジスタ35とが、更新制御手段の一例に相当しており、CPU3が立ち下がりエッジキャプチャイネーブルレジスタ35に0を書き込む信号が、許可信号の一例に相当している。また、マイコン1の使用例においては、PMW信号の立ち下がりエッジ周期エッジが、基準エッジの一例に相当し、PMW信号の立ち上がりエッジ非周期エッジが、非基準エッジの一例に相当し、立ち上がりエッジキャプチャレジスタ21が、第1の時刻記憶レジスタの一例に相当し、立ち下がりエッジキャプチャレジスタ31が、第2の時刻記憶レジスタの一例に相当し、割り込み要求信号生成部41が、割り込み発生手段の一例に相当し、RAM7が、メモリの一例に相当している。そして、図4のS220が、第1の処理の一例に相当し、図4のS210が、第2の処理の一例に相当し、図4のS230が、第3の処理の一例に相当し、周期エッジ前回発生時刻が、基準エッジ前回発生時刻情報の一例に相当し、図4のS240が、第4の処理の一例に相当し、図4のS270が、第5の処理の一例に相当し、図4のS280が、第6の処理の一例に相当し、図4のS260が、第7の処理の一例に相当し、図4のS250が、第8の処理の一例に相当している。以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。例えば、変形例として、図3のS130では、立ち下がりエッジキャプチャモードレジスタ33に1を書き込むことにより、立ち下がりエッジについても、タイマユニット9での処理形態をワンショットモードに設定し即ち、立ち下がりエッジキャプチャ制御回路37の動作モードをワンショットモードに設定し、図4のS280では、立ち上がりエッジキャプチャイネーブルレジスタ35だけでなく、立ち下がりエッジキャプチャイネーブルレジスタ25にも0を書き込むように変形しても良い。そして、このように変形しても、図6~図9を用いて説明した効果と同じ効果が得られる。また、立ち上がりエッジと立ち下がりエッジとの各々について、タイマユニット9での処理形態は、ワンショットモードに固定されていても良い。また、CPU3に図4の割り込み処理を実行させてPWM信号のデューティ比を算出する使用例の場合、立ち上がりエッジについては、タイマユニット9での処理形態がワンショットモードに固定されており、立ち下がりエッジについては、タイマユニット9での処理形態がノーマルモードに固定されていても良い。また逆に、PWM信号の周期エッジが立ち上がりエッジであるならば、立ち上がりエッジについては、タイマユニット9での処理形態がノーマルモードに固定されており、立ち下がりエッジについては、タイマユニット9での処理形態がワンショットモードに固定されていても良い。"