(57)【特許請求の範囲】
【請求項１】
所定の計数容量からなるカウンタと、
所定の割り込み信号の発生時刻を前記カウンタの計数値として記憶する記憶手段と、
前記カウンタの周回毎に起動され、同カウンタの周回回数を数える第１の割り込み処理、及び、前記割り込み信号の発生時に起動され、前記記憶手段による記憶されたカウンタの計数値及び前記周回回数から前後する割り込み信号の時間間隔を演算する第２の割り込み処理を実行する演算手段と、を有し、
前記第２の割り込み処理の割り込み優先順位を前記第１の割り込み処理の同順位よりも高くすると共に、所定の割り込み禁止期間では前記第１，第２の割り込み処理を待たせておくようにした時間計測装置において、
前記割り込み禁止期間内に、前記第１の割り込み処理の割り込み要求と前記第２の割り込み処理の割り込み要求とが生じた場合、両割り込み要求のいずれが先に発生したかに応じて前記カウンタの周回回数の修正の要否を判定し、修正要であれば該修正した周回回数を用いて前記割り込み信号の時間間隔を演算することを特徴とする時間計測装置。
【請求項２】
請求項１に記載の時間計測装置において、
前記割り込み禁止期間内に、前記第１の割り込み処理の割り込み要求と前記第２の割り込み処理の割り込み要求とが生じた場合、前記第１の割り込み処理の割り込み要求が前記第２の割り込み処理の割り込み要求よりも先に発生していれば、前記第２の割り込み処理では、その時までの前記カウンタの周回回数を「１」だけ加算すると共に、当該加算値を用いて前記割り込み信号の時間間隔を演算するようにした時間計測装置。
【請求項３】
請求項１に記載の時間計測装置において、
前記割り込み禁止期間内に、前記第１の割り込み処理の割り込み要求と前記第２の割り込み処理の割り込み要求とが生じた場合、前記第１の割り込み処理の割り込み要求が前記第２の割り込み処理の割り込み要求よりも先に発生していれば、前記第２の割り込み処理では、その時までの前記カウンタの周回回数を「１」だけ加算して当該加算値を用いて前記割り込み信号の時間間隔を演算し、その直後の第１の割り込み処理では、当該処理による前記カウンタの周回回数カウント処理を１回分無効にするようにした時間計測装置。
【請求項４】
請求項１に記載の時間計測装置において、
前記割り込み禁止期間内に、前記第１の割り込み処理の割り込み要求と前記第２の割り込み処理の割り込み要求とが生じた場合、前記第１の割り込み処理の割り込み要求が前記第２の割り込み処理の割り込み要求よりも先に発生していれば、前記第２の割り込み処理では、その時までの前記カウンタの周回回数を「１」だけ加算して当該加算値を用いて前記割り込み信号の時間間隔を演算し、さらに、次回の時間間隔の演算に備えてその時の前記カウンタの周回回数を「１」加算した値に更新及び記憶しておくようにした時間計測装置。
【請求項５】
前記割り込み禁止期間や前記第１，第２の割り込み処理の所要時間に対して前記カウンタの計数容量が十分に長い場合において、
前記カウンタの中心値を基準の判定値として、前記第１，第２の割り込み処理のいずれの割り込み要求が先に発生したかを判定する請求項１〜４のいずれかに記載の時間計測装置。
【請求項６】
前記第２の割り込み処理の実行時において、前記カウンタの周回回数を所定値にリセットするようにした請求項１〜５のいずれかに記載の時間計測装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えばエンジンの所定クランク角毎に発生する割り込み信号の時間間隔を計測するための時間計測装置に関するものである。
【０００２】
【従来の技術】
従来の時間計測装置として、一般的なエンジン回転数演算装置に具体化した事例を以下に説明する。図１４は回転数演算装置の概略図であり、所定クランク角毎に発生するＮＥ信号（割り込み信号）は、エンジン回転数を算出するためのＮＥ割り込み処理の割り込み要求としてＣＰＵ５０に入力される。ＮＥ信号の割り込み時刻は、その時のフリーランニングカウンタ５１のカウント値（ＮＥ割込カウント値Ｔ（ｉ））としてキャプチャレジスタ５２に捕捉される。フリーランニングカウンタ５１は、例えば一定時間毎（例えば１μｓ毎）にカウントアップされる２バイトのタイマカウンタにて構成される。即ち、フリーランニングカウンタ５１は「００００Ｈ」〜「ＦＦＦＦＨ」の間でカウント値を変化させるタイマとして機能する。
【０００３】
かかる場合、ＣＰＵ５０は、前後する２つのＮＥ信号間におけるフリーランニングカウンタ５１のオーバーフロー回数（周回回数）とキャプチャレジスタ５２に記憶されたカウント値とを用いてエンジン回転数を算出する。以下、ＣＰＵ５０によるエンジン回転数の算出手順を説明する。なお、ＣＰＵ５０は、前記図１４のＮＥ信号をトリガとしてＮＥ割り込み処理（図１５）を実行すると共に、フリーランニングカウンタ５１のオーバーフローをトリガとして同オーバーフロー回数を計数するオーバーフロー割り込み処理（図示略）を実行する。この場合、通常はＮＥ割り込み処理の割り込み優先順位がオーバーフロー割り込み処理の同順位よりも高くなっている。
【０００４】
図１５において、ＣＰＵ５０は、先ずステップ４０１で前回のＮＥ割込カウント値Ｔ（ｉ）を前回値Ｔ（ｉ−１）とし、続くステップ４０２でキャプチャレジスタ５２にラッチされているカウント値を今回のＮＥ割込カウント値Ｔ（ｉ）として記憶する。また、ＣＰＵ５０は、ステップ４０３でフリーランニングカウンタ５１のオーバーフロー回数をメモリＭＯＦに記憶し、続くステップ４０４でオーバーフロー回数を「００Ｈ」にクリアする。
【０００５】
その後、ＣＰＵ５０は、ステップ４０５で次式を用いて前回のＮＥ信号と今回のＮＥ信号との間の所要時間ＴＩＭＥを算出する。
ＴＩＭＥ＝Ｔ（ｉ）−Ｔ（ｉ−１）＋ＭＯＦ・ＴＡ
上式において、「ＭＯＦ」は前記ステップ４０３で記憶したオーバーフロー回数であり、「ＴＡ」は、フリーランニングカウンタ５１が１周するのに要する周回時間（「００００Ｈ」〜「ＦＦＦＦＨ」までの所要時間）である。
【０００６】
さらに、ＣＰＵ５０は、ステップ４０６で前記所要時間ＴＩＭＥを用いてエンジン回転数を算出し、その後、本処理を終了する。
【０００７】
【発明が解決しようとする課題】
ところが、上記従来の回転数演算装置においては下記の問題を生じる。以下、従来技術の問題点を図１６のタイムチャートを用いて説明する。なお、図１６はエンジン回転数の演算手順を時間の経過に従って示すタイムチャートであり、図中のＮＥ割り込み処理は前述の図１５の処理に相当し、オーバーフロー割り込み処理（Ｏ／Ｆ割り込み処理）はフリーランニングカウンタ５１のオーバーフロー毎に当該オーバーフロー回数（Ｏ／Ｆ回数）を「１」ずつカウントアップさせる処理に相当する。また、図中の時間ｔ７０，ｔ７１，ｔ７２はそれぞれＮＥ割り込みのタイミングを示す。
【０００８】
要するに、図１６の割り込み禁止期間（図の斜線区域）において、先にオーバーフロー割り込み処理の割り込み要求が生じ、その後にＮＥ割り込み処理の割り込み要求が発生すると、時間ｔ７１，ｔ７２のＮＥ割り込み要求に伴い算出されるエンジン回転数に誤差が生じる。つまり、時間ｔ７０〜ｔ７１の期間では、フリーランニングカウンタ５１のオーバーフロー回数が「３回」であるのに、時間ｔ７１のＮＥ割り込み要求に伴う回転数演算時にはオーバーフロー回数が「０２Ｈ」（２回）として扱われ、時間ｔ７０〜ｔ７１の所要時間ＴＩＭＥは本来の値よりも小さい値で算出されてしまう。また、時間ｔ７１〜ｔ７２の期間では、フリーランニングカウンタ５１のオーバーフロー回数が「２回」であるのに、時間ｔ７２のＮＥ割り込みに伴う回転数演算時にはオーバーフロー回数が「０３Ｈ」（３回）として扱われ、時間ｔ７１〜ｔ７２の所要時間ＴＩＭＥは本来の値よりも大きい値で算出されてしまう。
【０００９】
以上のように、所定の割り込み禁止期間において、ＮＥ割り込み処理の割り込み要求とオーバーフロー割り込み処理の割り込み供給とが重複した場合に、時間計測に誤差が生じ、結果として上記の如くエンジン回転数の算出精度が悪化するという問題が生じる。
【００１０】
この発明は、上記問題に着目してなされたものであって、その目的とするところは、前後する２つの割り込み信号の時間間隔を常に正確に計測することができる時間計測装置を提供することにある。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載の時間計測装置は、所定の計数容量からなるカウンタと、所定の割り込み信号の発生時刻を前記カウンタの計数値として記憶する記憶手段と、第１，第２の割り込み処理を実行する演算手段とを備える。この場合、第１の割り込み処理は、カウンタの周回毎に起動され、同カウンタの周回回数（例えば、オーバーフロー回数）を数える処理であり、第２の割り込み処理は、割り込み信号の発生時に起動され、前記記憶手段による記憶されたカウンタの計数値及び周回回数から前後する割り込み信号の時間間隔を演算する処理である。なお、第２の割り込み処理の割り込み優先順位は、第１の割り込み処理の同順位よりも高く、所定の割り込み禁止期間では当該割り込み禁止が解除されるまで第１，第２の割り込み処理が待たされるようになっている。
【００１２】
そして、かかる装置においては、割り込み禁止期間内に、第１の割り込み処理の割り込み要求と第２の割り込み処理の割り込み要求とが生じた場合、両割り込み要求のいずれが先に発生したかに応じてカウンタの周回回数の修正の要否が判定され、修正要であれば該修正した周回回数を用いて割り込み信号の時間間隔が演算される。
【００１３】
要するに、割り込み禁止期間内に第１，第２の割り込み処理の割り込み要求が重複すると、割り込み禁止期間の解除後には、いずれが先かにかかわらず第２の割り込み処理が優先的に実行される。このとき、本来先に実施されるべき第１の割り込み処理が後に実施される場合が生じ、かかる場合、従来技術によれば割り込み信号による時間計測値が不正確なものとなる。つまり、割り込み信号の時間間隔は、カウンタによる当該信号の割り込み時刻の差と同カウンタの周回回数とにより算出されるため、前記の場合には従来技術で記載したように周回回数が誤った値となり、結果として時間計測値も誤った値となってしまう。これに対して本発明では、両割り込み要求のいずれが先に発生したかに応じて周回回数を修正するため、周回回数が誤って数えられることがなくなり、常に正確な時間計測が可能となる。
【００１４】
特に、請求項２に記載の発明では、前記割り込み禁止期間内に、前記第１の割り込み処理の割り込み要求と前記第２の割り込み処理の割り込み要求とが生じた場合、前記第１の割り込み処理の割り込み要求が前記第２の割り込み処理の割り込み要求よりも先に発生していれば、第２の割り込み処理では、その時までの前記カウンタの周回回数を「１」だけ加算すると共に、当該加算値を用いて前記割り込み信号の時間間隔を演算するようにしている。
【００１５】
つまり、上記の如く第１，第２の割り込み要求が重複し、且つ第１の割り込み処理の割り込み要求が第２の割り込み処理の割り込み要求よりも先に発生すると、周回回数が１回分少ない値になる。しかし、上記構成によれば、周回回数を「１」だけ加算することにより同回数の過少分が修正できる。こうして、周回回数の修正が必要な場合に適切な修正処理が実施でき、前後する２つの割り込み信号の時間間隔を常に正確に計測することができる。
【００１６】
また、請求項３に記載の発明では、前記割り込み禁止期間内に、前記第１の割り込み処理の割り込み要求と前記第２の割り込み処理の割り込み要求とが生じた場合、前記第１の割り込み処理の割り込み要求が前記第２の割り込み処理の割り込み要求よりも先に発生していれば、第２の割り込み処理において、その時までの前記カウンタの周回回数を「１」だけ加算して当該加算値を用いて前記割り込み信号の時間間隔を演算する。また、その直後の第１の割り込み処理において、前記カウンタの周回回数カウント処理を１回分無効にするようにしている。
【００１７】
かかる場合、先の処理（割り込み期間内に第１，第２の割り込み要求が重複した際の処理）でカウンタの周回回数が「１」だけ加算されると、その加算分は次回の処理で余分な値となるが、上記請求項３の構成によれば、周回回数のカウント処理を１回分無効化することにより周回回数の過多分が修正できる。その結果、第１，第２の割り込み要求が重複したタイミングでの第２の割り込み処理、並びにその後の第２の割り込み処理の実施に際して、正確な時間計測を実施することができる。
【００１８】
請求項４に記載の発明では、前記割り込み禁止期間内に、前記第１の割り込み処理の割り込み要求と前記第２の割り込み処理の割り込み要求とが生じた場合、前記第１の割り込み処理の割り込み要求が前記第２の割り込み処理の割り込み要求よりも先に発生していれば、前記第２の割り込み処理では、その時までの前記カウンタの周回回数を「１」だけ加算して当該加算値を用いて前記割り込み信号の時間間隔を演算し、さらに、次回の時間間隔の演算に備えてその時の前記カウンタの周回回数を「１」加算した値に更新及び記憶しておくようにしている。
【００１９】
つまり、上記請求項３に記載の発明では、周回回数のカウント処理を１回分無効とすることで、周回回数の過多分を修正したが、本請求項４の発明では、前記無効化の処理に代えて、加算値の更新（＋１）及び記憶処理を行うことにより周回回数の過多分を修正するようにしている。その結果、本請求項４でも前記請求項３と同様に、上記の如く割り込み期間内に割り込み処理が重複した際において、次回の時間間隔演算時における周回回数の誤差を無くすことができる。
【００２０】
さらに、請求項５に記載の発明では、割り込み禁止期間や第１，第２の割り込み処理の所要時間に対して前記カウンタの計数容量が十分に長いことを前提として、カウンタの中心値を基準に前記第１，第２の割り込み処理のいずれの割り込み要求が先に発生したかを判定する。この場合、カウントアップ式のカウンタであれば、同カウンタの中心値よりも割り込み信号の割り込み時におけるカウント値が大きいと第２の割り込み要求が先に発生したと特定でき、逆に、カウンタの中心値よりも割り込み信号の割り込み時におけるカウント値が小さいと第１の割り込み要求が先に発生したと特定できる。かかる場合、第１，第２の割り込み処理の割り込み要求がいずれが先であったかを容易に判定できる。
【００２１】
請求項６に記載の発明では、前記第２の割り込み処理の実行時において、前記カウンタの周回回数を所定値にリセットするようにしている。この場合、カウンタの周回回数をリセットする値は任意でよいが、例えば「０」にクリアする構成とすれば、周回回数を数えるためのカウンタ容量を少なくすることができる。
【００２２】
【発明の実施の形態】
（第１の実施の形態）
以下、この発明を車両用エンジン制御システムに具体化した第１の実施の形態を図面に従って説明する。なお、本制御システムでは、互いに通信可能な複数のマイコンを内蔵したＥＣＵ（電子制御装置）を備え、当該ＥＣＵにより燃料噴射制御、点火時期制御、ノック制御等のエンジン制御を実施する。特に本システムでは、燃料噴射制御や点火時期制御等の主要なエンジン制御を司るホストマイコンと、エンジン運転状態の検出データの演算やノック処理を司るノック制御システム用マイコン（以下、ＫＣＳマイコンという）とを備える。
【００２３】
図１は、ＥＣＵ１を中心とする本システムの電気的構成を示す図である。図１において、ＥＣＵ１は、ホストマイコン１０とＫＣＳマイコン２０とを備え、両マイコン１０，２０は双方向に通信可能な通信線２で接続されている。ホストマイコン１０は、ＫＣＳマイコン２０から送信される各種データ（吸気温，吸入空気量，水温等）に基づいて点火時期調節を行い、かかる点火時期制御によりノック発生を抑制させる他、インジェクタへの通電動作を操作して燃料噴射制御を行う。一方、ＫＣＳマイコン２０は、ノック検出を行う他、ホストマイコン１０からのＡ／Ｄ変換要求等に従ってエンジン運転状態を表す各種デジタル信号を生成する。
【００２４】
ここで、エンジン運転状態を検出するための各種センサ群について簡単に説明する。なお、エンジン構成については、周知のものと同様であるので図示を省略する。先ず、ノックセンサ３は、図示しないエンジンのシリンダブロックに配設され、当該シリンダブロックの振動（ノック）を検出する。吸気温センサ４はエンジンの吸気管に設けられ、吸入空気の温度を検出する。エアフローメータ５も同様にエンジンの吸気管に設けられ、吸入空気の量を検出する。水温センサ６はエンジンのシリンダブロックに設けられ、エンジン冷却水の温度を検出する。スロットル開度センサ７は吸気管に設けられたスロットル弁の開度を検出する。また、気筒判別センサ８及びクランク角センサ９は、エンジンの回転に伴い所定のパルス信号を生成する。より具体的には、気筒判別センサ８は、多気筒エンジンにおいて特定気筒の圧縮ＴＤＣにて基準信号を出力し、クランク角センサ９は、エンジンの所定クランク角（本実施の形態では、３０°ＣＡ）毎にクランク角信号を出力する。上記センサ群３〜９の検出信号はＫＣＳマイコン２０に入力される。
【００２５】
次に、ＫＣＳマイコン２０の構成について詳述する。ＫＣＳマイコン２０において、ＲＯＭ（リードオンリメモリ）２１には固定データ及び各種演算プログラムが格納されている。また、ＲＡＭ（ランダムアクセスメモリ）２２には各種データが読み出し及び書き込み可能に一時記憶される。ＣＰＵ（中央演算装置）２３は、前記ＲＯＭ２１に記憶されている演算プログラムに基づいてノック検出やエンジン回転数の演算等、各種演算処理を実行する。ＤＭＡコントローラ（ダイレクトメモリアクセスコントローラ）２４は、ＣＰＵ２３を経由しないで、直接ＲＡＭ２２と外部装置（ここでは、ホストマイコン１０）との間でデータの授受をとり行う。なお、本実施の形態では、ＣＰＵ２３により演算手段が構成されている。
【００２６】
また、ＫＣＳマイコン２０において、前記ノックセンサ３の検出信号（以下、ノック信号という）は、バンドパスフィルタ２５を通過した後、ピークホールド回路（Ｐ／Ｈ回路）２６及び積分回路２７に取り込まれる。ここで、バンドパスフィルタ２５は、ノック信号の特定周波数帯域の成分のみを通過させる。また、Ｐ／Ｈ回路２６は、所定のゲート区間（所定クランク角に対応して設定されるノック検出期間）内におけるノック信号のピーク値を保持する。積分回路２７は、前記ゲート区間内におけるノック信号の積分値を算出する。Ｐ／Ｈ回路２６及び積分回路２７の各々の出力信号はマルチプレクサ２８に取り込まれる。
【００２７】
マルチプレクサ２８には、前記Ｐ／Ｈ回路２６及び積分回路２７の出力信号の他に、前述した吸気温センサ４，エアフローメータ５，水温センサ６，スロットル開度センサ７等、各種センサからのアナログ信号が入力され、マルチプレクサ２８は各信号を選択的に切り換えていずれかの信号をＡ／Ｄ変換器２９に出力する。そして、Ａ／Ｄ変換器２９は、マルチプレクサ２８の出力信号を順次Ａ／Ｄ変換し、このＡ／Ｄ変換データを前記ＣＰＵ２３に出力する。
【００２８】
前記気筒判別センサ８及びクランク角センサ９の検出信号は、フィルタ４１，４２にてノイズが除去され後、ＫＣＳマイコン２０の波形整形回路３０に入力される。波形整形回路３０は、上記両センサ８，９の出力を波形整形してエンジン回転数信号（以下、ＮＥ信号という）や基準位置信号（以下、Ｇ信号という）を生成し、これらＮＥ信号，Ｇ信号をＫＣＳマイコン２０のＣＰＵ２３やホストマイコン１０に出力する。かかる場合、ＮＥ信号は、エンジン回転数を演算するためのＮＥ割り込み処理（詳しくは後述する）の割り込み信号に相当し、このＮＥ信号がＣＰＵ２３に入力されると、ＮＥ割り込み処理の割り込み要求が発生する。そして、この割り込み要求時には、ＣＰＵ２３内のＮＥ割り込みフラグＦ１に「１」が自動的にセットされるようになっている。
【００２９】
また、ＫＣＳマイコン２０は、１６ビットのフリーランニングカウンタ３１を有する。即ち、フリーランニングカウンタ３１は、１カウント＝１μｓとして「００００Ｈ」〜「ＦＦＦＦＨ」の範囲で時間計測を行う。なお、フリーランニングカウンタ３１の周回時間（１周期の時間）は、約６５．５ｍｓとなっている。このとき、前記ＮＥ信号の割り込み時におけるフリーランニングカウンタ３１のカウンタ値は、一旦キャプチャレジスタ３２に捕捉された後、ＣＰＵ２３に取り込まれる。
【００３０】
ここで、前記フリーランニングカウンタ３１は、前述の通り「００００Ｈ」〜「ＦＦＦＦＨ」の計数容量を有し、このカウンタ値がオーバーフローした際には、ＣＰＵ２３内のオーバーフロー割り込みフラグＦ２に「１」が自動的にセットされるようになっている。
【００３１】
なお、本実施の形態においては、オーバーフロー割り込み処理が「第１の割り込み処理」に相当すると共に、前記ＮＥ割り込み処理が「第２の割り込み処理」に相当し、ＮＥ割り込み処理の割り込み優先順位はオーバーフロー割り込み処理の同順位よりも高い。また、ノック検出処理等、他の割り込み処理をＣＰＵ２３が実施している期間には、優先順位にかかわらず他の割り込み処理の割り込みが禁止されるようになっている（この期間が「割り込み禁止期間」に相当する）。つまり、ノック検出のための割り込み処理期間において、前記ＮＥ割り込み処理やオーバーフロー割り込み処理等の割り込み要求がなされたとしても、それらの割り込み処理はノック検出処理が終了するまで待たされ、ノック検出処理の終了後に優先順位に応じて順次実行される。
【００３２】
一方、ホストマイコン１０は、前記ＫＣＳマイコン２０と同様なＲＯＭ１１，ＲＡＭ１２，ＣＰＵ１３，ＤＭＡコントローラ１４を備えている。この場合、ＣＰＵ１３は、ＲＯＭ１１内の演算プログラムに基づいて点火時期制御信号並びに燃料噴射制御信号を生成し、これら制御信号を駆動回路４３，４４に出力する。駆動回路４３，４４は、前記点火時期制御信号並びに燃料噴射制御信号に基づいてイグナイタ４５及びインジェクタ４６を駆動させる。
【００３３】
次に、本実施の形態におけるエンジン回転数の演算処理について、図２〜図６を用いて説明する。なお、以下の回転数演算処理は、ＫＣＳマイコン２０内のＣＰＵ２３により実施される演算処理に相当する。
【００３４】
ここで、図２は、ＮＥ割り込み処理を示すフローチャートであり、図３は、オーバーフロー割り込み処理を示すフローチャートである。また、図４〜図６は、ＮＥ割り込み要求及びオーバーフロー割り込み要求の発生タイミングが異なる場合について、個々の割り込み処理動作の内容を具体的に示すタイムチャートである。但し、図４〜図６に示す割り込み禁止処理は、本来、図示する頻度よりも多く実施されるものであるが、同図では作用を簡便に説明するために必要部分のみを表示する。
【００３５】
さて、エンジン回転数を算出するには、前後する２つのＮＥ信号の時間間隔を計測し、この時間間隔の逆数から当該回転数を求める。かかる場合、前後する２つのＮＥ信号の時間間隔（以下、所要時間ＴＩＭＥという）は、フリーランニングカウンタ３１のカウント値及び同カウンタ３１のオーバーフロー回数（周回回数）から求められる。なお、フリーランニングカウンタ３１のオーバーフロー回数は、８ビットのオーバーフローカウンタにてカウントされる。
【００３６】
即ち、前回のＮＥ割り込み時におけるフリーランニングカウンタ３１のカウント値（以下、ＮＥ割込カウント値という）を「Ｔ（ｉ−１）」、今回のＮＥ割り込み時におけるＮＥ割込カウント値を「Ｔ（ｉ）」、オーバーフロー回数を示すオーバーフローカウンタのカウント値を「ＣＯＦ」、フリーランニングカウンタ３１が１周する周回時間を「ＴＡ（本実施の形態では、約６５．５ｍｓ）」とすれば、前記所要時間ＴＩＭＥは次の（１）式で算出される。
【００３７】
ＴＩＭＥ＝Ｔ（ｉ）−Ｔ（ｉ−１）＋ＣＯＦ・ＴＡ    …（１）
本実施の形態は、上記（１）式を用いて前後するＮＥ信号の所要時間ＴＩＭＥを計測し、ひいては同所要時間ＴＩＭＥを用いてエンジン回転数を算出するものである。以下、本作用における基本的動作を図４のタイムチャートを用いて説明する。
【００３８】
つまり、図４の時間ｔ０，ｔ１，ｔ２は、ＮＥ割り込み要求（ＮＥ信号）が発生したタイミングを示し、このＮＥ割り込み要求時にはその時のフリーランニングカウンタ３１のカウント値がキャプチャレジスタ３２にラッチされる。例えば時間ｔ０では「Ｔ（ｉ）」で示すカウント値がキャプチャレジスタ３２にラッチされる。また、ＮＥ割り込み要求に伴いＣＰＵ２３内のＮＥ割り込みフラグＦ１に「１」がセットされる。
【００３９】
そして、時間ｔ１，ｔ２の場合、即ち、他の割り込み処理が実行されていない通常時には、ＮＥ割り込み要求と同時にＮＥ割り込み処理（図２の割り込み処理）が開始される。また、ＮＥ割り込み処理の開始に従って、ＮＥ割り込みフラグＦ１が自動的に「０」にクリアされる。また、時間ｔ０の場合、即ち他の割り込み処理が実行されている割り込み禁止期間（図中の斜線区域）内にＮＥ割り込み要求が発生した場合には、割り込み禁止期間が終了するまでＮＥ割り込みフラグＦ１が「１」のまま保持され、割り込み禁止期間の終了時に相当する時間ｔａで、ＮＥ割り込みフラグＦ１が「０」にクリアされると共にＮＥ割り込み処理が実行される。この場合、ＮＥ割り込み処理は、時間ｔ０〜ｔａの時間だけ待たされることになる。
【００４０】
一方、フリーランニングカウンタ３１のカウント値がオーバーフローすると（カウント値が「ＦＦＦＦＨ」に達すると）、オーバーフロー割り込み要求が発生したことになり、オーバーフロー割り込みフラグＦ２に「１」がセットされる。この場合、他の割り込み処理が実行されていない通常時には、オーバーフロー割り込みと同時にオーバーフロー割り込み処理（図３の割り込み処理）が開始され、このオーバーフロー割り込み処理の開始に従いオーバーフロー割り込みフラグＦ２が自動的にクリアされる。
【００４１】
また、他の割り込み処理が実行されている割り込み禁止期間（図中の斜線期間）にオーバーフロー割り込み要求が発生した場合（時間ｔｂの場合）には、割り込み禁止期間が終了するまでオーバーフロー割り込みフラグＦ２が「１」のまま保持され、割り込み禁止期間の終了時に相当する時間ｔｃで、オーバーフロー割り込みフラグＦ２が「０」にクリアされると共にオーバーフロー割り込み処理が実行される。
【００４２】
図中、オーバーフロー回数は、ＮＥ割り込み処理の実行に伴い「００Ｈ」にクリアされると共に、オーバーフロー割り込み処理の実行に伴い「１」ずつカウントアップされるようになっている。
【００４３】
なお、ここでは詳述しないが、前述した通りＮＥ割り込み処理はオーバーフロー割り込み処理よりも優先順位が高いため、両処理が同時期に割り込み要求された際には、優先順位の高いＮＥ割り込み処理が先に実施される。
【００４４】
以上の基本的動作を含め、図２，図３の割り込み処理を図４〜図６のタイムチャートを用いながら順次説明する。
さて、ＮＥ割り込み要求に伴い図２の処理がスタートすると、ＣＰＵ２３は、先ずステップ１０１で今現在、今回のＮＥ割込カウント値Ｔ（ｉ）として記憶されているデータを前回のＮＥ割込カウント値Ｔ（ｉ−１）として更新する。また、ＣＰＵ２３は、続くステップ１０２でキャプチャレジスタ３２にラッチされている値を今回のＮＥ割込カウント値Ｔ（ｉ）として記憶する。さらに、ＣＰＵ２３は、ステップ１０３でオーバーフロー回数ＣＯＦをメモリＭＯＦに記憶させる。ここで、オーバーフロー回数ＣＯＦは、オーバーフロー割り込み要求に従い、図３のステップ２０１で「１」ずつカウントアップされる値である。
【００４５】
その後、ＣＰＵ２３は、ステップ１０４でオーバーフロー割り込みフラグＦ２が「１」であるか否かを判別する。このとき、上述した図４の場合には、ＮＥ割り込み処理時（図４の時間ｔａ，ｔ１，ｔ２）にオーバーフロー割り込みフラグＦ２が「０」であるので、いずれのＮＥ割り込み処理時にも同ステップ１０４が否定判別され、ＣＰＵ２３はステップ１０５でオーバーフロー回数ＣＯＦを「００Ｈ」にクリアする。さらに、ＣＰＵ２３は、ステップ１０９で前述の（１）式を用いて所要時間ＴＩＭＥを算出する。但し、このステップ１０９ではメモリＭＯＦに記憶されているオーバーフロー回数を用いて所要時間ＴＩＭＥを算出する。
【００４６】
その後、ＣＰＵ２３は、ステップ１１０で前記所要時間ＴＩＭＥからエンジン回転数を算出し、本処理を一旦終了する。かかる場合、所要時間ＴＩＭＥはエンジンの３０°ＣＡの回転に要する時間であるため、これから推察してエンジン回転数が容易に算出できる。
【００４７】
一方、次の（イ），（ロ）で記述するように、図５，図６の場合には前記ステップ１０４が肯定判別される。
（イ）図５では、時間ｔ１０，ｔ１１，ｔ１２でＮＥ割り込み要求が発生しており、このうち時間ｔ１１のＮＥ割り込み時にかかる割り込み禁止期間（同図の斜線区域）内では、時間ｔ１１よりも後の時間ｔｄでオーバーフロー割り込み要求が発生している。この場合、時間ｔ１１〜ｔｅでＮＥ割り込みフラグＦ１が「１」で保持される一方、時間ｔｄ〜ｔｆでオーバーフロー割り込みフラグＦ２が「１」で保持される。従って、図５の時間ｔｅで開始されるＮＥ割り込み処理において、図２のステップ１０４が肯定判別される。
【００４８】
（ロ）図６では、時間ｔ２０，ｔ２１，ｔ２２でＮＥ割り込み要求が発生しており、このうち時間ｔ２１のＮＥ割り込み時にかかる割り込み禁止期間（同図の斜線区域）内では、時間ｔ２１よりも前の時間ｔｇでオーバーフロー割り込み要求が発生している。この場合、時間ｔ２１〜ｔｈでＮＥ割り込みフラグＦ１が「１」で保持される一方、時間ｔｇ〜ｔｉでオーバーフロー割り込みフラグＦ２が「１」で保持される。従って、図６の時間ｔｈで開始されるＮＥ割り込み処理においても、図２のステップ１０４が肯定判別される。
【００４９】
要するに、前記ステップ１０４が肯定判別されることは、割り込み禁止期間内に、ＮＥ割り込み処理の割り込み要求とオーバーフロー割り込み処理の割り込み要求とが重複して発生する場合に相当する。
【００５０】
一方で、上記（イ），（ロ）の場合を比較した場合、以下に示す違いが生じる。即ち、図５，図６の斜線区域で示す割り込み禁止期間において、（イ）ではオーバーフロー割り込み要求（図５の時間ｔｄ）よりも先にＮＥ割り込み要求（図５の時間ｔ１１）が発生している。この場合、時間ｔｅで開始されるＮＥ割り込み処理では、従来の手法を用いてもオーバーフロー回数ＣＯＦに誤りが生じることはなく、従来通りのＴＩＭＥ演算手法で所要時間ＴＩＭＥが算出される。
【００５１】
これに対して、（ロ）では、オーバーフロー割り込み要求（図６の時間ｔｇ）の後にＮＥ割り込み要求（図６の時間ｔ２１）が発生している。この場合、時間ｔｈで開始されるＮＥ割り込み処理では、従来の手法を用いるとオーバーフロー回数ＣＯＦに誤りが生じ易く、従来通りのＴＩＭＥ演算手法では正確な所要時間ＴＩＭＥが算出できない。即ち、図６の時間ｔ２０〜２１の期間において、実際のオーバーフロー回数は「３回」であるにもかかわらず、ＣＰＵ２３は同回数を「２回」とみなすおそれがあった（従来技術の図１６参照）。そこで、本実施の形態では、図２の割り込み処理において、前記（イ），（ロ）を区別して処理を実行する。
【００５２】
つまり、図２のステップ１０６において、ＣＰＵ２３は、ＮＥ割込カウント値Ｔ（ｉ）が所定の判定レベル＃ＬＥＶＥＬ以上であるか否かを判別することにより、割り込み禁止期間内に、ＮＥ割り込み要求又はオーバーフロー割り込み要求のいずれが先に発生したかを判別する。
【００５３】
ここで、割り込み禁止処理や各種割り込み処理の処理時間は、フリーランニングカウンタ３１が１周する周回時間（約６５．５ｍｓ）に比べて十分に短いため、ＮＥ割込カウント値Ｔ（ｉ）はフリーランニングカウンタ３１がオーバーフローした時間に極めて近いと考えられる。従って、ＮＥ割り込みが先でオーバーフロー割り込みが後の場合（図５の場合）には、ＮＥ割込カウント値Ｔ（ｉ）は「Ｆ０００Ｈ〜ＦＦＦＦＨ」の範囲にあると特定できる。また、オーバーフロー割り込みが先でＮＥ割り込みが後の場合（図６の場合）には、ＮＥ割込カウント値Ｔ（ｉ）は「００００Ｈ〜１０００Ｈ」の範囲にあると特定できる。このとき、判定レベル＃ＬＥＶＥＬをフリーランニングカウンタ３１の中間値「８０００Ｈ」とすることにより、前記（イ），（ロ）の２つの場合を容易に判別できる。
【００５４】
上記の理由から、＃ＬＥＶＥＬ＝「８０００Ｈ」として、ステップ１０６の判別処理を実施する。このとき、前記図５で説明した場合（前記（イ）の場合）には、ステップ１０６が肯定判別され、ＣＰＵ２３は、ステップ１０６→１０５→１０９→１１０の順に処理を実行する。
【００５５】
また、前記図６で説明した場合（前記（ロ）の場合）には、ステップ１０６が否定判別され、ＣＰＵ２３は、前記ステップ１０７に進む。そして、ＣＰＵ２３は、ステップ１０７でメモリＭＯＦに記憶されているオーバーフロー回数を「１」だけ加算した値に更新すると共に、続くステップ１０８でオーバーフロー回数ＣＯＦを「ＦＦＨ」とする。その後、ＣＰＵ２３は、ステップ１０９で所要時間ＴＩＭＥを算出すると共に、続くステップ１１０でエンジン回転数を算出し本処理を終了する。
【００５６】
上述した（ロ）の場合の処理を図６を用いてより具体的に説明すれば、図６の時間ｔｈで開始されるＮＥ割り込み処理では、前記ステップ１０６が否定判別され、ステップ１０７でメモリＭＯＦに記憶されているオーバーフロー回数が実際の値（０３Ｈ）に修正されると共に（２＋１＝３）、ステップ１０８で次のＮＥ割り込み時に備えてオーバーフロー回数ＣＯＦが「ＦＦＨ」とされる。すなわち、その直後に実施されるオーバーフロー割り込み処理の実施に伴い、上記オーバーフロー回数が「１」カウントアップされてオーバーフローカウンタが「００Ｈ」にリセットされるため、結果的にオーバーフロー回数が減算されることになる（００Ｈ−１＝ＦＦＨ）。
【００５７】
また、図６の時間ｔｉのオーバーフロー割り込み処理では、オーバーフロー回数のカウントアップ処理により同回数が「００Ｈ」になり、さらに、時間ｔｊ，ｔｋのオーバーフロー割り込み処理では同じくオーバーフロー回数が「０１Ｈ」，「０２Ｈ」にカウントアップされる。つまり、前記時間ｔｈで開始されたＮＥ割り込み処理のステップ１０８（図２）のタイミングで、オーバーフロー回数が「ＦＦＨ」に設定され、その後の時間ｔｉで開始されたオーバーフロー割り込み処理のステップ２０１（図３）のタイミングで、同回数が「ＦＦＨ＋１＝００Ｈ」に計算されることは、実質上、割り込み禁止期間におけるカウンタ３１のオーバーフロー（時間ｔｇのオーバーフロー）を１回分数えないようにする処理（カウント処理を１回分無効にする処理）に相当する。従って、図６の時間ｔ２２のＮＥ割り込み処理においては、オーバーフロー回数＝２となり、これも実際のオーバーフロー回数に一致する。
【００５８】
そして、以上詳述した本実施の形態によれば、以下に示す効果が得られる。
つまり、本実施の形態では、所定の割り込み禁止期間に、ＮＥ割り込み処理の割り込み要求とオーバーフロー割り込み処理の割り込み要求とが重複した場合において、いずれの割り込み要求が先に発生したかを判定するようにした（図２のステップ１０６）。そして、オーバーフロー割り込み処理の割り込み要求がＮＥ割り込み処理の割り込み要求よりも先に発生していれば、その時までのフリーランニングカウンタ３１のオーバーフロー回数（メモリ値ＭＯＦ）を「１」だけ加算すると共に（図２のステップ１０７）、当該加算値を用いて前後するＮＥ信号の所要時間ＴＩＭＥを演算するようにした（図２のステップ１０９）。また、ＮＥ割り込み処理終了後、待たされていたオーバーフロー割り込み処理が実施され、オーバーフロー回数がカウントアップされることを考慮してオーバーフロー回数を「１」だけ減算するようにした（図２のステップ１０８）。
【００５９】
上記構成によれば、両割り込み要求のいずれが先に発生したかに応じてオーバーフロー回数を修正するため、オーバーフロー回数の誤りがなく、常に正確な時間計測が可能となる。特に、オーバーフロー割り込み要求がＮＥ割り込み要求よりも先に生じた場合（例えば、図６の場合）には、割り込み禁止期間中のオーバーフロー割り込み処理が実施できず、従来技術の構成によれば図６の時間ｔ２１，ｔ２２でオーバーフロー回数の過不足を生じることがあったが、本実施の形態ではかかる問題が解消できる。その結果、前後する２つのＮＥ信号の時間間隔（所要時間ＴＩＭＥ）を常に正確に計測することができ、ひいてはエンジン回転数の演算精度が向上する。
【００６０】
また、本実施の形態では、フリーランニングカウンタ３１の中心値「８０００Ｈ」を基準にＮＥ割り込み処理、オーバーフロー割り込み処理のいずれの割り込み要求が先に発生したかを判定するようにした。かかる場合、前記の判定処理が容易に実施できる。
【００６１】
さらに、本実施の形態では、ＮＥ割り込みに際してＮＥ割込カウント値Ｔ（ｉ）を直ちにキャプチャレジスタ３２に記憶させるようにしたため、他の割り込み処理によりＮＥ割り込み処理が待たされるような場合においても、正確なＮＥ割込カウント値Ｔ（ｉ）が得られる。
【００６２】
（第２の実施の形態）
次いで、本発明の第２の実施の形態について図７〜図９を用いて説明する。但し、本実施の形態の構成等において、前記第１の実施の形態との共通部分については説明を省略する。なお、図７は、本実施の形態におけるＮＥ割り込み処理を示すフローチャートであり、本割り込み処理は第１の実施の形態における図２の処理に相当する。また、図８，図９は、本実施の形態の特徴部分を説明するためのタイムチャートであり、本タイムチャートは、第１の実施の形態における図５，図６のタイムチャートに相当する。図８，図９において、時間ｔ３０，ｔ３１，ｔ３２及び時間ｔ４０，ｔ４１，ｔ４２はそれぞれＮＥ割り込み要求のタイミングを示す。オーバーフロー回数の加算処理は、前述の図３のフローチャートの「ＣＯＦ」を「ＣＯＦ（ｉ）」に置き換えた処理にて達成される。
【００６３】
本実施の形態と第１の実施の形態との相違点としては、上記第１の実施の形態では、ＮＥ割り込み処理毎にオーバーフロー回数をクリアしていたのに対し（図２のステップ１０５）、本実施の形態では同処理を省略し、図８，図９に示すようにオーバーフロー回数を継続的に加算するようにしている。
【００６４】
さて、ＮＥ割り込み要求に伴い図７の処理がスタートすると、ＣＰＵ２３は、先ずステップ３０１で今現在、今回のＮＥ割込カウント値Ｔ（ｉ）として記憶されているデータを前回のＮＥ割込カウント値Ｔ（ｉ−１）として更新する。また、ＣＰＵ２３は、続くステップ３０２でキャプチャレジスタ３２にラッチされている値を今回のＮＥ割込カウント値Ｔ（ｉ）として記憶する。さらに、ＣＰＵ２３は、ステップ３０３で前回のオーバーフロー回数として記憶されている値「ＣＯＦ（ｉ−１）」を読み出し、同値と今回のオーバーフロー回数ＣＯＦ（ｉ）との差分をメモリＭＯＦに記憶させる。ステップ３０３ａでは、今回のオーバーフロー回数ＣＯＦ（ｉ）を前回値ＣＯＦ（ｉ−１）として更新し、次回の差分ＭＯＦを算出する処理に備える。
【００６５】
その後、ＣＰＵ２３は、ステップ３０４でオーバーフロー割り込みフラグＦ２が「１」であるか否かを判別する。また、ＣＰＵ２３は、続くステップ３０５でＮＥ割込カウント値Ｔ（ｉ）が所定の判定レベル＃ＬＥＶＥＬ（＝「８０００Ｈ」）以上であるか否かを判別する。そして、Ｆ２＝０の場合、又はＴ（ｉ）≧＃ＬＥＶＥＬの場合、ＣＰＵ２３はステップ３０８に進み、前回のＮＥ信号と今回のＮＥ信号との間の所要時間ＴＩＭＥを算出する。さらに、ＣＰＵ２３は、ステップ３０９で所要時間ＴＩＭＥからエンジン回転数を算出する。
【００６６】
つまり、上記した処理の流れ（ステップ３０１→３０２→３０３→３０３ａ→３０４→（３０５→）３０８→３０９）では、オーバーフロー回数がクリアされることはなく、前回値と今回値との差分を求めて、その差分から所要時間ＴＩＭＥを算出している。これを図８を用いて説明すれば、時間ｔ３１ではオーバーフロー回数の差分「２」（＝５−３）となり、時間ｔ３２ではオーバーフロー回数の差分が「３」（＝８−５）となる。そして、これら差分値が所要時間ＴＩＭＥの算出に用いられる。
【００６７】
一方、Ｆ２＝１で且つ、Ｔ（ｉ）＜＃ＬＥＶＥＬの場合、ＣＰＵ２３は、ステップ３０６でメモリＭＯＦに記憶されているオーバーフロー回数を「１」だけ加算した値に更新する。また、ＣＰＵ２３は、続くステップ３０７でオーバーフロー回数の今回値ＣＯＦ（ｉ）を「１」減算させた値に更新しておく。その後、ＣＰＵ２３は、前述のステップ３０８，３０９を実行する。
【００６８】
つまり、上記した処理の流れ（・・・→ステップ３０４→３０５→３０６→３０７→・・・）では、オーバーフロー回数の前回値と今回値との差分に「１」を加算した値を用いて所要時間ＴＩＭＥを算出している。これを図９を用いて説明すれば、時間ｔ４１のＮＥ割り込み要求に伴うＮＥ割り込み処理（時間ｔｍ）では、オーバーフロー回数の差分が「（５−３）＋１＝３」となり、当該差分値が所要時間ＴＩＭＥの算出に用いられる。かかる場合には、オーバーフロー回数の差分値が時間ｔ４０〜ｔ４１の期間における実際の回数（３回）に一致し、時間の計測誤差が解消できる。
【００６９】
また、時間ｔｍでは図７のステップ３０７でオーバーフロー回数ＣＯＦ（ｉ）が「１」だけ減算され、その後、時間ｔｎのオーバーフロー割り込み処理では前記ＣＯＦ（ｉ）が「１」加算される。これは、実質上、オーバーフロー回数を１回分数えないようにした処理（カウント処理を１回分無効にする処理）に相当する。従って、時間ｔ４２で実行されるＮＥ割り込み処理では、オーバーフロー回数の差分が「７−５＝２」となり、当該差分値が所要時間ＴＩＭＥの算出に用いられる。かかる場合、オーバーフロー回数の差分値が時間ｔ４１〜ｔ４２の期間における実際の回数（２回）に一致し、時間の計測誤差が解消できる。
【００７０】
以上、本第２の実施の形態によれば、上記第１の実施の形態と同様に前後する２つのＮＥ信号の時間間隔を常に正確に計測することができ、本発明における所望の効果を達成することができる。なお、本実施の形態では、図７のステップ３０６が「周回回数（オーバーフロー回数）を加算する処理」に相当し、同ステップ３０７及びオーバーフロー割り込み処理（図２参照）が「周回回数のカウント値を無効化する処理」に相当する。
【００７１】
（第３の実施の形態）
次いで、本発明の第３の実施の形態について図１０，図１１を用いて説明する。但し、本実施の形態の構成等において、前記第１，第２の実施の形態との共通部分については説明を省略する。なお、図１０は、本実施の形態におけるＮＥ割り込み処理を示すフローチャートであり、本割り込み処理は第２の実施の形態における図７の処理の一部を変更したものである。また、図１１は、本実施の形態の特徴部分を説明するためのタイムチャートであり、特に所定の割り込み禁止期間（図の斜線区域）において、オーバーフロー割り込み要求がＮＥ割り込み要求よりも先に発生した場合の動作を示す。図１１において、時間ｔ５０，ｔ５１，ｔ５２はそれぞれＮＥ割り込み要求のタイミングを示す。
【００７２】
つまり、図１０のＮＥ割り込み処理において、所定の割り込み禁止期間にオーバーフロー割り込み要求がＮＥ割り込み要求よりも先に発生したと判断された場合には（ステップ３０４がＹＥＳで、且つステップ３０５がＮＯの場合）、ＣＰＵ２３は、ステップ３０６の処理後、続くステップ３０７ａでオーバーフロー回数の前回値ＣＯＦ（ｉ−１）を「１」加算させた値に更新する。即ち、上記第２の実施の形態では、図７のステップ３０７でオーバーフロー回数の今回値ＣＯＦ（ｉ）について同値を「１」減算していたが、本実施の形態ではこれに代えて、ステップ３０７ａでオーバーフロー回数の前回値ＣＯＦ（ｉ−１）について同値を「１」加算する。
【００７３】
上記した処理の流れ（・・・→ステップ３０４→３０５→３０６→３０７ａ→・・・）によれば、図１１の時間ｔ５１での所要時間ＴＩＭＥの演算に際し、時間ｔ５０〜ｔ５１の期間における実際のオーバーフロー回数（３回）に一致した同回数の差分値「（５−３）＋１＝３」が求められる。そして、その差分値から所要時間ＴＩＭＥが演算される。その結果、時間ｔ５０〜ｔ５１の期間において、時間の計測誤差が解消できる（これは上記第２の実施の形態と同様）。
【００７４】
また、時間ｔ５２での所要時間ＴＩＭＥの演算に際しては、前記図１０のステップ３０７ａで「１」だけ加算されたオーバーフロー回数の前回値ＣＯＦ（ｉ−１）と、その時のオーバーフロー回数の今回値ＣＯＦ（ｉ）とから時間ｔ５１〜ｔ５２のオーバーフロー回数の差分が演算される。このとき、時間ｔ５２でのオーバーフロー回数の差分は「８−６＝２」となり、時間ｔ５１〜ｔ５２の期間における実際の回数（２回）に一致する。従って、かかる場合にも時間の計測誤差が解消できる。
【００７５】
以上、本第３の実施の形態によれば、上記第１，第２の実施の形態と同様に前後する２つのＮＥ信号の時間間隔を常に正確に計測することができ、本発明における所望の効果を達成することができる。
【００７６】
（第４の実施の形態）
次いで、本発明の第４の実施の形態について図１２，図１３を用いて説明する。但し、本実施の形態の構成等において、前記第１〜第３の実施の形態との共通部分については説明を省略する。なお、図１２は、本実施の形態におけるＮＥ割り込み処理を示すフローチャートであり、本割り込み処理は第１の実施の形態における図２の処理の一部を変更したものである。また、図１３は、本実施の形態の特徴部分を説明するためのタイムチャートであり、特に所定の割り込み禁止期間（図の斜線区域）において、オーバーフロー割り込み要求がＮＥ割り込み要求よりも先に発生した場合の動作を示す。図１３において、時間ｔ６０，ｔ６１，ｔ６２はそれぞれＮＥ割り込み要求のタイミングを示す。
【００７７】
つまり、図１２のＮＥ割り込み処理において、割り込み禁止期間にオーバーフロー割り込み要求がＮＥ割り込み要求よりも先に発生したと判断された場合には（ステップ１０４がＹＥＳで、且つステップ１０６がＮＯの場合）、ＣＰＵ２３は、ステップ１０７の処理後、続くステップ１０８ａでオーバーフロー割り込みフラグＦ２をクリアする（０にする）。即ち、このフラグＦ２のクリア処理により、一回分のオーバーフロー割り込み処理が実行されないこととなる（同処理がオーバーフロー回数のカウント処理を１回分無効にする処理に相当する）。その後、ＣＰＵ２３は、ステップ１０５でオーバーフロー回数ＣＯＦを「００Ｈ」にクリアする（以降の処理は同様）。
【００７８】
上記した処理の流れ（・・・→ステップ１０４→１０６→１０７→１０８ａ→１０５→・・・）によれば、図１３の時間ｔ６１での所要時間ＴＩＭＥの演算に際し、時間ｔ６０〜ｔ６１の期間における実際のオーバーフロー回数（３回）に一致した値「２＋１＝３」が求められる。そして、その値から所要時間ＴＩＭＥが演算される。その結果、時間ｔ６０〜ｔ６１の期間において、時間の計測誤差が解消できる（これは上記第１の実施の形態と同様）。
【００７９】
また、時間ｔ６２での所要時間ＴＩＭＥの演算に際しては、前記図１２のステップ１０８ａのフラグ操作によりオーバーフロー回数が１回分無効化されている。即ち、待たされていたオーバーフロー割り込み処理が実行されず、オーバーフロー回数はカウントアップされないこととなる。そのため、時間ｔ６２でのオーバーフロー回数は「２」となり、時間ｔ６１〜ｔ６２の期間における実際の回数（２回）に一致する。従って、かかる場合にも時間の計測誤差が解消できる。
【００８０】
以上、本第４の実施の形態によれば、上記第１〜第３の実施の形態と同様に前後する２つのＮＥ信号の時間間隔を常に正確に計測することができ、本発明における所望の効果を達成することができる。
【００８１】
なお、本発明は、上記各実施の形態の他に次の様態にて具体化できる。
（１）上記各実施の形態では、本発明をエンジン回転数の演算装置に具体化したが、他の装置に具体化してもよい。例えば、自動車の変速機の出力軸の回転に伴い割り込み信号を出力する装置において、同割り込み信号の時間間隔を計測する装置に本発明を具体化し、その時間間隔から車速を演算するようにしてもよい。要するに、不定期で発生する割り込み信号の時間間隔を計測する装置であれば、本発明を任意に適用することができる。
【００８２】
（２）上記各実施の形態では、キャプチャレジスタ３２に記憶されたＮＥ割込カウント値Ｔ（ｉ）を判定するための判定レベル＃ＬＥＶＥＬをフリーランニングカウンタ３１の中間カウント値「８０００Ｈ」としたが、これを変更してもよい。つまり、既述したように割り込み禁止処理や各種割り込み処理の処理時間は、フリーランニングカウンタ３１が１周する周回時間（約６５．５ｍｓ）に比べて十分に短いため、カウント値の判定が必要な場合（割り込み要求が重複した場合）には、ＮＥ割込カウント値Ｔ（ｉ）は「Ｆ０００Ｈ〜ＦＦＦＦＨ」又は「００００Ｈ〜１０００Ｈ」の範囲にあると特定できる。そのため、判定レベル＃ＬＥＶＥＬを「１０００Ｈ〜Ｆ０００Ｈ」の範囲で設定してもよい。この場合、Ｔ（ｉ）＞Ｆ０００Ｈであれば、ＮＥ割り込み要求がオーバーフロー割り込み要求よりも先であったと判定され（前記図５の場合）、Ｔ（ｉ）＜１０００Ｈであれば、ＮＥ割り込み要求がオーバーフロー割り込み要求よりも後であったと判定される（前記図６の場合）。
【００８３】
（３）上記各実施の形態では、フリーランニングカウンタ３１のオーバーフロー時にオーバーフロー割り込み処理（第１の割り込み処理）を起動させたが、必ずしもオーバーフロー時でなくともよく、これを変更してもよい。例えば同カウンタの中間値（８０００Ｈ）等、他のカウント値で第１の割り込み処理を起動させ、その割り込み処理によりフリーランニングカウンタ３１の周回回数を数えるようにしてもよい。
【００８４】
（４）上記各実施の形態では、カウントアップ式のフリーランニングカウンタを用いたが、カウントダウン式のフリーランニングカウンタを用いてもよい。
（５）上記各実施の形態では、割り込み禁止期間や第１，第２の割り込み処理の所要時間に対してカウンタの計数容量が十分に長いことを前提としていたため、割り込み禁止期間で２つの割り込み処理が重複した場合にはカウンタの周回回数を「１」だけ加算或いは減算するようにしていたが、これを変更してもよい。例えば、カウンタの計数容量が非常に小さい場合や、割り込み禁止期間が長く継続した場合において、同割り込み禁止期間内にカウンタのオーバーフローが複数回生じたのであれば、そのオーバーフロー回数に応じた値を加算或いは減算して前記周回回数を修正するようにしてもよい。また、複数回のオーバーフローが生じた場合には、その期間だけ所要時間ＴＩＭＥ（エンジン回転数）の演算を中止するようにしてもよい。
【００８５】
（６）上記第４の実施の形態（図１２のフロー）では、ＮＥ割り込み処理毎にオーバーフロー回数（周回回数）を「００Ｈ」にクリアする構成としていたが、オーバーフロー回数を継続的に加算する構成に変更してもよい。その具体的な手法を図７を用いて説明すれば、図７のステップ３０７に、「オーバーフロー割り込みフラグＦ２をクリアする」という処理（図１２のステップ１０８ａ）を代入する。その結果、１回分のオーバーフロー回数のカウント処理が無効化され、上記各実施の形態と同様に精度の高い時間計測装置が提供できる。要するに、上記いずれの実施の形態においても、ＮＥ割り込み処理毎にオーバーフロー回数（周回回数）を「００Ｈ」にクリアするか、或いは継続的に加算するかは任意に選択して実現できる。
【図面の簡単な説明】
【図１】ＥＣＵの電気的な構成を示すブロック図。
【図２】第１の実施の形態におけるＮＥ割り込み処理を示すフローチャート。
【図３】オーバーフロー割り込み処理を示すフローチャート。
【図４】第１の実施の形態における作用を説明するためのタイムチャート。
【図５】第１の実施の形態における作用を説明するためのタイムチャート。
【図６】第１の実施の形態における作用を説明するためのタイムチャート。
【図７】第２の実施の形態におけるＮＥ割り込み処理を示すフローチャート。
【図８】第２の実施の形態における作用を説明するためのタイムチャート。
【図９】第２の実施の形態における作用を説明するためのタイムチャート。
【図１０】第３の実施の形態におけるＮＥ割り込み処理を示すフローチャート。
【図１１】第３の実施の形態における作用を説明するためのタイムチャート。
【図１２】第４の実施の形態におけるＮＥ割り込み処理を示すフローチャート。
【図１３】第４の実施の形態における作用を説明するためのタイムチャート。
【図１４】従来技術における時間計測装置を示す概略図。
【図１５】従来技術におけるＮＥ割り込み処理を示すフローチャート。
【図１６】従来技術の課題を説明するためのタイムチャート。
【符号の説明】
２３…演算手段としてのＣＰＵ、３１…フリーランニングカウンタ、３２…記憶手段としてのキャプチャレジスタ。
【図１】
0003550867.tif 000002
【図２】
0003550867.tif 000003
【図３】
0003550867.tif 000004
【図４】
0003550867.tif 000005
【図５】
0003550867.tif 000006
【図６】
0003550867.tif 000007
【図７】
0003550867.tif 000008
【図８】
0003550867.tif 000009
【図９】
0003550867.tif 000010
【図１０】
0003550867.tif 000011
【図１１】
0003550867.tif 000012
【図１２】
0003550867.tif 000013
【図１３】
0003550867.tif 000014
【図１４】
0003550867.tif 000015
【図１５】
0003550867.tif 000016
【図１６】
0003550867.tif 000017