(57)【特許請求の範囲】
【請求項１】
クランク軸の所定の回転角度毎にクランク信号を発生するクランクセンサと、
カム軸の所定の回転位置でカム信号を発生するカムセンサと、
前記クランクセンサからのクランク信号に基づき、前記カムセンサからのカム信号入力タイミングから、前記クランク軸が位相角算出用の基準回転位置となる基準タイミングまでの間に、前記クランク軸が回転した回転角度を、位相角として検出する位相角検出手段と、
を備えたエンジンの位相角検出装置であって、
前記位相角検出手段は、
前記クランクセンサから前記クランク信号が入力される度に、前記クランク信号が前回入力されてからの経過時間と、前記クランクセンサによる前記クランク信号の発生間隔に対応する前記クランク軸の回転角度とに基づき、前記クランク軸が所定の単位角度回転するのに要する単位回転時間を算出する単位回転時間算出手段と、
前記カム信号入力タイミングから、次に、前記クランクセンサから前記クランク信号が入力されるクランク信号入力タイミングまでの時間を、角度換算用の実回転時間として検出する実回転時間検出手段と、
前記実回転時間検出手段にて検出された実回転時間と、前記単位回転時間算出手段にて算出された単位回転時間とを用いて、前記カム信号入力タイミングから前記クランク信号入力タイミングまでの間に前記クランク軸が回転した回転角度を算出する角度換算手段と、
前記カム信号入力タイミングから前記基準タイミングまでの間に前記クランクセンサから入力される前記クランク信号の数を求め、当該クランク信号の数と、前記クランクセンサによる前記クランク信号の発生間隔に対応する前記クランク軸の回転角度とに基づき、前記クランク信号入力タイミングから前記基準タイミングまでに前記クランク軸が回転する回転角度を算出する回転角度算出手段と、
前記角度換算手段及び前記回転角度算出手段にて算出された回転角度を加算することで、前記位相角を算出する位相角算出手段と、
を備えたことを特徴とするエンジンの位相角検出装置。
【請求項２】
前記位相角検出手段は、コンピュータにて構成されており、
少なくとも、前記角度換算手段、前記回転角度算出手段、及び、前記位相角算出手段としての機能は、前記コンピュータが、前記クランクセンサからのクランク信号によるクランク信号割り込み処理を実行することにより実現されることを特徴とする請求項１に記載のエンジンの位相角検出装置。
【請求項３】
前記コンピュータは、前記クランク信号割り込み処理により前記位相角を算出すると、
エンジンのバルブタイミング制御装置による前記位相角の制御方向、及び、該バルブタイミング制御装置による前記位相角の可変範囲の少なくとも一方と、前記位相角の算出結果とに基づき、次回、前記カム信号入力タイミングとなり得る角度範囲を推定し、該推定結果に基づき、前記クランク信号割り込み処理の次回の実行期間を設定することを特徴とする請求項２に記載のエンジンの位相角検出装置。
【請求項４】
クランク軸の所定の回転角度毎にクランク信号を発生するクランクセンサと、
カム軸の所定の回転位置でカム信号を発生するカムセンサと、
前記クランクセンサからのクランク信号に基づき、前記カムセンサからのカム信号入力タイミングから、前記クランク軸が位相角算出用の基準回転位置となる基準タイミングまでの間に、前記クランク軸が回転した回転角度を、位相角として検出する位相角検出手段と、
を備えたエンジンの位相角検出装置であって、
前記位相角検出手段は、
前記クランクセンサから前記クランク信号が入力される度に、前記クランク信号が前回入力されてからの経過時間と、前記クランクセンサによる前記クランク信号の発生間隔に対応する前記クランク軸の回転角度とに基づき、前記クランク軸が所定の単位角度回転するのに要する単位回転時間を算出する単位回転時間算出手段と、
前記カム信号入力タイミングから、次に、前記クランクセンサから前記クランク信号が入力されるクランク信号入力タイミングまでの時間を、角度換算用の実回転時間として検出する実回転時間検出手段と、
前記実回転時間検出手段にて検出された実回転時間と、前記単位回転時間算出手段にて算出された単位回転時間とを用いて、前記カム信号入力タイミングから前記クランク信号入力タイミングまでの間に前記クランク軸が回転した回転角度を算出する角度換算手段と、
前記クランクセンサから入力される前記クランク信号の数をカウントすることで、前記クランク軸が、前記クランク信号の所定の複数個分の回転角度で分割される特定回転位置にあることを検出する回転位置検出手段と、
前記カム信号入力タイミングから、次に、前記回転位置検出手段にて前記クランク軸の前記特定回転位置が検出される中間タイミングまでの間に、前記クランクセンサから出力された前記クランク信号の数をカウントするカウント手段と、
前記カウント手段にてカウントされた前記クランク信号の数と、前記クランクセンサによる前記クランク信号の発生間隔に対応する前記クランク軸の回転角度とに基づき、前記クランク信号入力タイミングから前記中間タイミングまでの間に前記クランク軸が回転した回転角度を算出する第１回転角度算出手段と、
前記中間タイミングから前記基準タイミングまでの間に前記回転位置検出手段にて検出される前記特定回転位置の数を求め、当該特定回転位置の数と、前記特定回転位置にて分割される前記クランク軸の回転角度とに基づき、前記中間タイミングから前記基準タイミングまでに前記クランク軸が回転する回転角度を算出する第２回転角度算出手段と、
前記角度換算手段、前記第１回転角度算出手段、及び前記第２回転角度算出手段にて算出された回転角度を加算することで、前記位相角を算出する位相角算出手段と、
を備えたことを特徴とするエンジンの位相角検出装置。
【請求項５】
前記位相角検出手段は、コンピュータにて構成されており、
少なくとも、前記角度換算手段及び前記カウント手段としての機能は、前記コンピュータが、前記クランクセンサからのクランク信号によるクランク信号割り込み処理を実行することにより実現され、
前記第１回転角度算出手段、前記第２回転角度算出手段、及び、前記位相角算出手段としての機能は、前記コンピュータが、前記回転位置検出手段にて前記クランク軸の特定回転位置が検出される度に位相角算出処理を実行することにより実現されることを特徴とする請求項４に記載のエンジンの位相角検出装置。
【請求項６】
前記コンピュータは、前記位相角算出処理により前記位相角を算出すると、
エンジンのバルブタイミング制御装置による前記位相角の制御方向、及び、該バルブタイミング制御装置による前記位相角の可変範囲の少なくとも一方と、前記位相角の算出結果とに基づき、次回、前記カム信号入力タイミングとなり得る角度範囲を推定し、該推定結果に基づき、前記クランク信号割り込み処理及び前記位相角算出処理の次回の実行期間を設定することを特徴とする請求項５に記載のエンジンの位相角検出装置。
【請求項７】
前記コンピュータは、
前記クランク信号割り込み処理の実行期間を、前記カム信号入力タイミングから、前記中間タイミングまでの期間に設定し、
前記位相角算出処理の実行期間を、前記中間タイミングから当該位相角算出処理にて前記位相角が検出されるまでの期間に設定することを特徴とする請求項５に記載のエンジンの位相角検出装置。
【請求項８】
前記コンピュータは、
前記クランク信号割り込み処理を実行することにより、前記実回転時間検出手段としての機能も実現するように構成されると共に、
前記クランクセンサから前記クランク信号が入力されると、クランク信号割り込みフラグをセットするクランク信号入力手段と、
前記カムセンサから前記カム信号が入力されると、前記クランク信号割り込みフラグをリセットするカム信号入力手段と、
を備え、前記クランク信号割り込みフラグがセットされていて、前記クランク信号割り込み処理が実行可能になると、前記クランク信号割り込み処理を実行することを特徴とする請求項２、請求項３、請求項５〜請求項７の何れか１項に記載のエンジンの位相角検出装置。
【請求項９】
前記コンピュータは、
前記クランク信号割り込み処理を実行することにより、前記実回転時間検出手段としての機能も実現するように構成されると共に、
前記クランクセンサから前記クランク信号が入力されると、クランク信号割り込みフラグをセットするクランク信号入力手段と、
前記カムセンサから前記カム信号が入力されると、カム信号割り込みフラグをセットするカム信号入力手段と、
を備え、前記クランク割り込みフラグがセットされていて、前記クランク信号割り込み処理が実行可能になると、前記クランク信号割り込み処理を実行し、
前記カム信号割り込みフラグがセットされていて、カム信号割り込み処理が実行可能になると、当該カム信号割り込み処理を実行することにより、前記クランク信号割り込みフラグをリセットすることを特徴とする請求項２、請求項３、請求項５〜請求項７の何れか１項に記載のエンジンの位相角検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンにおけるカム軸のクランク軸に対する相対的な回転角度である位相角を検出するエンジンの位相角検出装置に関する。
【背景技術】
【０００２】
従来、エンジンの吸排気バルブの開閉タイミング（バルブタイミング）を制御する際には、カム軸のクランク軸に対する相対的な回転角度（位相角）を調整可能なＶＶＴ機構（ＶＶＴ：可変バルブタイミング（Variable Valve Timing ）の略）が利用されている。
【０００３】
そして、ＶＶＴ制御装置は、カム軸のクランク軸に対する位相角を検出し、その位相角がエンジンの運転状態等に基づき設定される目標位相角となるよう、ＶＶＴを制御する（例えば、特許文献１参照）。
【０００４】
ところで、上記位相角を検出する際には、通常、エンジンのクランク軸の所定回転角度毎にクランク信号を発生するクランクセンサと、カム軸の所定の回転角度毎にカム信号を発生するカムセンサと、が使用される。
【０００５】
そして、位相角は、図２０に例示するように、エンジンの気筒毎に検出される。
なお、図２０は、４気筒エンジンにおいて気筒＃１〜＃４毎に検出される位相角を表しており、各気筒＃１〜＃４の位相角は、以下の手順（１）〜（３）で算出される。
（１）各気筒＃１〜＃４のＶＶＴ作動範囲内にカムセンサから出力されるカム信号のエッジ時刻（有効カムエッジ時刻）と、位相角の基点となるクランク軸の基準回転位置でクランクセンサから出力されるクランク信号のエッジ時刻（基準クランクエッジ時刻）とをそれぞれ検出し、各エッジ時刻の時間差を、クランク軸が位相角相当分だけ回転するのに要する位相差時間として算出する。
（２）基準クランクエッジ時刻を位相角算出基点として、位相角算出基点に最も近い２つのクランクエッジ時刻の時間差Ｔ１から、クランク軸が所定の単位角度（例えば１℃Ａ、但し、℃Ａはクランクアングルを表す）回転するのに要する単位角度時間（１℃Ａ時間）を算出する。
（３）（１）で算出した位相差時間を、（２）で算出した単位角度時間（１℃Ａ時間）で除算することで、位相角を算出する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１３８９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、上記従来の位相角算出方法では、有効カムエッジ時刻から基準クランクエッジ時刻までの位相差時間を、基準クランクエッジ時刻とこの基準クランクエッジ時刻よりも所定回転角度前のクランクエッジ時刻との時間差Ｔ１から求めた単位角度時間（１℃Ａ時間）を用いて除算することで、位相角を算出することから、図２１に示すように、エンジンの回転変動が大きくなる運転条件下では、位相角の算出結果に、大きな誤差が生じることがあった。
【０００８】
つまり、図２１は、エンジンの始動時に、エンジンの回転速度が急上昇する場合の位相角を表しているが、この図から明らかなように、エンジン始動時には、位相角算出基点で算出される時間差Ｔ１は、算出すべき位相角全域でのクランクエッジの平均的な時間差よりも短くなってしまう。
【０００９】
また逆に、エンジンの回転速度が低下する減速時には、位相角算出基点で算出される時間差Ｔ１は、算出すべき位相角全域でのクランクエッジの平均的な時間差よりも長くなってしまう。
【００１０】
従って、この時間差Ｔ１に基づき算出される位相角は、カム軸とクランク軸との間に実際に生じる実位相角に対応しないものとなり、位相角の算出結果に誤差が生じるのである。
【００１１】
本発明は、こうした問題に鑑みなされたもので、エンジンにおけるカム軸のクランク軸に対する相対的な回転角度である位相角を検出する位相角検出装置において、エンジンの回転変動により生じる位相角の検出誤差を低減することを目的とする。
【課題を解決するための手段】
【００１２】
かかる目的を達成するためになされた請求項１に記載の位相角検出装置には、上述した従来のものと同様、クランクセンサとカムセンサとが備えられている。
そして、位相角検出手段が、カムセンサからのカム信号入力タイミングから、クランク軸が位相角算出用の基準回転位置となる基準タイミングまでの間に、クランク軸が回転した回転角度を、位相角として検出する。
【００１３】
また、位相角検出手段による位相角の検出は、以下に説明する手順で実施される。
すなわち、位相角検出手段においては、クランクセンサからクランク信号が入力される度に、単位回転時間算出手段が、クランク信号が前回入力されてからの経過時間と、クランクセンサによるクランク信号の発生間隔に対応するクランク軸の回転角度とに基づき、クランク軸が所定の単位角度回転するのに要する単位回転時間を算出する。
【００１４】
また、カムセンサからカム信号が入力されると、実回転時間検出手段が、そのカム信号入力タイミングから、次に、クランクセンサからクランク信号が入力されるクランク信号入力タイミングまでの時間を、角度換算用の実回転時間として検出する。
【００１５】
そして、角度換算手段が、実回転時間検出手段にて検出された実回転時間と、単位回転時間算出手段にて算出された単位回転時間とを用いて、カム信号入力タイミングからクランク信号入力タイミングまでの間にクランク軸が回転した回転角度を算出する。
【００１６】
また、位相角検出手段においては、回転角度算出手段が、カム信号入力タイミングから基準タイミングまでの間にクランクセンサから入力されるクランク信号の数を求め、そのクランク信号の数と、クランクセンサによるクランク信号の発生間隔に対応するクランク軸の回転角度とに基づき、クランク信号入力タイミングから基準タイミングまでにクランク軸が回転する回転角度を算出する。
【００１７】
そして、最後に、位相角算出手段が、角度換算手段及び回転角度算出手段にて算出された回転角度を加算することで、位相角を算出する。
このように請求項１に記載の位相角検出装置においては、上述した従来技術と同様、単位回転時間算出手段が、クランクセンサから２つのクランク信号が入力される時間間隔と、この時間時間に対応したクランク軸の回転角度とから、位相角検出の基準となる単位回転時間を設定する。
【００１８】
しかし、本発明では、この単位回転時間は、カムセンサからのカム信号入力タイミングから、次にクランクセンサからクランク信号が入力されるクランク信号入力タイミングまでの間のクランク軸の回転角度を算出するのに用いられ、クランク信号入力タイミングから基準タイミングまでの回転角度は、クランクセンサから所定回転角度毎に入力されるクランク信号の数に基づき算出される。
【００１９】
このため、位相角を検出する際に、エンジンが加速若しくは減速により回転変動したとしても、その回転変動の影響を受けるのは、単位回転時間から求められるカム信号入力タイミングからクランク信号入力タイミングまでの回転角度であり、回転角度算出手段にて算出されるクランク信号入力タイミングから基準タイミングまでの回転角度が、エンジンの回転変動の影響を受けることはない。
【００２０】
また、単位回転時間は、クランクセンサからクランク信号が入力される度に算出されることから、角度換算手段においては、直近のクランク信号入力タイミングで算出された単位回転時間を用いて、カム信号入力タイミングからクランク信号入力タイミングまでの回転角度を算出することができる。このため、本発明によれば、角度換算手段において算出される回転角度の誤差も小さくすることができる。
【００２１】
よって、本発明の位相角検出装置によれば、カム信号入力タイミングから基準タイミングまでの間のクランク軸の回転角度（位相角）を、従来装置に比べて、精度よく検出することができるようになり、延いては、その検出した位相角が用いられるＶＶＴ制御の制御精度を向上できる。
【００２２】
ここで、位相角検出手段は、エンジン制御装置において、クランクセンサやカムセンサからの検出信号を信号処理してエンジン制御を行うのに通常用いられるコンピュータの一機能として実現できる。
【００２３】
そして、この場合、請求項２に記載のように、少なくとも、角度換算手段、回転角度算出手段、及び、位相角算出手段としての機能は、コンピュータがクランクセンサからクランク信号を受けて実行するクランク信号割り込み処理により実現するようにすればよい。
【００２４】
つまり、このようにすれば、カム信号入力タイミングの後に実行されるクランク信号割り込み処理にて、直近のクランク信号の入力タイミングで得られた単位回転時間を用いて、角度換算手段による回転角度算出動作を行うことができ、カム信号入力タイミングからクランク信号入力タイミングまでの回転角度を正確に算出することができる。
【００２５】
また、回転角度算出手段は、クランク信号の数を連続的にカウントするようにすれば、そのカウント値から、クランク軸の回転位置を把握し、基準回転位置までの回転角度を求めることができる。
【００２６】
つまり、回転角度算出手段は、カム信号入力タイミングから基準タイミングまでの間にクランクセンサから入力されるクランク信号の数を実際にカウントすることなく、そのクランク信号の数を求めて、クランク軸の回転角度を算出できる。
【００２７】
このため、角度換算手段、回転角度算出手段、及び、位相角算出手段としての機能は、カム信号入力タイミングの後に実行されるクランク信号割り込み処理だけで実現することもできる。
【００２８】
ところで、上記のように、角度換算手段、回転角度算出手段、及び、位相角算出手段としての機能を実現するために、コンピュータに、クランク信号割り込み処理を実行させる場合、クランク信号割り込み処理はエンジンの回転に応じて繰り返し実行されることになる。
【００２９】
このため、エンジンの回転速度が高くなると、コンピュータにおけるクランク信号割り込み処理の実行頻度が多くなり、コンピュータの処理負荷が増大する。
一方、角度換算手段、回転角度算出手段、及び、位相角算出手段としての機能を実現するには、クランクセンサからクランク信号が入力される度にクランク信号割り込み処理を実行する必要はなく、カム信号入力タイミングから位相角を算出できるまでの間、クランク信号割り込み処理を実行すればよい。
【００３０】
例えば、上記のように、回転角度算出手段を、クランク信号のカウント値と基準タイミングでのカウント値（固定値）とから、カム信号入力タイミングから基準タイミングまでの間にクランクセンサから入力されるクランク信号の数を求めるように構成した場合、クランク信号割り込み処理は、カム信号入力タイミングの後に１回だけ実施すればよい。
【００３１】
このため、コンピュータの処理負荷を軽減するには、請求項３に記載のように、クランク信号割り込み処理により位相角を算出すると、コンピュータは、エンジンのバルブタイミング制御装置による位相角の制御方向、及び、そのバルブタイミング制御装置による位相角の可変範囲の少なくとも一方と、位相角の算出結果とに基づき、次回、カム信号入力タイミングとなり得る角度範囲を推定し、その推定結果に基づき、クランク信号割り込み処理の次回の実行期間を設定するよう構成するとよい。
【００３２】
つまり、本発明の位相角検出装置にて検出される位相角は、通常、バルブタイミング制御装置がエンジンの給・排気バルブの開閉タイミング（バルブタイミング）を制御するのに用いられ、バルブタイミング制御装置がバルブタイミングを制御する方向に応じて変化する。
【００３３】
従って、カムセンサによる次回のカム信号入力タイミングは、バルブタイミング制御装置によるバルブタイミング（延いては位相角）の制御方向に応じて変化する。
また、バルブタイミング制御装置による一回の制御でバルブタイミング（延いては位相角）を調整し得る位相角の可変範囲は、上述した可変バルブタイミング機構（ＶＶＴ機構）の特性で決まる。
【００３４】
そこで、請求項３に記載の位相角検出装置においては、バルブタイミング制御装置による位相角の制御方向と位相角の可変範囲との少なくとも一方と、今回検出した位相角の検出結果とに基づき、次にカムセンサからカム信号が入力されるであろう角度範囲を推定し、その推定結果から、次回のクランク信号割り込み処理の実行期間を設定するのである。
【００３５】
この結果、請求項３に記載の位相角検出装置によれば、コンピュータが角度換算手段、回転角度算出手段、及び、位相角算出手段としての機能を実現するために実施するクランク信号割り込み処理の実施頻度を抑え、コンピュータの処理負荷を軽減することができる。
【００３６】
次に、請求項４に記載の位相角検出装置においては、請求項１に記載のものと同様、クランクセンサとカムセンサとを備え、位相角検出手段が、カム信号入力タイミングから基準タイミングまでの間にクランク軸が回転した回転角度を、位相角として検出する。
【００３７】
また、位相角検出手段には、請求項１に記載のものと同様、単位回転時間算出手段、実回転時間検出手段、及び、角度換算手段が備えられている。
このため、位相角検出手段において、カム信号入力タイミングから次のクランク信号入力タイミングまでの間にクランク軸が回転した回転角度が、請求項１に記載のものと同様の手順で算出される。
【００３８】
一方、請求項４に記載の位相角検出手段には、クランクセンサから入力されるクランク信号をカウントすることで、クランク軸が、クランク信号の所定の複数個分の回転角度で分割される特定回転位置にあることを検出する回転位置検出手段が設けられている。
【００３９】
そして、カウント手段が、カム信号入力タイミングから、次に、回転位置検出手段にてクランク軸の特定回転位置が検出される中間タイミングまでの間に、クランクセンサから入力されたクランク信号の数をカウントし、第１回転角度算出手段が、そのカウントされたクランク信号の数と、クランクセンサによるクランク信号の発生間隔に対応するクランク軸の回転角度とに基づき、クランク信号入力タイミングから中間タイミングまでの間にクランク軸が回転した回転角度を算出する。
【００４０】
また、本発明では、第２回転角度算出手段が、中間タイミングから基準タイミングまでの間に回転位置検出手段にて検出される特定回転位置の数を求め、その特定回転位置の数と、特定回転位置にて分割されるクランク軸の回転角度（クランク信号複数個分の回転角度）とに基づき、中間タイミングから基準タイミングまでの間にクランク軸が回転する回転角度を算出する。
【００４１】
そして、最後に、位相角算出手段が、角度換算手段、第１回転角度算出手段、及び第２回転角度算出手段にて算出された回転角度を加算することで、位相角を算出する。
このように請求項４に記載の位相角検出装置によれば、請求項１に記載のものと同様、クランク軸が所定の単位回転角度回転するのに要する単位回転時間を、クランクセンサからクランク信号が入力される度に算出する。
【００４２】
そして、その算出した単位回転時間を用いてクランク軸の回転角度を算出するのは、カム信号入力タイミングからクランク信号入力タイミングまでの回転角度を求める角度換算手段だけであり、クランク信号入力タイミングから中間タイミングまでの間の回転角度を算出する第１回転角度算出手段、及び、中間タイミングから基準タイミングまでの間の回転角度を算出する第２回転角度算出手段では、クランクセンサから入力されるクランク信号の間隔、若しくは、そのクランク信号複数個分の間隔、に対応した一定の回転角度を基準として、クランク軸の回転角度をそれぞれ算出する。
【００４３】
この結果、本発明の位相角検出装置において、位相角算出手段が位相角を算出するのに用いる３つの回転角度のうち、エンジンの回転変動の影響を受けるのは、カム信号入力タイミングからクランク信号入力タイミングまでの回転角度であり、クランク信号入力タイミングから中間タイミングまでの回転角度、及び、中間タイミングから基準タイミングまでの回転角度が、エンジンの回転変動の影響を受けることはない。
【００４４】
よって、本発明の位相角検出装置によれば、請求項１に記載のものと同様、カム信号入力タイミングから基準タイミングまでの間のクランク軸の回転角度（位相角）を、従来装置に比べて、極めて精度よく検出することができるようになり、延いては、その検出された位相角が用いられるＶＶＴ制御の制御精度を向上できる。
【００４５】
ところで、本発明の位相角検出装置には、クランク軸が、クランク信号の所定の複数個分の回転角度で分割される回転位置にあることを検出する回転位置検出手段が設けられている。
【００４６】
これは、エンジン制御装置において、エンジンの回転速度や回転位置を検出するのに用いる回転角信号（若しくは周期）が、クランクセンサから入力されるクランク信号複数個に１回の割で生成されることがあるためである。
【００４７】
つまり、例えば、クランクセンサには、クランク軸が６℃Ａ回転する度にクランク信号を発生するものを使用し、エンジン制御装置側では、このクランク信号５個分の周期（つまり、３０℃Ａ）で、回転速度の検出等、エンジン制御用の各種制御処理を行うように構成されているものが知られている。
【００４８】
そこで、請求項４に記載の位相角検出装置では、こうしたエンジン制御装置に本発明を適用して、より効果を発揮できるように、クランクセンサからの出力信号複数個分の周期で生成される回転角信号をクランク信号として、位相角を検出するのではなく、クランクセンサから実際に出力されるクランク信号と、回転位置検出装置による検出結果（この検出結果は、クランク信号複数個分の周期で生成される回転角信号に対応する）と、を利用して、位相角を算出するようにしているのである。
【００４９】
そして、請求項４に記載の位相角検出装置によれば、エンジン制御装置で用いられる回転角信号の周期（換言すれば、回転位置検出手段による回転位置の検出周期）よりも短い周期内で、カム信号入力タイミングからクランク信号入力タイミングまでの回転角度を算出することになるので、その回転角度の算出誤差をより小さくして、エンジンの回転変動によって生じる位相角の検出誤差を低減することができる。
【００５０】
ここで、本発明の位相角検出手段は、請求項２に記載のものと同様、エンジン制御装置を構成するコンピュータの一機能として実現できる。
そして、この場合、請求項５に記載のように、少なくとも、角度換算手段及びカウント手段としての機能は、コンピュータが、クランクセンサからのクランク信号によるクランク信号割り込み処理を実行することにより実現するようにし、第１回転角度算出手段、第２回転角度算出手段、及び、位相角算出手段としての機能は、コンピュータが、回転位置検出手段にてクランク軸の特定回転位置が検出される度に位相角算出処理を実行することにより実現するようにするとよい。
【００５１】
つまり、このようにすれば、カム信号入力タイミングの後に実行されるクランク信号割り込み処理にて、直近のクランク信号の入力タイミングで得られた単位回転時間を用いて、カム信号入力タイミングからクランク信号入力タイミングまでの回転角度を正確に算出することができるだけでなく、カム信号入力タイミングから中間タイミングまでの間にクランクセンサから入力されるクランク信号をカウントすることができる。
【００５２】
また、位相角算出処理では、クランク信号割り込み処理にてカウントされたクランク信号のカウント値を用いて、カム信号入力タイミングから中間タイミングまでの間にクランク軸が回転した回転角度を算出し、更に、中間タイミングから基準タイミングまでの間にクランク軸が回転した回転角度を求め、これら各回転角度とクランク信号割り込み処理にて算出された回転角度とを加算することで、位相角を算出することができる。
【００５３】
また、中間タイミングから基準タイミングまでの間にクランク軸が回転する回転角度は、回転位置検出手段による特定回転位置の検出回数を連続的にカウントするようにすれば、そのカウント値からクランク軸の回転位置を把握し、基準回転位置までの回転角度を求めることができる。
【００５４】
つまり、第２回転角度算出手段は、カム信号入力タイミングから基準タイミングまでの間に回転位置検出手段にて特定回転位置が実際に検出された回数をカウントすることなく、中間タイミングから基準タイミングまでの間にクランク軸が回転した回転角度を算出できる。
【００５５】
このため、第１回転角度算出手段、第２回転角度算出手段、及び、位相角算出手段としての機能は、カム信号入力タイミングの後に実行される位相角算出処理だけで実現することもできる。
【００５６】
一方、角度換算手段及びカウント手段としての機能を、コンピュータが実行するクランク信号割り込み処理にて実現し、第１回転角度算出手段、第２回転角度算出手段、及び、位相角算出手段としての機能を、コンピュータが実行する位相角算出処理にて実現するには、コンピュータに対し、クランク信号割り込み処理及び位相角算出処理を所定の回転角度毎に繰り返し実行させる必要はない。
【００５７】
つまり、クランク信号割り込み処理及び位相角算出処理は、コンピュータに対し、カム信号入力タイミングから位相角を算出できるまでの間に適宜実行させることで、コンピュータの処理負荷を軽減することができる。
【００５８】
そして、このようにコンピュータの処理負荷を軽減するには、コンピュータを、請求項６に記載のように動作させるか、或いは、請求項７に記載のように動作させるとよい。
すなわち、請求項６に記載の位相角検出装置においては、コンピュータが、位相角算出処理により位相角を算出すると、エンジンのバルブタイミング制御装置による前記位相角の制御方向、及び、そのバルブタイミング制御装置による位相角の可変範囲の少なくとも一方と、位相角の算出結果とに基づき、次回、カム信号入力タイミングとなり得る角度範囲を推定し、その推定結果に基づき、クランク信号割り込み処理及び位相角算出処理の次回の実行期間を設定する。
【００５９】
このため、請求項６に記載の位相角検出装置によれば、上述した請求項３に記載のものと同様、コンピュータによるクランク信号割り込み処理及び位相角算出処理の実行頻度を抑え、コンピュータの処理負荷を軽減することができる。
【００６０】
また、請求項７に記載の位相角検出装置においては、コンピュータが、クランク信号割り込み処理の実行期間を、カム信号入力タイミングから回転位置検出手段にてクランク軸の特定回転位置が検出されるまでの期間に設定し、位相角算出処理の実行期間を、カム信号入力タイミング後に回転位置検出手段にてクランク軸の特定回転位置が検出されてから位相角算出処理にて位相角が検出されるまでの期間に設定する。
【００６１】
このため、請求項７に記載の位相角検出装置によれば、請求項６に記載の位相角検出装置のように、位相角の検出結果から次回のカム信号入力タイミングを推定することなく、実際にカムセンサからカム信号が出力されるカム信号入力タイミングや、その後、クランクセンサから出力されるクランク信号に基づき、クランク信号割り込み処理及び位相角算出処理を実行すべき実行期間を設定して、これら各割り込み処理の実行を必要最小限に抑えることができる。
【００６２】
ところで、上述した請求項２、３、或いは、請求項５〜７に記載の位相角検出装置のように、コンピュータにクランク信号割り込み処理を実行させる場合には、通常、クランクセンサからクランク信号が入力された際にクランク信号割り込みフラグをセットするクランク信号入力手段、をコンピュータに設けることになる。
【００６３】
そして、コンピュータは、クランク信号割り込みフラグがセットされていて、他の処理によりクランク信号割り込み処理が禁止されていないときに、割り込み処理を実施することになるが、例えば、クランク信号割り込み処理を許可する優先度が他の処理に比べて低い場合には、クランク信号割り込みフラグがセットされてクランク信号割り込み処理の実施待機中に、コンピュータにて、カム信号が入力されたと判断されて、カム信号入力タイミングが記憶されることがある。
【００６４】
このような場合、コンピュータが、クランク信号割り込み処理を実行することにより、実回転時間検出手段としての機能を実現するように構成されていると、このクランク信号割り込み処理にてコンピュータが認識しているカム信号入力タイミングとクランク信号入力タイミングとの前後関係が逆になり、クランク信号割り込み処理にて、実回転時間（延いては、この実回転時間に基づき算出されるクランク軸の回転時間）を正確に算出することができなくなる。
【００６５】
従って、上述した請求項２、３、或いは、請求項５〜７に記載の位相角検出装置において、コンピュータが、クランク信号割り込み処理にて、実回転時間検出手段としての機能を実現するように構成されている場合には、カム信号入力タイミングで、クランク信号割り込み処理を実施させるクランク信号割り込みフラグがセットされているときには、クランク信号割り込みフラグを強制的にリセットして、カム信号入力タイミング後、カム信号入力タイミングの前に入力されたクランク信号によるクランク信号割り込み処理が実行されるのを禁止するとよい。
【００６６】
そして、このためには、請求項８に記載のように、コンピュータに、クランクセンサからクランク信号が入力されるとクランク信号割り込みフラグをセットするクランク信号入力手段とは別に、カムセンサからカム信号が入力されるとクランク信号割り込みフラグをリセットするカム信号入力手段を設けるようにするとよい。
【００６７】
つまり、このようにすれば、カムセンサからカム信号が入力された際にクランク信号割り込みフラグが強制的にリセットされることから、コンピュータが実行するクランク信号割り込み処理を、カムセンサからカム信号が入力された後に入力されたクランク信号に基づくクランク信号割り込み処理に制限することができ、クランク信号割り込み処理にて、実回転時間（延いては、この実回転時間に基づき算出されるクランク軸の回転時間）が誤検出されるのを防止できる。
【００６８】
また、請求項９に記載のように、上述した請求項８に記載のカム信号入力手段を、カムセンサからカム信号が入力されると、カム信号割り込みフラグをセットするように構成し、カム信号入力手段によりカム信号割り込みフラグがセットされていて、カム信号割り込み処理が実行可能になると、コンピュータが、このカム信号割り込み処理を実行することにより、クランク信号割り込みフラグをリセットするようにしてもよい。
【００６９】
そして、このようにすれば、カム信号割り込み処理に比べて、クランク信号割り込み処理の優先度が低い場合に、コンピュータが、カム信号入力タイミング後、その前にセットされたクランク信号割り込みフラグに従いクランク信号割り込み処理が実行されるのを禁止することができるようになり、請求項８に記載のものと同様の効果を得ることができる。
【図面の簡単な説明】
【００７０】
【図１】第１実施形態の位相角検出装置全体の構成を表す概略構成図である。
【図２】第１実施形態の位相角算出動作を説明するタイムチャートである。
【図３】第１実施形態のマイコンの構成を表すブロック図である。
【図４】第１実施形態のカムエッジ割り込み処理及びクランクエッジ割り込み処理を表すフローチャートである。
【図５】第１実施形態の位相角算出処理を表すフローチャートである。
【図６】第１実施形態の変形例１の位相角算出動作を説明するタイムチャートである。
【図７】図６の位相角算出動作を実現する位相角算出処理を表すフローチャートである。
【図８】カムエッジ割り込み処理に対するクランクエッジ割り込み処理の遅延を説明するタイムチャートである。
【図９】クランクエッジ割り込み処理の遅延を防止可能なマイコンの構成例を表すブロック図である。
【図１０】クランクエッジ割り込み処理の遅延を防止可能なカムエッジ割り込み処理を表すフローチャートである。
【図１１】クランクエッジ割り込み処理の遅延防止動作を説明するタイムチャートである。
【図１２】第２実施形態の位相角算出動作を説明するタイムチャートである。
【図１３】第２実施形態のカムエッジ割り込み処理を表すフローチャートである。
【図１４】第２実施形態のクランクエッジ割り込み処理を表すフローチャートである。
【図１５】第２実施形態の有効カムエッジ検出後処理を表すフローチャートである。
【図１６】第２実施形態の３０℃Ａタイミング処理を表すフローチャートである。
【図１７】第２実施形態の変形例１の位相角算出動作を説明するタイムチャートである。
【図１８】第２実施形態の変形例２の位相角算出動作を説明するタイムチャートである。
【図１９】第２実施形態の変形例２のマイコンの構成を表すブロック図である。
【図２０】従来の位相角算出手順を説明するタイムチャートである。
【図２１】従来の位相角算出手順によって生じる問題を説明するタイムチャートである。
【発明を実施するための形態】
【００７１】
以下に本発明の実施形態を図面と共に説明する。
［第１実施形態］
図１に示すように、本実施形態の位相角検出装置は、エンジン２におけるクランク軸４に対するカム軸６の相対的な回転角度を、位相角として検出するものであり、クランクセンサ１４と、カムセンサ１６と、エンジン制御装置１８を構成するマイクロコンピュータ（マイコン）２０と、により構成される。
【００７２】
なお、本実施形態では、エンジン２は４気筒エンジンであり、位相角は、エンジン２の気筒＃１〜＃４毎に検出される。
ここで、クランクセンサ１４は、エンジン２の回転速度やクランク軸４の回転角度を検出するためのものであり、図２に示すように、クランク軸４の所定の回転角度毎（本実施形態では３０℃Ａ毎）にクランク信号（パルス）を発生する。
【００７３】
また、カムセンサ１６は、クランク軸４にタイミングチェーン８を介して連結されてクランク軸４の２回転に１回転の割で回転する吸・排気弁用の２つのカム軸の内、吸気弁側のカム軸６に設けられおり、カム軸６の所定の回転角度毎（本実施形態ではカム軸６の４５度毎、換言すればクランク軸４の９０℃Ａ毎）にカム信号（パルス）を発生する（図２参照）。
【００７４】
なお、このカム信号は、エンジン２の気筒＃１〜＃４毎にカム軸６の回転位置を検出するのに用いられ、本実施形態では、エンジン２が４気筒であるため、カムセンサ１６から出力されるカム信号は、２回に１回の割で有効となる。
【００７５】
また、カムセンサ１６が設けられたカム軸６には、ＶＶＴ機構１０が設けられている。ＶＶＴ機構１０は、クランク軸４に対するカム軸６の相対的な回転角度（つまり位相角）を調整することでバルブタイミングを制御するためのものであり、エンジン制御装置１８は、本実施形態の位相角検出装置にて検出される位相角がエンジン２の運転状態に適した目標位相角となるようＶＶＴ機構１０を駆動制御することで、バルブタイミングを制御する。
【００７６】
なお、ＶＶＴ機構１０やその駆動制御系の構成については、従来より周知であるので、詳細な説明は省略する。
次に、エンジン制御装置１８内のマイコン２０は、図３に示すように、ＣＰＵ２２、ＲＯＭ２４、ＲＡＭ２６を中心に構成され、ＣＰＵ２２がＲＯＭ２４に書き込まれた各種プログラムに従い、エンジン制御のための各種制御処理を実行する周知のものである。
【００７７】
そして、マイコン２０には、位相角検出用の回路として、クランクセンサ１４及びカムセンサ１６からの検出信号（クランク信号、カム信号）をそれぞれ取り込み、割り込みコントローラ２８に対し割り込み要求を発生するタイマモジュール３０、４０が設けられている。
【００７８】
タイマモジュール３０、４０は、それぞれ、クランク信号及びカム信号のパルスの有効エッジを設定する有効エッジレジスタ３１、４１と、各信号の有効エッジを検出した時刻（クランクエッジ時刻、有効カムエッジ時刻）をキャプチャするエッジ時刻レジスタ３２、４２と、各信号の有効エッジ（クランクエッジ、有効カムエッジ）の検出の有無を示す割り込みフラグレジスタ３３、４３と、ＣＰＵ２２から割り込み許可が設定される割り込み許可設定レジスタ３４、４４と、割り込みフラグレジスタ３３、４３の出力と割り込み許可設定レジスタ３４、４４の出力との論理積を、割り込みコントローラ２８に出力するアンドゲート３５、４５と、から構成されている。
【００７９】
そして、ＣＰＵ２２は、位相角検出のための処理として、割り込みコントローラ２８が上記角ＡＮＤＯゲート３５、４５からの出力に応じて発生する割り込み信号に従い、カムエッジ割り込み処理及びクランクエッジ割り込み処理を実行する。
【００８０】
以下、このようにＣＰＵ２２で実行されるカムエッジ割り込み処理、及び、クランクエッジ割り込み処理について説明する。
図４（ａ）に示すように、カムエッジ割り込み処理では、Ｓ１１０（Ｓはステップを表す）にて、カムセンサ１６から入力されるカム信号の有効エッジ（有効カムエッジ）が検出されたことを表す有効カムエッジ検出信号をオン状態に設定し、処理を一旦終了する。
【００８１】
一方、図４（ｂ）に示すように、クランクエッジ割り込み処理では、まず、Ｓ２１０にてクランクカウンタをインクリメントし、続く２２０にて、タイマモジュール３０からクランクエッジ時刻Ｔｉを取得する。
【００８２】
なお、Ｓ２１０では、図２に示すように、クランク軸４の２回転（７２０℃Ａ、換言すればカム軸６の１回転）を表す値「２３」を最大値として、クランクエッジ毎に、クランクカウンタを値「０」から値「２３」までの範囲内で順次カウントアップする。この結果、クランクカウンタの値は、カム軸６の回転位置を表す値となる。
【００８３】
次に、Ｓ２３０では、当該クランクエッジ割り込み処理を前回実施した際に取得したクランクエッジ時刻Ｔi-1 をＲＡＭ２６から読み込み、続くＳ２４０にて、その読み込んだクランクエッジ時刻Ｔi-1 と、Ｓ２２０で今回読み込んだクランクエッジ時刻Ｔｉとの時間差Ｔ２（Ｔ２＝Ｔｉ−（Ｔi-1 ）、図２参照）を算出する。
【００８４】
また、続くＳ２５０では、Ｓ２４０で算出した時間差Ｔ２を、隣接するクランクエッジ間のクランク軸４の回転角度（本実施形態では３０℃Ａ、以下、クランクエッジ間角度という）で除算することで、クランク軸４が単位回転角度（本実施形態では１℃Ａ）回転するのに要する単位回転時間（本実施形態では１℃Ａ時間）を算出する。
【００８５】
そして、Ｓ２６０では、次回、上記手順で１℃Ａ時間を算出できるようにするため、ＲＡＭ２６内のクランクエッジ時刻Ｔi-1 を、Ｓ２１０にて今回取得したクランクエッジ時刻Ｔｉに置き換える。
【００８６】
このように、クランクエッジ割り込み処理では、タイマモジュール３０でクランクエッジが検出される度にＳ２１０〜Ｓ２６０の処理を実行することで、前回検出されたクランク信号のエッジからの経過時間である時間差Ｔ２に基づき、１℃Ａ時間を算出する。
【００８７】
そして、Ｓ２１０〜Ｓ２６０による１℃Ａ時間算出処理が終了すると、Ｓ２７０に移行して、位相角算出処理を実行し、当該クランクエッジ割り込み処理を終了する。
次に、Ｓ２７０の位相角算出処理は、図５に示す手順で実行される。
【００８８】
すなわち、位相角算出処理では、まずＳ３１０にて、有効カムエッジ検出信号がオン状態であるか否かを判断することにより、クランクエッジ割り込み処理を前回実行してから今回実行するまでの間にタイマモジュール４０にて有効カムエッジが検出されたか否かを判断する。
【００８９】
そして、有効カムエッジ検出信号がオフ状態であれば、Ｓ３２０にて、タイマモジュール３０、４０のエッジ時刻レジスタ３２、４２に記憶されたクランクエッジ時刻及び有効カムエッジ時刻を初期値０に設定し、当該位相角算出処理を終了する。
【００９０】
一方、Ｓ３１０にて、有効カムエッジ検出信号がオン状態であると判断されると、Ｓ３３０に移行して、クランクカウンタの値を読み出し、続くＳ３４０にて、その読み出したクランクカウンタの値から、有効カムエッジは、ＶＶＴ機構１０により特定気筒（＃１〜＃４の何れか）のバルブタイミングを制御可能なＶＶＴ作動範囲内に検出されたか否か（換言すれば、有効カムエッジはＶＶＴカムエッジであるか否か）を判断する。
【００９１】
そして、有効カムエッジが、ＶＶＴ作動範囲内に検出されたＶＶＴカムエッジでなければ、上述したＳ３２０に移行し、有効カムエッジがＶＶＴカムエッジであれば、Ｓ３５０に移行する。
【００９２】
Ｓ３５０では、タイマモジュール３０、４０のエッジ時刻レジスタ３２、４２から、クランクエッジ時刻及び有効カムエッジ時刻をそれぞれ読み出すと共に、Ｓ２５０で算出した１℃Ａ時間を読み出す。
【００９３】
そして、続くＳ３６０では、Ｓ３５０で読み出したクランクエッジ時刻と有効カムエッジ時刻との差を、実回転時間△Ｔｉｍとして算出し、その算出した実回転時間△Ｔｉｍを１℃Ａ時間で除算することで、有効カムエッジ時刻から次のクランクエッジ時刻までの間に回転したクランク軸４の回転角度△Ａｎｇ（図２参照）を算出する。
【００９４】
また次に、Ｓ３７０では、Ｓ３３０で読み出したクランクカウンタの値と、予め各気筒＃１〜＃４のＶＶＴ作動範囲後のクランクエッジとなるよう設定されている位相角算出基点でのクランクカウンタの値（位相角算出基点カウント値）と、クランクエッジ間角度（本実施形態では３０℃Ａ）とに基づき、クランク軸４が今回検出されたクランクエッジの回転位置から次の位相角算出基点まで回転する際の回転角度α（図２参照、但し、α＝（位相角算出基点カウント値−クランクカウンタ）×クランクエッジ間角度）を算出すると共に、その算出した回転角度αとＳ３６０で算出した回転角度△Ａｎｇとを加算することで、位相角を算出する。
【００９５】
そして、このようにＳ３７０にて位相角を算出すると、Ｓ３８０に移行して、有効カムエッジ検出信号をオフ状態に切り換え、当該位相角算出処理を終了する。
以上説明したように、本実施形態の位相角検出装置においては、有効カムエッジ時刻から次のクランクエッジ時刻までのクランク軸４の実回転時間△Ｔｉｍを、その期間と重複するクランクエッジ間の時間差Ｔ２と回転角度（３０℃Ａ）とから算出した単位回転時間（１℃Ａ時間）を用いて、クランク軸４の回転角度△Ａｎｇに変換すると共に、クランクエッジ時刻から位相角算出基点までクランク軸４が回転するのに要する回転角度αを、クランクカウンタの値に基づき算出し、これら２つの回転角度△Ａｎｇ及びαを加算することで、位相角を算出する。
【００９６】
このため、本実施形態の位相角検出装置によれば、位相角を検出する際に、エンジンが加速若しくは減速により回転変動したとしても、その回転変動の影響を受けるのは、有効カムエッジ時刻から次のクランクエッジ時刻までの回転角度△Ａｎｇだけであり、有効カムエッジ時刻の次のクランクエッジ時刻から位相角算出基点までの回転角度αが、エンジンの回転変動の影響を受けることはない。
【００９７】
よって、本実施形態の位相角検出装置によれば、従来の位相角検出装置に比べて、位相角の検出精度を向上することができ、延いては、位相角検出装置により検出された位相角に基づき実行されるＶＶＴ制御の制御精度を向上できる。
【００９８】
また、単位回転時間（１℃Ａ時間）は、クランク軸４の実回転時間△Ｔｉｍと重複するクランクエッジ間の時間差Ｔ２に基づき算出されるので、実回転時間△Ｔｉｍから回転角度△Ａｎｇを正確に算出することができ、これによっても位相角の検出精度を向上できる。
【００９９】
なお、本実施形態の説明において、有効カムエッジ時刻は、特許請求の範囲に記載のカム信号入力タイミングに相当し、クランクエッジ時刻は、特許請求の範囲に記載のクランク信号入力タイミングに相当し、位相角算出基点は、特許請求の範囲に記載の基準タイミングに相当する。
【０１００】
また、本実施形態においては、エンジン制御装置１８内のマイコン２０が、本発明の位相角検出手段に相当し、本発明において、位相角検出手段を構成する単位回転時間算出手段、実回転時間検出手段、角度換算手段、回転角度算出手段、及び、位相角算出手段としての機能は、マイコン２０（詳しくはＣＰＵ２２）が実行する演算処理（換言すればプログラム）にて実現される。
【０１０１】
具体的には、単位回転時間算出手段としての機能は、Ｓ２２０〜Ｓ２６０の演算処理にて実現され、実回転時間検出手段及び角度換算手段としての機能は、図５のＳ３６０の演算処理で実現され、回転角度算出手段及び位相角算出手段としての機能は、図５のＳ３７０の演算処理で実現される。
【０１０２】
なお、本実施形態では、位相角検出手段としての機能は、全てクランクエッジ割り込み処理にて実現されるものとして説明したが、単位回転時間算出手段及び実回転時間検出手段としての機能は、必ずしもマイコン２０のＣＰＵ２２によるソフトウェア処理にて実現する必要はなく、タイマモジュール３０、４０に、直接、クランクエッジ間、若しくは、有効カムエッジ−クランクエッジ間のインターバル時間を計時するタイマ機能を持たせ、そのタイマ機能によって、単位回転時間算出手段、実回転時間検出手段としての機能を実現するようにしてもよい。
（変形例１）
ところで、第１実施形態では、図５に示した位相角算出処理は、クランクエッジ割り込み処理の一部として、タイマモジュール３０にて有効クランクエッジが検出される度に実行するものとして説明したが、このようにするとマイコン２０の処理負荷が増大し、場合によっては、エンジン制御装置１８による他のエンジン制御に影響を与えることも考えられる。
【０１０３】
一方、位相角算出処理は、カムエッジ割り込み処理にて有効カムエッジ検出信号がオン状態に設定された後、位相角を検出できるまでの間、クランクエッジ割り込みにて実施するようにすれば、第１実施形態と同様に位相角を検出できる。
【０１０４】
そして、このように位相角算出処理の実行を制限するには、タイマモジュール４０にて有効カムエッジが検出される有効カムエッジ時刻を推定できればよい。
そこで、本変形例１では、図６に示すように、例えば、有効カムエッジ時刻の次のクランクエッジ時刻Ｂで実行される位相角算出処理にて、位相角が検出されると、その位相角から、タイマモジュール４０にて次に有効カムエッジが検出されるであろうカムエッジ推定作動範囲を求め、このカムエッジ推定作動範囲から、次回位相角算出処理を実施すべき期間を設定して、その設定した期間まで、位相角算出処理の実行を禁止する。
【０１０５】
つまり、位相角検出処理で検出される位相角は、エンジン制御装置１８がＶＶＴ制御を実施するのに用いられ、そのＶＶＴ制御で次回の位相角を制御可能な範囲は、ＶＶＴ機構１０やそのアクチュエータの特性により決まる。
【０１０６】
このため、今回算出した位相角と位相角の制御可能範囲とに基づき、次回の位相角算出基点よりも手前で入力される有効カムエッジの入力範囲を、図６にＳ１，Ｓ２で示すカムエッジ推定作動範囲として推定できる。
【０１０７】
また、次回の位相角（換言すれば次回の有効カムエッジ時刻）は、ＶＶＴ制御によって変化するので、ＶＶＴ制御による制御パラメータから位相角の制御方向を取得すれば、次回の有効カムエッジ時刻の変化方向を推定でき、その変化方向からカムエッジ推定作動範囲を、Ｓ１又はＳ２として設定できる。
【０１０８】
そこで、本変形例１では、ＶＶＴ制御による位相角の制御可能範囲と位相角の制御方向との何れか一方、若しくは、その両方を用いて、図６に示すカムエッジ推定作動範囲Ｓ１又はＳ２（若しくは、その両方）を推定し、その推定したカムエッジ推定作動範囲Ｓ１、Ｓ２から、次回、有効カムエッジ時刻の後にクランク信号が入力される期間を推定して、その期間内に位相角算出処理が実行されるよう、次回位相角算出処理を実行すべき位相角算出タイミングを設定するのである。
【０１０９】
なお、図６に示すＡ′、Ｂ′、及び、Ｂ″、Ｃ″は、前回の位相角の算出結果に基づき設定された位相角算出タイミングであり、位相角算出処理にて位相角が算出されると、その後、設定された位相角算出タイミングまで、位相角算出処理の実行が禁止される。
【０１１０】
そして、図６に示す本変形例１の動作を実現するには、図７に例示するように、位相角算出処理において、Ｓ３８０にて有効カムエッジ検出信号をオフ状態に設定した後、Ｓ３９０の演算タイミング推定処理を実行することで、上述した手順で次回の位相角算出タイミングＡ′、Ｂ′或いはＢ″、Ｃ″を設定し、位相角算出処理の開始時には、Ｓ３００にて、今回の位相角算出処理の開始タイミングは、前回Ｓ３９０にて設定した位相角算出タイミングであるか否かを判断して、位相角算出タイミングでなければ位相角算出処理を終了するようにすればよい。
（変形例２）
次に、第１実施形態では、クランクエッジ割り込み処理にて実行される位相角算出処理のＳ３６０にて、有効カムエッジ時刻から次のクランクエッジ時刻までのクランク軸４の実回転時間△Ｔｉｍを求め、その間の回転角度△Ａｎｇを算出することから、マイコン２０が、カムエッジ割り込み処理、及び、クランクエッジ割り込み処理を、各エッジの検出順に実行する必要がある。
【０１１１】
しかし、例えば、割り込みコントローラ２８が、クランク信号割り込み処理をカム信号割り込み処理よりも優先的に実行するように設定されている場合、図８に示すように、クランク信号割り込み処理及びカム信号割り込み処理が、他のエンジン制御のための割り込み禁止処理等によって一時的に待機状態になり、その後、割り込み禁止処理による割り込み禁止が解除された際に、割り込みコントローラ２８が、カム信号割り込み処理をクランク信号割り込み処理よりも優先して実行させることがある。
【０１１２】
そして、この場合、カム信号割り込み処理の後に実行されるクランク信号割り込み処理では、クランクエッジ時刻よりも有効カムエッジ時刻の方が後になるので、位相角算出処理のＳ３６０において、実回転時間△Ｔｉｍ、延いては、回転角度△Ａｎｇを、正確に算出することができず、Ｓ３７０にて算出される位相角に誤差が生じることになる。
【０１１３】
従って、このような問題を防止するには、有効カムエッジ時刻でカムエッジ割り込みフラグをセットしたとき、若しくは、このカムエッジ割り込みフラグに従いカムエッジ割り込み処理を実行するときに、クランクエッジ割り込みフラグがセットされていれば、このフラグを強制的にリセットして、カムエッジ割り込み処理実行後、有効カムエッジ時刻よりも前のクランクエッジによるクランクエッジ割り込み処理が実行されるのを禁止するとよい。
【０１１４】
そして、このためには、図９に示すように、マイコン２０内に、タイマモジュール４０の割り込みフラグレジスタ４３にカムエッジ割り込みフラグがセット（値１）されている場合に、スイッチ５０を介して、タイマモジュール３０の割り込みフラグレジスタ３３内のクランクエッジ割り込みフラグを強制的にリセット（値０）する、強制リセット経路を形成するとよい。
【０１１５】
なお、スイッチ５０は、ＣＰＵ２２からの指令に従い、強制リセット経路を形成するか否かを切り換えるためのスイッチであり、ＣＰＵ２２からの指令によりこのスイッチ５０をオン状態にしておけば、強制リセット経路が形成されて、カムエッジ割り込みフラグがセットされているときに、クランクエッジ割り込みフラグを強制的にリセットさせることができる。
【０１１６】
また、このようにクランクエッジ割り込みフラグを強制的にリセットするには、図１０に示すように、カムエッジ割り込み処理において、Ｓ１１０にて有効カムエッジ検出信号をオン状態にした後、Ｓ１２０に移行して、タイマモジュール３０内の割り込みフラグレジスタ３３の値を読み出し、クランクエッジ割り込みフラグがセットされているか否を判定し、クランクエッジ割り込みフラグがセット（値１）されていれば、Ｓ１３０にて、タイマモジュール３０内のクランクエッジ割り込みフラグを強制的にリセット（値０）するようにしてもよい。
【０１１７】
そして、カムエッジ割り込み処理を図１０に示す手順で実行するようにした場合、クランクエッジ割り込みフラグが値１にセットされた状態で、カムエッジ割り込み処理が実行されると、クランクエッジ割り込みフラグが値０にリセットされるので、カムエッジ割り込み処理の実行後に、その処理に対応した有効カムエッジ時刻よりも前に入力されたクランク信号に基づくクランクエッジ割り込み処理が実施されることはなく、その割り込み処理による位相角算出処理の実行が禁止され、その後、クランク信号が入力された際に、位相角算出処理が実行されることになる。
【０１１８】
そして、この位相角算出処理では、有効カムエッジ時刻と、クランクエッジ時刻との順番が正常になるので、実回転時間△Ｔｉｍ、延いては、回転角度△Ａｎｇを、正確に求めることができ、この回転角度△Ａｎｇを用いて、位相角を精度よく算出できる。
【０１１９】
なお、本変形例２では、マイコン２０内のタイマモジュール３０及びタイマモジュール４０が、それぞれ、請求項８若しくは請求項９に記載のクランク信号入力手段及びカム信号入力手段に相当する。
【０１２０】
また、本変形例２のように、クランクエッジ割り込み処理の実行を制限すると、図４のＳ２１０〜Ｓ２６０において実行されるクランクカウンタのカウントアップ及び単位回転時間（１℃Ａ時間）の検出動作も制限されることになる。
【０１２１】
このため、本変形例２では、マイコン２０内に、クランク信号を実際にカウントするカウンタ、及び、クランク信号が入力される度にクランクエッジ間のインターバル時間の計時を開始し、前回の計時結果をレジスタ等に一時的に記憶するタイマ、を別途設けることで、図４のＳ２１０〜Ｓ２６０において実行される処理と同様の機能を、これらカウンタ及びタイマにて実現するようにされている。
【０１２２】
従って、本変形例２では、クランクエッジ割り込み処理にて実行されるのは、図５若しくは図７に例示した位相角算出処理だけである。
［第２実施形態］
ところで、上記第１実施形態では、クランクセンサ１４は、クランク軸４の３０℃Ａ毎にクランク信号を発生し、クランクエッジ割り込み処理は、クランク信号の入力に同期して実行されるものとして説明した。
【０１２３】
しかし、エンジン制御装置には、例えば、クランクセンサ１４からは、クランク軸４の６℃Ａ毎にクランク信号を発生させ、クランク信号の入力回路（上記実施形態ではタイマモジュール３０）では、このクランク信号の５回入力に対し１回の割でクランク軸４が３０℃Ａ回転したことを表す回転角信号を生成し、この回転角信号に従い、割り込み処理を実行して、エンジン回転速度等を検出するようにされたものも知られている。
【０１２４】
そして、エンジン制御装置１８がこのように構成されている場合、クランク信号の入力回路内で生成される回転角信号を、上記実施形態のクランク信号として見なし、上述した位相角算出用のクランクエッジ割り込み処理を実行するようにすれば、上記実施形態と同様の効果を得ることができる。
【０１２５】
しかし、この場合、実際のクランク信号は、回転角信号よりも周期の短い６℃Ａ間隔で入力されることから、クランクセンサ１４から実際に入力されるクランク信号のエッジ間隔内で実回転時間△Ｔｉｍを検出するようにすれば、回転角度△Ａｎｇ、延いては、位相角を、より精度よく求めることができる。
【０１２６】
そこで、第２実施形態では、図１２に示すように、クランクセンサ１４から入力されるクランク信号のエッジを６℃Ａクランクエッジ、クランク信号の５個入力に１回の割で３０℃Ａ毎に入力されるクランク信号のエッジを３０℃Ａクランクエッジとし、ＣＰＵ２２にて、これら各エッジ時刻（６℃Ａクランクエッジ時刻、３０℃Ａクランクエッジ時刻）毎に図１４〜図１６に示すクランクエッジ割り込み処理を実行することで、位相角を算出する。
【０１２７】
つまり、本実施形態では、有効カムエッジ時刻から次の６℃Ａクランクエッジ時刻までのクランク軸４の回転角度△Ａｎｇ、この６℃Ａクランクエッジ時刻から次の３０℃Ａクランクエッジ時刻までのクランク軸４の回転角度β、及び、この３０℃Ａクランクエッジ時刻から位相角算出基点までのクランク軸４の回転角度α、をそれぞれ算出し、これら各回転角度△Ａｎｇ、β、αを加算することで、有効カムエッジ時刻から位相角算出基点までのクランク軸４の回転角度（つまり位相角）を算出する。
【０１２８】
なお、第２実施形態の位相角検出装置の構成は、クランクセンサ１４から入力されるクランク信号の間隔が６℃Ａである点が第１実施形態とは異なるものの、それ以外は第１実施形態と同じであり、位相角算出用のマイコン２０にも、図３に示した第１実施形態と同様の構成のものが使用される。
【０１２９】
また、図１４〜図１６に示すクランクエッジ割り込み処理を実行するに当たって、カムエッジ割り込み処理では、図１３に示すように、Ｓ１１０で有効カムエッジ検出信号をオン状態にした後、Ｓ１５０にて、回転角度△Ａｎｇの演算状態を表す△Ａｎｇ演算ステータスを「未完了」として設定し、有効カムエッジ割り込み処理を終了する。
【０１３０】
以下、図１４〜図１６に示すクランクエッジ割り込み処理について説明する。
まず、図１４は、６℃Ａクランクエッジ毎に実行されるクランクエッジ割り込み処理を表している。そして、この処理が開始されると、まずＳ４１０にて、クランク軸４が１℃Ａ回転するのに要する単位回転時間（１℃Ａ時間）を算出する。
【０１３１】
この処理は、第１実施形態のクランクエッジ割り込み処理におけるＳ２２０〜Ｓ２６０と同様の手順で実行される。つまり、Ｓ４１０では、６℃Ａクランクエッジ間の経過時間Ｔ３（図１２参照）を算出して、その算出結果を６℃Ａクランクエッジ間の回転角度（つまり６℃Ａ）で除算することで、クランク軸４の単位回転時間である１℃Ａ時間を算出する。
【０１３２】
次に、Ｓ４２０では、有効カムエッジ検出信号がオン状態であるか否かを判断する。そして、有効カムエッジ検出信号がオン状態であり、クランクエッジ割り込み処理を前回実行してから今回実行するまでの間にタイマモジュール４０にて有効カムエッジが検出されていれば、Ｓ４３０に移行して、図１５に示す有効カムエッジ検出後処理を実行した後、Ｓ４４０に移行し、逆に、有効カムエッジ検出信号がオン状態でなければ、そのままＳ４４０に移行する。
【０１３３】
Ｓ４４０では、３０℃Ａタイミングカウンタをインクリメント（＋１）する。そして、続くＳ４５０では、Ｓ４４０にてインクリメントされた３０℃Ａタイミングカウンタの値が「５」になったか否かを判断し、３０℃Ａタイミングカウンタの値が「５」になっていなければ、そのまま当該クランクエッジ割り込み処理を終了する。
【０１３４】
一方、Ｓ４５０にて、３０℃Ａタイミングカウンタの値が「５」になっていると判断されると、Ｓ４６０に移行して、図１６に示す３０℃Ａタイミング処理を実行し、続くＳ４７０にて、３０℃Ａタイミングカウンタの値を初期値０に設定した後、当該クランクエッジ割り込み処理を終了する。
【０１３５】
なお、Ｓ４４０、Ｓ４５０、Ｓ４７０の処理は、３０℃Ａタイミングカウンタを６℃Ａ毎に順にカウントアップして行き、その値が「５」になる度に、３０℃Ａタイミングカウンタを値０にリセットすることで、クランク軸４が３０℃Ａ回転する度に、その旨を検知して、３０℃Ａタイミング処理を実行させるための処理である。
【０１３６】
次に、図１５に示すように、Ｓ４３０で実行される有効カムエッジ検出後処理では、まずＳ５１０にて、カムエッジ割り込み処理にて未完了と設定される△Ａｎｇ演算ステータスは「未完了」であるか否かを判断する。
【０１３７】
そして、△Ａｎｇ演算ステータスが「未完了」であれば、Ｓ５２０に移行し、△Ａｎｇ演算ステータスが「未完了」でなければ、Ｓ５５０に移行して、β演算用カウンタをインクリメントした後、当該有効カムエッジ検出後処理を終了する。
【０１３８】
次にＳ５２０では、タイマモジュール３０、４０のエッジ時刻レジスタ３２、４２から、６℃Ａクランクエッジ時刻及び有効カムエッジ時刻をそれぞれ読み出すと共に、Ｓ４１０の１℃時間算出処理にて算出した１℃Ａ時間を読み出す。
【０１３９】
そして、続くＳ５３０では、Ｓ５２０で読み出した６℃Ａクランクエッジ時刻と有効カムエッジ時刻との差を、実回転時間△Ｔｉｍとして算出し、その算出した実回転時間△Ｔｉｍを１℃Ａ時間で除算することで、有効カムエッジ時刻から次の６℃Ａクランクエッジ時刻までの間に回転したクランク軸４の回転角度△Ａｎｇ（図１２参照）を算出する。
【０１４０】
また次に、Ｓ５４０では、Ｓ５３０にて回転角度△Ａｎｇが算出されたので、△Ａｎｇ演算ステータスを「完了」に変更し、Ｓ５５０に移行する。そして、Ｓ５５０では、上記の通り、β演算用カウンタをインクリメントし、当該有効カムエッジ検出後処理を終了する。
【０１４１】
次に、図１６に示すように、Ｓ４６０で実行される３０℃Ａタイミング処理では、まずＳ６１０にて、クランクカウンタをインクリメントし、続くＳ６２０にて、有効カムエッジ検出信号がオン状態であるか否かを判断する。
【０１４２】
そして、有効カムエッジ検出信号がオン状態でなければ、Ｓ６３０にて、タイマモジュール３０、４０のエッジ時刻レジスタ３２、４２に記憶されたクランクエッジ時刻及び有効カムエッジ時刻を初期値０に設定し、当該位相角算出処理を終了する。
【０１４３】
一方、Ｓ６２０にて、有効カムエッジ検出信号がオン状態であると判断されると、Ｓ６４０に移行して、クランクカウンタの値を読み出し、続くＳ６５０にて、その読み出したクランクカウンタの値から、有効カムエッジは、ＶＶＴ機構１０により特定気筒（＃１〜＃４の何れか）のバルブタイミングを制御可能なＶＶＴ作動範囲内に検出されたか否かを判断する。
【０１４４】
そして、有効カムエッジが、ＶＶＴ作動範囲内に検出されたＶＶＴカムエッジでなければ、上述したＳ６３０に移行し、有効カムエッジがＶＶＴカムエッジであれば、Ｓ６６０に移行する。
【０１４５】
Ｓ６６０では、Ｓ５３０にて算出された回転角度△Ａｎｇ、有効カムエッジ検出後にＳ５５０にてインクリメントされるβ演算用カウント値、及び、現在のＶＶＴ作動範囲に対応した位相角算出基点カウント値を読み出し、次式を用いて、位相角を算出する。
【０１４６】
位相角＝△Ａｎｇ＋（β演算用カウンタ−１）×６℃Ａ
＋（位相角算出基点カウント値−クランクカウンタ）×３０℃Ａ
つまり、Ｓ６６０では、β演算用カウンタから値１を減じることで、有効カムエッジ時刻の次の６℃Ａクランクエッジ時刻から、次の３０℃Ａクランクエッジ時刻までの間の６℃Ａ区間の数を求め、この値に６℃Ａを乗じることで、有効カムエッジ時刻の次の６℃Ａクランクエッジ時刻から次の３０℃Ａクランクエッジ時刻までの間のクランク軸４の回転角度β（図１２参照）を算出する。
【０１４７】
また、Ｓ６６０では、位相角算出基点カウント値からクランクカウンタの値を減じることで、有効カムエッジ時刻の次の３０℃Ａクランクエッジ時刻から、位相角算出基点までの間に存在する３０℃Ａ区間の数を求め、この値に３０℃Ａを乗じることで、有効カムエッジ時刻の次の３０℃Ａクランクエッジ時刻から位相角算出基点までの間のクランク軸４の回転角度α（図１２参照）を算出する。
【０１４８】
そして、最後に、上記各回転角度△Ａｎｇ、β、αを加算することで、位相角を算出する。
次に、Ｓ６６０にて位相角を算出すると、Ｓ６７０に移行して、β演算用カウンタを初期値０に設定すると共に、有効カムエッジ検出信号をオフ状態に切り換え、当該３０℃Ａタイミング処理を終了する。
【０１４９】
以上説明したように、本実施形態の位相角検出装置によれば、クランク軸４の６℃Ａ毎に入力されるクランク信号のエッジ時刻（６℃Ａクランクエッジ時刻）を利用して、有効カムエッジ時刻から次の６℃Ａクランクエッジ時刻までに回転するクランク軸４の回転時間△Ａｎｇを算出し、その６℃Ａクランクエッジ時刻から位相角算出基点までの回転角度は、クランク軸４の６℃Ａ毎及び３０℃Ａ毎のクランクエッジを利用して、回転角度β、αとして算出する。
【０１５０】
そして、これら各回転角度△Ａｎｇ、β、αの内、エンジンの回転変動の影響を受けるのは、６℃Ａクランクエッジ間の時間差Ｔ３と回転角度（６℃Ａ）とから算出した単位回転時間（１℃Ａ時間）に基づき算出される回転角度△Ａｎｇとなるが、この回転角度△Ａｎｇは６℃Ａ以下であるので、第１実施形態で算出される回転角度△Ａｎｇに比べて、エンジンの回転変動の影響を受け難くなる。
【０１５１】
よって、本実施形態の位相角検出装置によれば、第１実施形態の位相角検出装置に比べて、位相角の検出精度をより向上することができる。
なお、本実施形態の説明において、６℃Ａクランクエッジ時刻は、特許請求の範囲に記載のクランク信号入力タイミングに相当し、３０℃Ａクランクエッジ時刻は、特許請求の範囲に記載の特定回転位置に対応するエッジ時刻であり、このうち、有効カムエッジ時刻の次の３０℃Ａクランクエッジ時刻は、特許請求の範囲に記載の中間タイミングに相当する。
【０１５２】
また、本実施形態において、本発明の単位回転時間算出手段、実回転時間検出手段、角度換算手段、回転位置検出手段、カウント手段、第１回転角度算出手段、第２回転角度算出手段、位相角算出手段としての機能は、マイコン２０（詳しくはＣＰＵ２２）が実行する演算処理（換言すればプログラム）にて実現される。
【０１５３】
具体的には、単位回転時間算出手段としての機能は、Ｓ４１０の演算処理にて実現され、回転位置検出手段としての機能は、Ｓ４５０の判定処理にて実現され、実回転時間検出手段及び角度換算手段としての機能は、Ｓ５３０の演算処理にて実現され、カウント手段としての機能は、Ｓ５５０の演算処理にて実現され、第１回転角度算出手段、第２回転角度算出手段、及び位相角算出手段としての機能は、Ｓ６６０の演算処理にて実現される。
（変形例１）
ところで、第２実施形態では、クランク軸４の６℃Ａ毎にクランクエッジ割り込み処理を実行することから、第１実施形態に比べて、更に、マイコン２０の処理負荷が増大することになる。
【０１５４】
このため、第１実施形態の変形例１と同様、位相角算出処理としての３０℃Ａタイミング処理にて、位相角を検出した際、その検出した位相角と、ＶＶＴ制御による位相角の制御可能範囲及び位相角の制御方向の少なくとも一方とを用いて、カムエッジ推定作動範囲を推定し、その推定したカムエッジ作動範囲から、図１７に示すように、次回の６℃Ａクランクエッジ割り込み処理の実行期間（６℃Ａ処理実行区間）を設定するようにするとよい。
【０１５５】
具体的には、カムエッジ推定作動範囲から、次回、有効カムエッジが検出されてから次に３０℃Ａクランクエッジ時刻となるであろう期間を推定して、その期間を、６℃Ａ処理実行区間として設定し、その６℃Ａ処理実行区間までの間は、６℃Ａクランクエッジ割り込み処理の実行を禁止するようにするとよい。
【０１５６】
なお、このためには、３０℃Ａタイミング処理でＳ６６０（若しくはＳ６７０）の処理を実行した後、上記の手順で６℃Ａ処理実行区間を設定する処理を実行し、クランクエッジ割り込み処理の開始時（つまりＳ４１０の処理を実行する前）に、現在、６℃Ａ処理実行区間内にあるか否かを判断して、６℃Ａ処理実行区間内になければ、６℃Ａクランクエッジ割り込み処理を終了するようにすればよい。
【０１５７】
また、このようにすると、３０℃Ａタイミング処理も制限されることから、３０℃Ａ毎にクランクカウンタのカウント値を更新できなくなるが、例えば、クランク信号が５回入力される度にカウントアップするカウンタをマイコン２０内に別途設けることで、クランクカウンタとしての機能を実現できる。
（変形例２）
一方、このように６℃Ａ毎のクランクエッジ割り込み処理の実行を制限して、マイコン２０の処理負荷を低減するには、例えば、図１８に示すように、６℃Ａ処理実行区間を、ＶＶＴ作動範囲内に有効カムエッジが検出された有効カムエッジ時刻から、次の３０℃Ａクランクエッジ時刻までの区間に制限するようにしてもよい。
【０１５８】
具体的には、図１９に示すように、クランク信号入力手段であるタイマモジュール３０内に、クランク信号の入力回数を設定値まで繰り返しカウントアップする信号入力回数レジスタ３６を設け、アンドゲート３５から割り込みコントローラ２８には、この信号入力回数レジスタ３６の値が設置値に達したときに割り込み要求が出力されるように構成する。
【０１５９】
また、図１８に示すように、信号入力回数レジスタ３６の設定値には、通常、値「５」が設定され、タイマモジュール４０にて有効カムエッジが検出されて、その検出タイミングがＶＶＴ作動範囲内であるとき、値「１」が設定され、その後、３０℃Ａタイミング処理で位相角が算出されて値「５」に戻されるまで、値「１」が保持されるようにする。
【０１６０】
このようにすれば、６℃Ａ毎のクランク割り込み処理の実行区間を、信号入力回数レジスタ３６の設定値が値「１」である期間（換言すれば、有効カムエッジ時刻から、次の３０℃Ａクランクエッジ時刻で３０℃Ａタイミング処理が実行されて位相角が算出されるまでの期間）に制限することができる。
【０１６１】
なお、このようにマイコン２０をこのように構成した場合、有効カムエッジ時刻の前のクランク信号の入力タイミング（つまりクランクエッジ時刻）を記憶できないことから、図１９に示すように、マイコン２０内には、前回のクランクエッジ時刻を保持する６℃Ａ時刻レジスタ５２を設ける必要はある。
【０１６２】
以上、本発明の２つの実施形態及び各実施形態の変形例について説明したが、本発明は上記実施形態及び変形例に限定されるものではなく、本発明の要旨を逸脱しない範囲内にて種々の態様をとることができる。
【０１６３】
例えば、上記第２実施形態では、カムエッジ割り込み処理、及び、クランクエッジ割り込み処理の実行タイミングによる位相差の誤検出については、説明を省略したが、第２実施形態のものでも、割り込みコントローラ２８が、クランク信号割り込み処理をカム信号割り込み処理よりも優先的に実行するように設定されていれば、第１実施形態と同様と同様の問題が生じる。
【０１６４】
このため、第２実施形態において、この問題を防止するには、第１実施形態の変形例２と同様、マイコン２０内に、カムエッジ割り込みフラグがセット（値１）されている場合に、クランクエッジ割り込みフラグを強制的にリセット（値０）する、強制リセット経路を形成するか、或いは、カムエッジ割り込み処理において、有効カムエッジ検出信号をオン状態にした後、タイマモジュール３０内のクランクエッジ割り込みフラグを強制的にリセット（値０）する処理を実行するように構成するとよい。
【０１６５】
また、上記実施形態では、クランクセンサ１４からのクランク信号の発生間隔は、３０℃Ａ毎、若しくは６℃Ａ毎、であるとして説明したが、この回転角度は、エンジンに応じて適宜設定すればよく、本発明は、これ以外の回転角度であっても、上記実施形態と同様に適用できる。
【符号の説明】
【０１６６】
２…エンジン、４…クランク軸、６…カム軸、８…タイミングチェーン、１０…ＶＶＴ機構、１４…クランクセンサ、１６…カムセンサ、１８…エンジン制御装置、２０…マイコン、２２…ＣＰＵ、２４…ＲＯＭ、２６…ＲＡＭ、２８…割り込みコントローラ、３０，４０…タイマモジュール、３１，４１…有効エッジレジスタ、３２，４２…エッジ時刻レジスタ、３３，４３…割り込みフラグレジスタ、３４，４４…割り込み許可設定レジスタ、３５，４５…アンドゲート、３６…信号入力回数レジスタ、５０…スイッチ、５２…６℃Ａ時刻レジスタ。
【図１】
0005532066.tif 000002
【図２】
0005532066.tif 000003
【図３】
0005532066.tif 000004
【図４】
0005532066.tif 000005
【図５】
0005532066.tif 000006
【図６】
0005532066.tif 000007
【図７】
0005532066.tif 000008
【図８】
0005532066.tif 000009
【図９】
0005532066.tif 000010
【図１０】
0005532066.tif 000011
【図１１】
0005532066.tif 000012
【図１２】
0005532066.tif 000013
【図１３】
0005532066.tif 000014
【図１４】
0005532066.tif 000015
【図１５】
0005532066.tif 000016
【図１６】
0005532066.tif 000017
【図１７】
0005532066.tif 000018
【図１８】
0005532066.tif 000019
【図１９】
0005532066.tif 000020
【図２０】
0005532066.tif 000021
【図２１】
0005532066.tif 000022