(57)【特許請求の範囲】
【請求項１】
エンジンに、少なくとも２本のカム軸が備えられている場合において、
入力経路から入力される入力信号の信号レベルが特定方向に変化してから、次に信号レベルが特定方向に変化するまでの時間間隔を計測する間隔計測手段と、
エンジンにおけるクランク軸が第１の角度回転する毎に信号レベルが特定方向に変化するクランク信号を、前記入力経路に対して入力させる信号入力手段と、
前記間隔計測手段による計測値を第１の逓倍数で割って、こうして得られた値を１周期とする逓倍クロックを生成する逓倍クロック生成手段と、
該逓倍クロック生成手段により生成される逓倍クロックを受けて動作するカウンタであって、エンジンの１サイクルにおけるクランク軸の回転位置を、前記第１の角度を前記第１の逓倍数で割ってなる分解能で示した場合における各位置に、そのカウント値それぞれが対応づけられているアングルカウンタと、
該アングルカウンタのカウント値に基づいて特定されるクランク軸の回転位置に応じて、エンジンの制御に関するイベントを発生させるイベント発生手段と、を備えたエンジン制御装置において、
前記入力経路からの前記クランク信号の入力状態に基づいて、該クランク信号が異常であるか否かを繰り返し判定する異常判定手段と、
前記カム軸それぞれの回転に応じて信号レベルが変化する第１カム信号および第２カム信号に基づいて、該信号それぞれの信号レベルが変化するタイミングで信号レベルが特定方向に変化する信号であって、その特定方向の変化が、前記カム軸それぞれが前記第２の角度回転する毎に発生する規則的な変化点と、該変化点に対応する回転位置から前記カム軸それぞれが前記第２の角度未満の角度回転した際に発生する不規則な変化点と、において発生する信号を、前記カム信号として生成するカム信号生成手段と、
変化点判定手段と、
計測継続手段とを備えており、
前記信号入力手段は、前記異常判定手段により前記クランク信号が異常でないと判定されたら、前記クランク信号を前記入力経路に対して入力させる一方、前記異常判定手段により前記クランク信号が異常であると判定されたら、エンジンにおけるカム軸が第２の角度（第１の角度と異なる角度）回転する毎に信号レベルが変化するカム信号を、前記クランク信号の代わりに前記入力経路に対して入力させて、
前記逓倍クロック生成手段は、前記異常判定手段により前記クランク信号が異常でないと判定されたら、前記間隔計測手段による計測値を第１の逓倍数で割って、こうして得られた値を１周期とする逓倍クロックを生成する一方、前記異常判定手段により前記クランク信号が異常であると判定されたら、前記間隔計測手段による計測値を式「（第２の角度×第１の逓倍数）／第１の角度」から求められる第２の逓倍数で割って、こうして得られた時間を１周期とする逓倍クロックを生成するとともに、前記カム信号生成手段により生成されるカム信号を、前記クランク信号の代わりに前記入力経路に対して入力させ、
前記変化点判定手段は、前記信号入力手段が前記入力経路に前記カム信号を入力させている状況において、該カム信号に特定方向への信号レベルの変化が発生した場合に、該発生した時点における前記第１，第２カム信号それぞれの状態に基づき、前記発生した変化点が、前記不規則な変化点の直前に発生する変化点であるか否かを判定し、
前記計測継続手段は、該変化点判定手段により、前記不規則な変化点の直前に発生する変化点であると判定された場合、前記不規則な変化点の直前に発生する変化点でないと判定されるまでの間、前記間隔計測手段による計測を継続させるように構成されている
ことを特徴とするエンジン制御装置。
【請求項２】
前記計測継続手段は、前記変化点判定手段により前記不規則な変化点の直前に発生する変化点でないと判定されるまでの間、前記信号入力手段による前記入力経路への信号の入力を遮断することにより、前記間隔計測手段による計測を継続させる
ことを特徴とする請求項１に記載のエンジン制御装置。
【請求項３】
前記クランク信号が、前記クランク軸が前記第１の角度回転する毎に信号レベルが特定方向に変化することを原則とし、前記クランク軸の回転位置が特定位置に到達したときに限り、次に信号レベルが特定方向に変化するまでに必要な回転角度が前記第１の角度の所定整数倍になる信号である場合において、
前記逓倍クロック生成手段により生成される逓倍クロックにおいて発生する立ち上がりエッジまたは立ち下がりエッジをカウントするカウンタであって、前記入力経路から入力される入力信号の信号レベルが特定方向に変化してから、次に信号レベルが特定方向に変化するまでの前記エッジをカウントするエッジカウンタと、
前記異常判定手段により前記クランク信号が異常でないと判定されている状況において、前記エッジカウンタによるカウント値が、前記クランク軸の回転位置が特定位置に到達したときにカウントされうる値となった際に、前記間隔計測手段による計測値を、該計測値を前記所定整数で割った値に修正する計測値修正手段と、を備えており、
前記イベント発生手段は、前記異常判定手段により前記クランク信号が異常であると判定された以降、前記エッジカウンタによるカウント値それぞれが、前記カム信号の信号レベルが特定方向に変化した以降における前記カム軸の回転角度に対応するものとし、該回転角度に基づいてエンジンの制御に関する１以上のイベントを順次発生させる、ように構成されている
ことを特徴とする請求項１または２のいずれかに記載のエンジン制御装置。
【請求項４】
前記異常判定手段により前記クランク信号が異常であると判定された以降、前記入力経路から入力される入力信号の信号レベルが特定方向に変化してから、前記イベント発生手段が発生させるべきイベント全てを発生させる前に、次に入力信号の信号レベルが特定方向に変化した場合、前記イベント発生手段により発生させられなかったイベントそれぞれを順次発生させるイベント補助手段を備えている
ことを特徴とする請求項３に記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両のエンジン制御装置に関するものである。
【背景技術】
【０００２】
従来から、車両のエンジン制御装置においては、クランク軸の回転に応じて所定角度毎に信号レベルが特定方向に変化するクランク信号をクランク軸センサから入力し、このクランク信号から特定されるクランク軸の回転位置（クランク位置）を特定している。そして、その位置が所望の回転位置となったときに、燃料噴射や点火などのイベントを発生させるように構成されている（例えば、特許文献１，２参照）。
【０００３】
ただ、この種のエンジン制御装置においては、クランク信号に基づいてイベントを発生させているため、例えば信号線の断線などのトラブルによりクランク信号が正常に入力されなくなると、クランク軸の回転位置が特定できなくなる。その結果、適切にエンジンの制御を継続することができなくなってしまう。
【０００４】
この問題に対しては、従来、エンジンにおけるカム軸の回転に応じて信号レベルが変化するカム信号をカム軸センサから入力し、このカム信号に基づいてイベントを発生させる構成とすることで対応していた。
【０００５】
つまり、クランク信号の異常が検知された場合に、カム信号に基づいてイベントを発生させることができるように処理系統を切り替えることで、エンジンの制御を継続して車両の退避走行を実現することができるようにしていた。
【特許文献１】特開２００１−２００７４７号公報
【特許文献２】特開２００１−２１４７９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、カム信号は、その信号レベルが特定方向に変化するまでに必要な軸の回転角度がクランク信号とは異なっているため、そのままエンジンの制御に用いることができない。そうすると、上述した退避走行を実現するためには独立した処理系統を２系統設ける必要があり、このようなことは、構成（特にソフトウェア構成）が大幅に増加することになるため望ましくない。
【０００７】
本願発明は、このような課題を解決するためになされたものであり、その目的は、構成の大幅な増加を伴うことなく、クランク信号が正常に入力されなくなった場合における退避走行を実現するための技術を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため請求項１に記載のエンジン制御装置では、まず、間隔計測手段が、入力経路から入力される入力信号の信号レベルが特定方向に変化してから、次に信号レベルが特定方向に変化するまでの時間間隔を計測する。ここで、入力経路に対する信号の入力は、信号入力手段により行われる。具体的にいうと、信号入力手段は、エンジンにおけるクランク軸が第１の角度回転する毎に信号レベルが特定方向に変化するクランク信号を、入力経路に対して入力させる。
【０００９】
また、逓倍クロック生成手段が、間隔計測手段による計測値を第１の逓倍数で割って、こうして得られた値を１周期とする逓倍クロックを生成している。こうして逓倍クロック生成手段により生成される逓倍クロックを受けてアングルカウンタが動作する。このアングルカウンタは、エンジンの１サイクルにおけるクランク軸の回転位置を、第１の角度を第１の逓倍数で割ってなる分解能で示した場合における各位置に、そのカウント値それぞれが対応づけられたカウンタである。そして、イベント発生手段が、アングルカウンタのカウント値に基づいて特定されるクランク軸の回転位置に応じて、エンジンの制御に関するイベントを発生させる。
【００１０】
さらに、入力経路からのクランク信号の入力状態に基づいて、このクランク信号が異常であるか否かを繰り返し判定する異常判定手段を備えている。
信号入力手段は、この異常判定手段によりクランク信号が異常でないと判定されたら、クランク信号を前記入力経路に対して入力させる一方、クランク信号が異常であると判定されたら、エンジンにおけるカム軸が第２の角度（第１の角度と異なる角度）回転する毎に信号レベルが変化するカム信号を、クランク信号の代わりに前記入力経路に対して入力させる。また、クロック出力手段は、異常判定手段によりクランク信号が異常でないと判定されたら、間隔計測手段による計測値を第１の逓倍数で割って、こうして得られた値を１周期とする逓倍クロックを生成する一方、クランク信号が異常であると判定されたら、間隔計測手段による計測値を式「（第２の角度×第１の逓倍数）／第１の角度」から求められる第２の逓倍数で割って、こうして得られた時間を１周期とする逓倍クロックを生成する。
【００１１】
このように構成されたエンジン制御装置では、クランク信号が異常になると、入力経路からの入力信号がクランク信号からカム信号に変更されると共に、逓倍クロックを生成するために用いられる逓倍数が第１の逓倍数から第２の逓倍数に変更される。
【００１２】
これにより、間隔計測手段に計測される時間間隔は、クランク信号において信号レベルが特定方向に変化するまでに要するクランク軸の回転角度（第１の角度）に応じた値から、カム信号において信号レベルが特定方向に変化するまでに要するカム軸の回転角度（第２の角度）に応じた値に変更される。そして、逓倍クロック生成手段により生成される逓倍クロックの周期についても、第１の角度に応じた時間間隔を第１の逓倍数で割った値から、第２の角度に応じた時間間隔を第２の逓倍数で割った値に変更される。
【００１３】
ここで、「第２の逓倍数」は、式「（第２の角度×第１の逓倍数）／第１の角度」から求められた値である。この式は、「第１の角度／第１の逓倍数＝第２の角度／第２の逓倍数」が成立するような第２の逓倍数を求める式ということができ、このことは、入力信号および逓倍数の変更前後で角度と逓倍数との比が変化しないことを意味する。
【００１４】
つまり、逓倍クロック生成手段により生成される逓倍クロックの周期を、第２の角度に応じた時間間隔（計測値）を第２の逓倍数で割った値に変更しても、角度と逓倍数との比が変わらないことから、実際の周期もその変更前後で変化しない。逆にいえば、逓倍数を第２の逓倍数に変更することで、逓倍クロック生成手段により生成される逓倍クロックの周期が変わらないようにしているということができる。
【００１５】
そうすると、アングルカウンタを動作させるための逓倍クロックの周期が、入力信号および逓倍数の変更前後で変化しないことになるため、逓倍クロックに基づいて動作するアングルカウンタ，および，そのカウント値で動作するイベント発生手段に関しては、その変更前後において処理を切り替えるなどといった特別な処理が必要ない。
【００１６】
これにより、本エンジン制御装置では、クランク信号が異常になった場合に、入力信号および逓倍数を変更するだけで、カム信号に基づいてエンジンの制御を継続させることができる。これにより、その変更後に逓倍クロック生成手段，アングルカウンタおよびイベント発生手段が特別な処理を行うように構成しなくてもよくなる結果、大幅な構成の増加を伴うことなく、クランク信号が正常に入力されなくなった場合における退避走行を実現することができる。
【００１７】
また、上記構成では、逓倍クロック生成手段により生成される逓倍クロックの周期が、第１の角度に応じた時間間隔を第１の逓倍数で割った値から、第２の角度に応じた時間間隔を第２の逓倍数で割った値へと変更されるように構成されている。この第２の逓倍数は、上述した式で示されるように、第１の角度，第１の逓倍数および第２の角度から求められる値であるため、第２の逓倍数として、他のパラメータに応じた適切な値を用いることができる。
【００１８】
なお、この構成においては、間隔計測手段による計測値を第１の逓倍数または第２の逓倍数で割ってなる値を算出する手段を別に備えておき、逓倍クロック出力手段が、この手段により算出された値を１周期とするように構成してもよい。
【００１９】
また、上述した逓倍クロック出力手段は、クランク信号が異常であると判定された以降、逓倍クロックを生成する際に用いる逓倍数を第２の逓倍数に変更するが、クランク信号が異常でないと判定されたときに、逓倍クロックを生成する際に用いる逓倍数を第１の逓倍数に変更し直すように構成してもよい。
【００２０】
ところで、上述した信号入力手段がクランク信号の代わりに入力回路に入力させるカム信号は、その信号レベルの特定方向への変化が、カム軸が第２の角度回転する毎に発生する規則的な変化点のみで発生するものであれば、その信号をそのままカム信号として用いることに問題はない。
【００２１】
しかし、カム信号における信号レベルの特定方向への変化が、上述した規則的な変化点だけでなく、この変化点に対応する回転位置からカム軸が第２の角度未満の角度回転した際に発生する不規則な変化点においても発生する場合、間隔計測手段による計測を、不規則な変化点で終了させないようにすることが望ましい。それは、不規則な変化点で間隔計測手段による計測を終了させると、カム軸が第２の角度回転し終わる前の計測値（時間間隔）に基づいて周期の短い逓倍クロックが生成されてしまう結果、アングルカウンタのカウント値とクランク軸の回転位置との対応関係が崩れて適切なタイミングでイベントを発生させることができなくなるからである。
【００２２】
そこで、エンジンに、少なくとも２ 本のカム軸が備えられている場合であれば、上記エンジン制御装置を、請求項１に記載のエンジン制御装置のような構成とすることが考えられる。
【００２３】
このエンジン制御装置は、カム信号生成手段が、カム軸それぞれの回転に応じて信号レベルが変化する第１カム信号および第２カム信号に基づいてカム信号を生成する。ここでいう「カム信号」とは、第１カム信号および第２カム信号に基づいて、該信号それぞれの信号レベルが変化するタイミングで信号レベルが特定方向に変化する信号であって、その特定方向の変化が、前記カム軸それぞれが前記第２の角度回転する毎に発生する規則的な変化点と、該変化点に対応する回転位置から前記カム軸それぞれが前記第２の角度未満の角度回転した際に発生する不規則な変化点と、において発生する信号である。
【００２４】
また、異常判定手段によりクランク信号が異常であると判定された以降、信号入力手段は、カム信号生成手段により生成されるカム信号を、クランク信号の代わりに入力経路に対して入力させる。
【００２５】
さらに、信号入力手段が入力経路にカム信号を入力させている状況において、このカム信号に特定方向への信号レベルの変化が発生した場合、変化点判定手段が、この時点における第１，第２カム信号それぞれの状態に基づき、前記発生した変化点が、不規則な変化点の直前に発生する変化点であるか否かを判定する。
【００２６】
そして、変化点判定手段により、不規則な変化点の直前に発生する変化点であると判定された場合、不規則な変化点の直前に発生する変化点でないと判定されるまでの間、計測継続手段が、間隔計測手段による計測を継続させる。
【００２７】
このように構成すれば、第１，第２カム信号における信号レベルの特定方向への変化が、規則的な変化点と不規則な変化点とにおいて発生する場合であっても、間隔計測手段による計測を不規則な変化点で終了させないようにすることができる。これにより、カム軸が第２の角度回転し終わる前の計測値（時間間隔）に基づいて周期の短い逓倍クロックが生成されてしまうことを防止することができる。
【００２８】
また、この構成においては、カム信号における規則的な変化点の到来する間隔を、エンジンの１サイクルにおいて発生させるべきイベントと同じ角度間隔となるように構成しておけば、カム信号に基づく退避走行時においても、正常時と同じ角度間隔でのイベントの発生を実現することができるようになる。
【００２９】
なお、この上述した変化点判定手段が判定を行う際に参照する「第１，第２カム信号それぞれの状態」とは、例えば、信号レベル，信号レベルに発生するエッジの方向（立ち上がりまたは立ち下がり）などのことである。
【００３０】
また、この構成において、計測継続手段は、間隔計測手段による計測を継続させる手段であるが、この計測を継続させるための具体的な構成については特に限定されない。
例えば、請求項２に記載のエンジン制御装置のように構成することが考えられる。
【００３１】
このエンジン制御装置において、計測継続手段は、変化点判定手段により不規則な変化点の直前に発生する変化点でないと判定されるまでの間、信号入力手段による入力経路への信号の入力を遮断することにより、間隔計測手段による計測を継続させる。
【００３２】
このように構成すれば、変化点判定手段により不規則な変化点の直前に発生する変化点でないと判定されるまでの間、入力経路に対して入力信号が入力されないようにすることで、間隔計測手段による計測を継続させることができる。このように、入力経路に対する入力信号の入力を遮断していることから、間隔計測手段からみた入力信号は、規則的な変化点でのみ信号レベルが特定方向に変化する信号となる。そのため、間隔計測手段を含めた各構成に対して何ら特別な処理を行わせることなく、間隔計測手段による計測の継続を実現することができる。
【００３３】
また、上述したクランク信号は、原則、クランク軸が第１の角度回転する毎に信号レベルが特定方向に変化する信号である。ただ、通常は、クランク軸の回転位置を特定するために、その回転位置が特定位置に到達したときに限り、次に信号レベルが特定方向に変化するまでに必要な回転角度が第１の角度の所定整数倍になる。そして、このように整数倍となっている区間（いわゆる欠け歯の期間）においては、間隔計測手段による大きな計測値に基づいて周期の長い逓倍クロックが生成されてしまう不都合を回避するために、その計測値を修正する構成とされている。
【００３４】
具体的には、下記のような構成である。まず、逓倍クロック生成手段により生成される逓倍クロックにおいて発生する立ち上がりエッジまたは立ち下がりエッジをカウントするエッジカウンタによって、入力経路から入力される入力信号の信号レベルが特定方向に変化してから、次に信号レベルが特定方向に変化するまでのエッジをカウントする。そして、このエッジカウンタによるカウント値が、クランク軸の回転位置が特定位置に到達したときにカウントされうる値となった場合には、計測値修正手段が、間隔計測手段による計測値を、この計測値を所定整数で割った値に修正する。
【００３５】
ただ、このエッジカウンタは、上述したとおりクランク信号に存在する欠け歯の期間に起因する不都合を回避するために設けられたものである。そのため、入力信号がカム信号に変更された場合、エッジのカウントはしていても、通常、そのカウント値がエンジンの制御に利用されることはない。
【００３６】
そこで、このエッジカウンタを、カム信号に基づく退避走行時において有効利用するために、例えば、請求項３に記載のエンジン制御装置のように構成することが考えられる。
このエンジン制御装置においては、異常判定手段により前記クランク信号が異常であると判定された以降、エッジカウンタによるカウント値それぞれが、カム信号の信号レベルが特定方向に変化した以降におけるカム軸の回転角度に対応するものとし、イベント発生手段が、その回転角度に基づいてエンジンの制御に関する１以上のイベントを順次発生させる。
【００３７】
このように構成すれば、カム信号に基づく退避走行時においても、エッジカウンタを有効利用することができる。
なお、入力信号がカム信号とされている状況において、エッジカウンタのカウント値は、その信号レベルが特定方向に変化するまでの間における逓倍クロックのエッジ数を示すものである。つまり、その値は、カム信号の信号レベルが特定方向に変化した以降におけるカム軸の回転位置に対応するものとなる。そのため、カム信号の信号レベルが特定方向に変化した以降、そのカウント値が、イベントを発生させるべき回転位置に対応する値に到達したタイミングで、イベントを発生させるように構成すればよい。
【００３８】
また、この構成において、カム信号に基づく退避走行時に、その信号レベルが特定方向に変化した以降の所定タイミング（所定の回転角度だけ回転したタイミング）でイベントを発生させることを考えると、エンジンの回転数が急激に上昇するなどといった事態が発生した場合は、当然そのタイミングを早めなければならない。
【００３９】
ここで、カム信号の信号レベルが特定方向に変化するまでに要する期間は、クランク信号における期間よりも大幅に長くなるように構成されていることが一般的であるため、クランク信号でエンジン制御を実施している場合と比べて、上記のような事態の発生確率が著しく高くなる。そして、このような事態が発生した場合には、次にカム信号の信号レベルが特定方向に変化するタイミングが、イベントを発生させるべきタイミングよりも先に到来する恐れがあり、この場合、本来発生させるべきイベントを発生させることができなくなってしまう。
【００４０】
そこで、このように、本来発生させるべきイベントを発生させることができるようにするために、例えば、請求呼４に記載のエンジン制御装置のように構成することが考えられる。
【００４１】
このエンジン制御装置では、異常判定手段によりクランク信号が異常であると判定された以降、入力経路から入力される入力信号の信号レベルが特定方向に変化してから、イベント発生手段が発生させるべきイベント全てを発生させる前に、次に入力信号の信号レベルが特定方向に変化した場合、イベント補助手段が、イベント発生手段により発生させられなかったイベントそれぞれを順次発生させる。
【００４２】
このように構成すれば、カム信号の信号レベルが特定方向に変化するまでの間に、本来発生させるべきイベントの発生が行われていなくても、それ以降に、不足していたイベントを順次発生させることができる。
【００４３】
なお、この構成におけるイベント補助手段は、イベント発生手段により発生させられなかったイベントそれぞれを順次発生させる手段であり、その発生方法については特に限定されない。例えば、入力信号の信号レベルが特定方向に変化した際、その時点において本来発生させるべきであったイベントがある場合に、それらイベントを順番に発生させることとすればよい。
【発明を実施するための最良の形態】
【００４４】
以下に本発明の実施形態を図面と共に説明する。
（１）全体構成
エンジン制御装置（以下、「ＥＣＵ」という）１は、図１に示すように、ＥＣＵ１外部から入力されるクランク信号，第１カム信号，第２カム信号などの信号を入力する入力回路１０，ＥＣＵ１外部へ各種信号を出力する出力回路２０，入力回路１０から入力される信号に基づいてエンジンを制御するマイクロコンピュータ（以降、「マイコン」という）３０などで構成される。なお、本実施形態においては、６気筒（第１〜第６気筒）からなるエンジンを制御する構成について説明する。
【００４５】
上述したクランク信号は、クランク軸センサ（図示されない）から出力されてくる信号であって、エンジンにおけるクランク軸の回転に伴ってパルス状に信号レベルが変化する信号である。また、第１カム信号は、第１カム軸センサ（図示されない）から出力されてくる信号であって、エンジンの備える第１，第２カム軸のうち、第１カム軸の回転に伴って信号レベルが変化する信号である。そして、第２カム信号は、第２カム軸センサ（図示されない）から出力されてくる信号であって、上記第２カム軸の回転に伴って信号レベルが変化する信号である。
【００４６】
ここで、これら信号の詳細を図２に基づいて説明する。
まず、クランク信号は、クランク軸が単位角度Δθ°ＣＡ（本実施形態においては６°ＣＡ（ＣＡ：クランクアングル））回転する毎に信号レベルがパルス状に変化する。ただし、クランク軸の回転位置が３６０°ＣＡ毎に設定された特定位置に到達した場合に限り、次にクランク信号の信号レベルが変化するまでの回転角が単位角度Δθ°ＣＡのｋ倍（本実施形態では、ｋ＝３）だけ長くなる。つまり、クランク信号には、クランク軸の回転位置が特定位置以外であれば、クランク軸が単位角度Δθ°ＣＡ回転する毎に、パルス状に信号レベルが変化する有効なエッジ（以降、「有効エッジ」という）が発生する。そして、クランク軸の回転位置が特定位置となったら、単位角度Δθ毎の有効エッジがｋ―１個だけ発生しなくなる。これにより、クランク軸の回転位置が特定位置となった場合には、有効エッジの発生間隔がｋ倍の長さとなる。なお、以降、クランク信号において有効エッジの間隔が単位角度のｋ倍となる領域を「欠け歯」という。
【００４７】
また、このクランク信号においては、所定のクランク角度（本実施形態においては、７２０°ＣＡ／気筒数６＝１２０°ＣＡ）毎に発生する有効エッジが、それぞれエンジンにおける気筒の上死点に対応づけられている（＃１，＃５，＃３，＃６，＃２，＃４ＴＤＣ）。これら上死点のうち、第１気筒の上死点（＃１ＴＤＣ）に対応する有効エッジから、所定のクランク角度（本実施形態においては１８°ＣＡ）だけ前に発生する有効エッジが、クランク信号の基準位置（図２における「０」の位置）に対応づけられている。
【００４８】
なお、本実施形態においては、基準位置に対応する有効エッジから１０８°ＣＡだけ後に発生する有効エッジ，および，この有効エッジから更に３６０°ＣＡだけ後に発生する有効エッジそれぞれが、上述した「特定位置」として対応づけられている。つまり、これら有効エッジそれぞれから単位角度のｋ倍となる領域それぞれが「欠け歯」となっている。
【００４９】
次に、第１カム信号は、クランク信号の基準位置より所定のクランク角度（本実施形態では１０５°ＣＡ）だけ前のクランク位置で信号レベルがＨレベルとなった以降、第１カム軸が２４０°ＣＡ，２４０°ＣＡ，２１０°ＣＡ，３０°ＣＡと回転する毎に、その信号レベルがＨレベルからＬレベルまたはＬレベルからＨレベルへと変化する信号である。
【００５０】
そして、第２カム信号は、クランク信号の基準位置より所定のクランク角度（本実施形態では１５°ＣＡ）だけ後のクランク位置で信号レベルがＨレベルとなった以降、第２カム軸が２１０°ＣＡ，３０°ＣＡ，２４０°ＣＡ，２４０°ＣＡと回転する毎に、その信号レベルがＨレベルからＬレベルまたはＬレベルからＨレベルへと変化する信号である。
【００５１】
続いて、ＥＣＵ１を構成する各構成要素について説明する。
入力回路１０は、ＥＣＵ１外部から入力したクランク信号を波形成形してマイコン３０へ出力する回路と、ＥＣＵ１外部から入力した第１，第２カム信号を波形成形してマイコン３０へ出力する回路と、で構成されている。
【００５２】
出力回路２０は、マイコン３０から出力される信号（後述するイベント信号）を、エンジンにおける具体的な制御対象（例えば、インジェクタ，イグナイタなど）に出力する回路である。
【００５３】
マイコン３０は、マイコン３０全体の動作を制御するＣＰＵ３１，入力回路１０から入力される信号に基づいて後述するアングルクロックを生成するアングルクロック生成部３３，アングルクロック生成部３３により生成されるアングルクロックと同期させた信号をＣＰＵ３１からの指令に基づいて出力回路２０へ出力するタイマ出力部３５，ＣＰＵ３２による処理手順などを記憶するフラッシュＲＯＭ３７，ＣＰＵ３２による処理結果などを記憶するＲＡＭ３９などを備えている。
【００５４】
このマイコン３０の備えるアングルクロック生成部３３は、図３に示すように、入力選択部４１，エッジ間計測部４３，逓倍クロック生成部４５，エッジ後経過角度計測部４７，アングルクロック部４９などからなる。
【００５５】
これらのうち、入力選択部４１は、入力回路１０から入力される第１，第２カム信号に基づいて生成した信号（以降、「カム信号」という）をマイコン３０へ出力する回路を有している。この回路により生成されるカム信号は、図２に示すように、第１，第２カム信号それぞれの信号レベルが変化するタイミングで信号レベルがパルス状に変化（有効エッジが発生）する信号である。本実施形態においては、第１，第２カム信号の信号レベルが変化するタイミングに基づき、カム軸それぞれが１２０°ＣＡ回転する毎の規則的な変化点Ｐ，および，変化点Ｐの間に位置する不規則な変化点Ｑそれぞれにおいて、その信号レベルがパルス状に変化する信号となる。
【００５６】
また、この入力選択部４１は、入力回路１０から入力されるクランク信号またはカム信号を、ＣＰＵ３１からの指令に基づいて選択的にアングルクロック生成部３３の各部へと出力する。また、この入力選択部４１は、アングルクロック生成部３３の各部に対する信号の供給を行うか否かを設定するためのレジスタを内蔵しており、ここに初期値である「１」がセットされていれば、各部への信号の供給を行う供給許可状態となる。その一方、「０」がセットされていれば、各部への信号の供給を行わない供給禁止状態となるように構成されている。
【００５７】
また、エッジ間計測部４３は、入力選択部４１から入力される入力信号に有効エッジが発生する毎に、次に入力信号に有効エッジが発生するまでの間隔をカウントするエッジ間時間計測カウンタを内蔵している。このエッジ間時間計測カウンタは、入力信号に有効エッジが発生した際にリセットされ、次に有効エッジが発生するまでの間、システムクロック（の立ち上がりまたは立ち下がりエッジ）をカウントする（図４「エッジ間時間計測カウンタ」参照）。これにより、入力信号に有効エッジが発生する間隔が計測される。そして、エッジ間計測部４３は、エッジ間時間計測カウンタによる計測値を、次の有効エッジが発生したタイミング（リセットされる前のタイミング）で逓倍クロック生成部４５に転送する。
【００５８】
また、逓倍クロック生成部４５は、エッジ間計測部４３から転送されてくる計測値を、内蔵する第１レジスタに逓倍クロック基準時間としてセットする（図４「逓倍クロック基準時間」参照）。こうしてレジスタに逓倍クロック基準時間をセットしたら、この逓倍クロック基準時間を、内蔵する第２レジスタにセットされた逓倍数ｆ（本実施形態においては、ｆ＝６０（初期値））で割った値を１周期とする逓倍クロックを生成する（図４「逓倍クロック」参照）。そして、この逓倍クロック生成部４５は、上述のようにして生成した逓倍クロックを、エッジ後経過角度計測部４７およびアングルクロック部４９それぞれに出力する。
【００５９】
また、エッジ後経過角度計測部４７は、逓倍クロック生成部４５から入力される逓倍クロックにつき、この信号の信号レベルが特定方向（本実施形態においては、ＬレベルからＨレベル）に変化する回数をカウントする経過角度計測カウンタを内蔵している。この経過角度計測カウンタは、入力選択部４１から有効エッジが入力された際にリセットされ、次に有効エッジが入力されるまでの間、逓倍クロックの立ち上がりエッジをカウントする（図４「経過角度計測カウンタ」参照）。ここで、クランク信号またはカム信号は、クランク軸またはカム軸の回転に伴って信号レベルが変化する信号であり、逓倍クロックは、これら信号の信号レベルが特定方向に変化する時間間隔を逓倍したクロックである。つまり、経過角度計測カウンタは、入力選択部４１から有効エッジが入力された以降における軸の回転角度（経過角度：０°ＣＡ〜Δθ°ＣＡ）を、クランク信号またはカム信号に有効エッジが発生する間隔よりも高い分解能（具体的には、ｆ倍の分解能）で仮想的に計測することになる。
【００６０】
また、このエッジ後経過角度計測部４７は、経過角度計測カウンタによるカウント値のしきい値を、内蔵するレジスタにエッジ後経過角度計測として記憶しており、カウント値が上記エッジ後経過角度計測以上となった際に、その旨を示す割込信号をＣＰＵ３１に対して出力するように構成されている。この「エッジ後経過角度計測」は、初期値が、クランク信号が「欠け歯」以外の領域のときに到達しうるカウント値よりも大きな値（本実施形態では、このカウント値の２．５倍；Δθ×２．５）である。
【００６１】
そして、アングルクロック部４９は、逓倍クロック生成部４５から入力される逓倍クロックにつき、この逓倍クロックの信号レベルが特定方向（本実施形態においては、ＬレベルからＨレベル）に変化する回数をカウントする基準カウンタと、入力選択部４１から入力される入力信号の信号レベルが特定方向（本実施形態においては、ＬレベルからＨレベル）に変化する毎に上記逓倍数ｆづつカウントアップするガードカウンタと、基準カウンタのカウント値がシステムクロックに同期してセットされるアングルカウンタと、を内蔵している。
【００６２】
これらのうち、基準カウンタは、逓倍クロック生成部４５から入力される逓倍クロックの立ち上がりエッジを、内蔵する第１レジスタにセットされた上限値までカウントした後、次の立ち上がりエッジで初期化（カウント値を「０」にクリア）される。また、この基準カウンタは、内蔵する第２レジスタにセットされたモード値で示されるモードによりカウントを行うように構成されている。ここでいうモードには、ガードカウンタにセットされた値以上のカウントアップが禁止される禁止モード，ガードカウンタにセットされた値以上のカウントが許可される許可モードがある。また、アングルカウンタは、エンジンの１サイクルにおけるクランク軸の回転位置を、上述した単位角度Δθ°ＣＡ（６°ＣＡ）を上述した逓倍数ｆ（初期値の６０）で割った分解能（６／６０＝０．１°ＣＡ）で示した場合における各位置に、そのカウント値が対応づけられている。つまり、クランク軸の回転位置は、このアングルカウンタのカウント値によって特定されることとなる。
（２）マイコン３０による処理
続いて、マイコン３０（のＣＰＵ３１）により実行される処理について説明する。
（２−１）入力信号診断処理
以下に、マイコン３０が起動された以降、一定時間Ｔｃ毎に繰り返し実行される入力信号診断処理の処理手順を、図５に基づいて説明する。
【００６３】
この入力信号診断処理が起動されると、まず、エンジン回転数が所定値Ｎａ（入力信号の異常判定に適した回転数として定められた値）以上か否かがチェックされ（Ｓ１１０）、エンジン回転数が所定値Ｎａ以上でないと判定されたら（Ｓ１１０：ＮＯ）、直ちに本入力信号診断処理が終了する。ここで、エンジン回転数は、エンジン回転数を算出するための周知の処理（図示省略）により、クランク信号に基づき計測される所定クランク角度分の時間から算出される。例えば、クランク信号に欠け歯が発生する３６０°ＣＡ分の時間間隔を計測し、その計測値からエンジン回転数を算出する、といった処理である。なお、「欠け歯」は、クランク信号の立ち下がりエッジ間隔を計測すると共に、今回の計測値が前回の計測値に所定の積算値（例えば２倍の値）を積算した値以上である場合に、今回の立ち下がりエッジ間隔が「欠け歯」であると判定すればよい。
【００６４】
一方、上述したＳ１１０でエンジン回転数が所定値Ｎａ以上であると判定されたら（Ｓ１１０：ＹＥＳ）、本入力信号診断処理の前回の実行開始時から今回の実行開始時までの一定時間Ｔｃの間に、クランク信号に立ち下がりエッジがあったか否かがチェックされる（Ｓ１２０）。
【００６５】
このＳ１２０で、クランク信号に立ち下がりエッジがあった（クランクエッジ有り）と判定された場合には（Ｓ１２０：ＹＥＳ）、クランク信号の診断結果が正常であることを示す情報がマイコンの内蔵メモリに記憶される（Ｓ１３０）。
【００６６】
そして、無エッジ期間計測カウンタの値が初期化（０にクリア）された後（Ｓ１４０）、本入力信号診断処理が終了する。この無エッジ期間計測カウンタは、マイコン３０が起動される毎に初期化され、以降の処理においてクランク信号に立ち上がりエッジが無かったと判定された回数が積算されるカウンタである。
【００６７】
また、上述したＳ１２０で、クランク信号に立ち下がりエッジがなかった（クランクエッジ無し）と判定された場合には（Ｓ１２０：ＮＯ）、無エッジ期間計測カウンタの値が所定値Ｎｂ（例えば１０）よりも大きくなったか否かがチェックされる（Ｓ１５０）。
【００６８】
このＳ１５０で、無エッジ期間計測カウンタの値が所定値Ｎｂよりも大きくないと判定されたら（Ｓ１５０：ＮＯ）、無エッジ期間計測カウンタの値がインクリメント（「１」を加算）された後（Ｓ１６０）、本入力信号診断処理が終了する。
【００６９】
一方、上述したＳ１５０で、無エッジ期間計測カウンタの値が所定値Ｎｂよりも大きいと判定されたら（Ｓ１５０：ＹＥＳ）、クランク信号の診断結果が異常であることを示す情報が内蔵メモリに記憶された後（ｓ１７０）、本入力信号診断処理が終了する。
【００７０】
このように、本入力信号診断処理においては、エンジン回転数が所定値Ｎａ以上の場合において（Ｓ１１０で「ＹＥＳ」）、クランク信号に本来ならば少なくとも１回は立ち下がりエッジが発生するはずの一定期間（Ｔｃ×Ｎｂ）が経過しても、クランク信号に立ち下がりエッジが１回も発生しなければ、クランク信号が異常（正常に入力されていない）であると診断している（Ｓ１２０「ＮＯ」→Ｓ１５０「ＹＥＳ」→Ｓ１７０）。
【００７１】
なお、マイコン３０は、第１カム信号および第２カム信号それぞれに対しても、上述したのと同様の入力信号診断処理を実行しており、これにより、各信号における異常の有無を診断するように構成されているが、詳細な処理手順は省略する。
（２−２）時間同期タスク
以下に、マイコン３０が起動された以降、入力信号診断処理と並行して、一定時間毎に繰り返し実行される時間同期タスクの処理手順を、図６に基づいて説明する。
【００７２】
この時間同期タスクが起動されると、まず、入力信号診断処理（図５のＳ１３０，Ｓ１７０）において内蔵メモリに記憶されたクランク信号の診断結果（正常または異常）に基づき、クランク信号が異常であるか否かがチェックされる（Ｓ２１０）。
【００７３】
このＳ２１０で、クランク信号が異常でない（つまり正常である）と判定されたら（Ｓ２１０：ＮＯ）、入力選択部４１によりアングルクロック生成部３３の各部に供給される信号としてクランク信号が選択された後（Ｓ２２０）、本時間同期タスクが終了する。このＳ２２０では、クランク信号を選択すべき旨の指令が、ＣＰＵ３１からアングルクロック生成部３３の各部へと出力される。
【００７４】
アングルクロック生成部３３のうち、入力選択部４１は、この指令を受けた以降、入力回路１０から入力される信号のうち、クランク信号をアングルクロック生成部３３の各部へと出力するように内部経路を切り替える。また、上記指令を受けた際、逓倍クロック生成部４５は、内蔵する第２レジスタに、逓倍数ｆとしてクランク信号用の値（本実施形態においては、６０）がセットされる。また、上記指令を受けたエッジ後経過角度計測部４７では、内蔵するレジスタに、エッジ後経過角度計測としてクランク信号用の値（本実施形態では、初期値「Δθ×２．５」と同じ値）がセットされる。そして、上記指令を受けたアングルクロック部４９では、内蔵する第１レジスタに、基準カウンタ，アングルカウンタそれぞれの上限値としてクランク信号用の値がセットされる。ここでいう「クランク信号用の上限値」とは、クランク軸の１回転（３６０°ＣＡ）に、アングルカウンタにおける分解能（０．１°ＣＡ）を積算した値（３６０÷０．１＝３６００）である。
【００７５】
また、上述したＳ２１０で、クランク信号が異常であると判定されたら（Ｓ２１０：ＹＥＳ）、内蔵メモリに記憶されるカム信号それぞれの診断結果に基づき、第１カム信号および第２カム信号のいずれかが異常であるか否かがチェックされる（Ｓ２３０）。
【００７６】
このＳ２３０で、第１カム信号および第２カム信号の両方が異常でない（つまり正常である）と判定されたら（Ｓ２３０：ＮＯ）、入力選択部４１によりアングルクロック生成部３３の各部に出力される信号としてカム信号が選択された後（Ｓ２４０）、本時間同期タスクが終了する。このＳ２４０では、カム信号を選択すべき旨の指令が、ＣＰＵ３１からアングルクロック生成部３３の各部へと出力される。
【００７７】
アングルクロック生成部３３のうち、入力選択部４１は、この指令を受けた以降、入力回路１０から入力される信号のうち、カム信号をアングルクロック生成部３３の各部へと出力するように内部経路を切り替える。また、上記指令を受けた逓倍クロック生成部４５では、内蔵する第２レジスタに、逓倍数ｆとしてカム信号用の値がセットされる。ここでいう「カム信号用の逓倍数ｆ」とは、カム信号における規則的な変化点Ｐの間隔（１２０°ＣＡ）と、クランク信号用の逓倍数ｆ（６０）とを積算した値を、更にクランク信号の単位角度（６°ＣＡ）で割った値（（１２０×６０）／６）＝１２００）である。そして、上記指令を受けたアングルクロック部４９では、内蔵する第１レジスタに、基準カウンタ，アングルカウンタそれぞれの上限値としてカム信号用の値がセットされる。ここでいう「カム信号用の上限値」とは、カム軸の１回転（７２０°ＣＡ）に、アングルカウンタにおける分解能（０．１°ＣＡ）を積算した値（７２０÷０．１＝７２００）である。なお、このＳ２４０では、上記ｓ２２０とは異なり、エッジ後経過角度計測部４７におけるエッジ後経過角度計測のセットは行われない。
【００７８】
また、上述したＳ２３０で、第１カム信号および第２カム信号のいずれか一方または両方が異常であると判定されたら（Ｓ２３０：ＹＥＳ）、そのまま本時間同期タスクが終了する。
（２−３）クランクエッジ割込処理
以下に、マイコン３０が起動された以降、時間同期タスクでクランク信号が選択されている（図６のＳ２２０が行われた）状況において、入力選択部４１から出力される信号に有効エッジが発生する毎に、ＣＰＵ３１が繰り返し実行するクランクエッジ割込処理の処理手順を、図７に基づいて説明する。
【００７９】
このクランクエッジ割込処理が起動されると、まず、その契機となった有効エッジが、クランク信号における「欠け歯」の領域を構成する有効エッジ直後のものであるか否かがチェックされる（Ｓ３１０）。有効エッジがクランク信号において「欠け歯」の領域を構成するものであるときには、それ以外の領域を構成するときよりも有効エッジの間隔が大きくなることから、図８に示すように、エッジ後経過角度計測部４７に内蔵された経過角度計測カウンタのカウント値が、「欠け歯」以外の領域であるときよりも大きな値に到達することになる（図８における「Δθ×３」参照）。そうすると、経過角度計測カウンタのカウント値は、しきい値であるエッジ後経過角度計測（Δθ×２．５）よりも大きくなる結果、エッジ後経過角度計測部４７が、割込信号をＣＰＵ３１に対して出力することになる。そのため、このＳ３１０では、エッジ後経過角度計測部４７から割込信号の入力があった場合に、その有効エッジが「欠け歯」の領域を構成する有効エッジ直後のものであると判定する。
【００８０】
このＳ３１０で、有効エッジが「欠け歯」の領域を構成する有効エッジ直後のものであると判定された場合（Ｓ３１０：ＹＥＳ）、クランク位置確定フラグに「ＯＦＦ」がセットされているか否かがチェックされる（Ｓ３２０）。このクランク位置確定フラグは、マイコン３０が起動される毎にソフトウェア的に設定されるフラグであって、初期値として「ＯＦＦ」がセットされたものである。
【００８１】
このＳ３２０で、クランク位置確定フラグが「ＯＦＦ」になっていると判定された場合（Ｓ３２０：ＹＥＳ）、アングルクロック部４９に内蔵された基準カウンタおよびアングルカウンタそれぞれに、「５９」と、逓倍クロック生成部４５のレジスタにセットされた逓倍数ｆ（ここでは、６０）と、を積算した値「５９×ｆ」がセットされる（Ｓ３３０，Ｓ３４０）。
【００８２】
次に、クランク位置確定フラグに「ＯＮ」がセットされる（Ｓ３５０）。
こうして、Ｓ３５０を終えた後、または、上述したＳ３２０でクランク位置確定フラグが「ＯＮ」になっていると判定された場合（Ｓ３２０：ＮＯ）、アングルクロック部４９に内蔵されたガードカウンタに「０」がセットされる（Ｓ３６０）。
【００８３】
次に、アングルクロック部４９に内蔵された基準カウンタのカウントが、許可モードにより行われるように設定される（Ｓ３７０）。ここでは、ＣＰＵ３１からアングルクロック部４９に対して、許可モードにより基準カウンタのカウントを行うべき旨が指令される。この指令を受けたアングルクロック部４９は、第２レジスタに許可モードを示すモード値をセットする。これにより、以降、基準カウンタが、許可モードによりカウントを行うようになる。
【００８４】
次に、逓倍クロック生成部４５のレジスタにセットされる逓倍クロック基準時間が修正される（Ｓ３８０）。ここでは、ＣＰＵ３１から逓倍クロック生成部４５に対して、エッジ間計測部４３から逓倍クロック生成部４５へと転送される計測値を所定値で割ってなる値を、逓倍クロック基準時間としてセットすべき旨が指令される。この指令を受けた逓倍クロック生成部４５は、次のタイミングでエッジ間計測部４３から転送されてくる計測値を所定値で割り、こうして得られた値を逓倍クロック基準時間としてレジスタにセットする。なお、上述した「所定値」は、クランク信号の「欠け歯」となる領域における有効エッジの間隔と「欠け歯」以外の領域における有効エッジの間隔との比を示す値（本実施形態においては「３」）である。
【００８５】
そして、分周カウンタに「２」がセットされた後（Ｓ３９０）、次の処理（Ｓ４３０）へプロセスが移行する。この分周カウンタは、ＣＰＵ３１がソフトウェア的に動作させる初期値「０」のカウンタである。
【００８６】
また、上述したＳ３１０で、有効エッジが「欠け歯」の領域を構成する有効エッジ直後のものでないと判定された場合（Ｓ３１０：ＮＯ）、その有効エッジが「欠け歯」の領域を構成するものであるか否かがチェックされる（Ｓ４００）。ここでは、アングルクロック部４９に内蔵されたアングルカウンタのカウント値が、クランク軸の回転位置が「欠け歯」の領域になる直前（有効エッジ一つ分前）の位置に対応づけられた値である場合に、有効エッジが「欠け歯」の領域となる直前のものであると判定される。
【００８７】
このＳ４００で、有効エッジが「欠け歯」の領域を構成するものであると判定された場合（Ｓ４００：ＹＥＳ）、アングルクロック部４９に内蔵されたガードカウンタに、「５９」と、逓倍クロック生成部４５のレジスタにセットされた逓倍数ｆ（＝６０）と、を積算した値「５９×ｆ」がセットされる（Ｓ４１０）。
【００８８】
こうして、Ｓ４１０を終えた後、または、上述したＳ４００で有効エッジが「欠け歯」の領域を構成するものでないと判定された場合（Ｓ４００：ＹＥＳ）、アングルクロック部４９に内蔵された基準カウンタのカウントが、禁止モードにより行われるように設定された後（Ｓ４２０）、次の処理（Ｓ４３０）へプロセスが移行する。このＳ４２０では、ＣＰＵ３１からアングルクロック部４９に対して、禁止モードにより基準カウンタのカウントを行うべき旨が指令される。この指令を受けたアングルクロック部４９は、第２レジスタに禁止モードを示すモード値をセットする。これにより、以降、基準カウンタが、禁止モードによりカウントを行うようになる。
【００８９】
次に（Ｓ３９０，Ｓ４２０の後）、クランク位置確定フラグに「ＯＮ」がセットされているか否かがチェックされる（Ｓ４３０）。
このＳ４３０で、クランク位置確定フラグに「ＯＮ」がセットされていると判定された場合（Ｓ４３０：ＹＥＳ）、分周カウンタがデクリメント（１減算）された後（Ｓ４４０）、分周カウンタが「０」となっているか否かがチェックされる（Ｓ４５０）。
【００９０】
このＳ４５０で、分周カウンタが「０」となっていると判定された場合（Ｓ４５０：ＹＥＳ）、制御対象（インジェクタ，イグナイタなど）を駆動するための基準タイミングとなるイベントが発生する（Ｓ４６０）。
【００９１】
本実施形態において、ＣＰＵ３１は、本クランクエッジ割込処理と並行して、イベント発生から制御対象への通電を開始するまでの待機時間およびその通電を継続させる継続時間を演算する処理と、所定のタイミングでイベントが発生した際に上記待機時間および継続時間をタイマ出力部３５に内蔵されたタイマそれぞれにセットする処理と、を実行するように構成されている。
【００９２】
こうして、各時間がタイマにセットされたタイマ出力部３５は、タイマのカウント値に基づいて上記待機時間だけ待機した後、出力回路２０に対して上記継続時間だけ制御対象への通電を行うべき旨を指令する。そして、この指令を受けた出力回路２０が、制御対象を駆動するための駆動信号を、上記継続時間だけ制御対象に出力することで制御対象が駆動されることになる。
【００９３】
そして、Ｓ４６０の後、分周カウンタに「５」がセットされる（Ｓ４７０）。
こうして、Ｓ４７０を終えた後、上述したＳ４５０で分周カウンタが「０」になっていないと判定された場合（Ｓ４５０：ＮＯ）、または、上述したＳ４３０でクランク位置確定フラグに「ＯＦＦ」がセットされていると判定された場合（Ｓ４３０：ＮＯ）、本クランクエッジ割込処理が終了する。
【００９４】
ここまで説明したクランクエッジ割込処理によれば、マイコン３０が起動した以降、カウンタのカウント値などのパラメータが、図９，図１０に示すように変化する。
まず、マイコン３０が起動した直後は（図９におけるｅ０の区間参照）、経過角度計測カウンタが正常に動作しておらず、また、アングルカウンタによるカウントもなされていないことから、Ｓ３１０，Ｓ４００で「ＮＯ」と判定され、プロセスがＳ４２０を経てＳ４３０へ移る。このとき、クランク位置確定フラグは、初期値「ＯＦＦ」のままであるため、Ｓ４３０で「ＮＯ」と判定され、そのままクランクエッジ割込処理が終了する。
【００９５】
その後、有効エッジが発生する毎に上述した手順（Ｓ３１０→Ｓ４００→Ｓ４２０→Ｓ４３０）が繰り返される（図９におけるｅ１の区間参照）。その過程において、有効エッジがクランク信号における「欠け歯」の領域を構成する有効エッジ直後のものになるまでに（図９のＥ２参照）、経過角度計測カウンタのカウント値がエッジ後経過角度計測を超える（図８参照）。そのため、エッジ後経過角度計測部４７からの割込信号を受けて、Ｓ３１０で「ＹＥＳ」と判定されることとなり、プロセスがＳ３２０以降へ移行する。
【００９６】
この時点で、クランク位置確定フラグは、初期値「ＯＦＦ」であることから、Ｓ３３０へ移行して基準カウンタに「５９×逓倍数ｆ（６０）」がセットされ、Ｓ３４０にてアングルカウンタに「５９×逓倍数ｆ（６０）」がセットされた後、Ｓ３５０にてクランク位置確定フラグに「ＯＮ」がセットされる。
【００９７】
続いて、Ｓ３６０にてガードカウンタに「０」がセットされ、Ｓ３７０にて基準カウンタが許可モードに設定される。このＳ３６０では、ガードカウンタに「０」がセットされるが、Ｓ３７０にて基準カウンタが許可モードに設定されるため、基準カウンタによる上限値までのカウントは継続されることとなる（図９におけるｅ３の区間参照）。
【００９８】
続いて、Ｓ３８０にて逓倍クロック基準時間が修正される（図９における逓倍クロック基準時間「Ｔ２／３」参照）。
続いて、Ｓ４３０へ移行するが、この時点では、クランク位置確定フラグが「ＯＮ」となっていることから、このＳ４３０で「ＹＥＳ」と判定され、Ｓ４４０にて分周カウンタのデクリメントがなされる。
【００９９】
これにより、分周カウンタの値は、直前のＳ３９０にてセットされた「２」から「１」減算された値「１」となり、この時点で「０」にはなっていないため、Ｓ４５０で「ＮＯ」と判定されて、クランクエッジ割込処理が終了する。
【０１００】
この次に有効エッジが発生した際には（図９のＥ３参照）、Ｓ３１０，Ｓ４２０それぞれで「ＮＯ」と判定され、Ｓ４２０で基準カウンタが禁止モードに戻された後、Ｓ４３０で「ＹＥＳ」と判定されてから、Ｓ４４０にて分周カウンタのデクリメントがなされる。これにより、分周カウンタの値は、「０」となるため、Ｓ４５０で「ＹＥＳ」と判定され、Ｓ４６０にてイベントの発生が行われた後（図９の「分周イベント」参照）、Ｓ４７０で分周カウンタに「５」がセットされてクランクエッジ割込処理が終了する。
【０１０１】
こうして、マイコン３０が起動して最初に有効エッジが「欠け歯」であると判定された以降は、次に、有効エッジが「欠け歯」の領域を構成するものとなるまで、Ｓ３１０→Ｓ４００→Ｓ４２０〜Ｓ４７０が繰り返される（図１０におけるｅ４の区間参照）。そして、有効エッジが「欠け歯」の領域を構成するものとなったら、Ｓ４１０にてガードカウンタに「５９×逓倍数ｆ（６０）」のセットがなされた後、Ｓ４２０〜Ｓ４７０が行われる（図１０におけるｅ５の区間参照）。
【０１０２】
この次に、クランク信号に有効エッジが発生した際には、その有効エッジは「欠け歯」の領域を構成する有効エッジ直後のものであるため、Ｓ３１０で「ＹＥＳ」と判定され、この時点でクランク位置確定フラグは「ＯＮ」であるためにＳ３２０で「ＮＯ」と判定されて、プロセスがＳ３６０へ移行する。
【０１０３】
これ以降は、上述したのと同様、ガードカウンタ「０」の状態で基準カウンタのカウントが継続され、そのカウント値が「０」にクリアされた後（図１０におけるｅ６の区間参照）、次に有効エッジが「欠け歯」の領域を構成するものとなるまで、Ｓ３１０→Ｓ４００→Ｓ４２０〜Ｓ４７０が繰り返されることとなる（図１０におけるｅ７の区間参照）。
（２−４）カムエッジ割込処理
以下に、マイコン３０が起動された以降、時間同期タスクでカム信号が選択されている（図６のＳ２４０が行われた）状況において、入力選択部４１から出力される信号に有効エッジが発生する毎に、ＣＰＵ３１が繰り返し実行するカムエッジ割込処理の処理手順を、図１１に基づいて説明する。
【０１０４】
このカムエッジ割込処理が起動されると、まず、カム位置確定フラグに「ＯＦＦ」がセットされているか否かがチェックされる（Ｓ５１０）。このカム位置確定フラグは、マイコン３０が起動される毎にソフトウェア的に設定されるフラグであって、初期値として「ＯＦＦ」がセットされたものである。
【０１０５】
このＳ５１０で、カム位置確定フラグが「ＯＦＦ」になっていると判定された場合（Ｓ５１０：ＹＥＳ）、アングルクロック部４９に内蔵されたガードカウンタのカウント値が、逓倍クロック生成部４５のレジスタにセットされた逓倍数ｆ（ここでは、１２００）を２倍にした値（２×１２００＝２４００）以上となっているか否かがチェックされる（Ｓ５２０）。ガードカウンタは、初期値として「０」がセットされたものである。
【０１０６】
このＳ５２０で、ガードカウンタのカウント値が逓倍数ｆを２倍にした値以上になっていると判定された場合（Ｓ５２０：ＹＥＳ）、アングルクロック部４９に内蔵された基準カウンタ，ガードカウンタおよびアングルカウンタそれぞれに初期値がセットされる（Ｓ５３０）。本実施形態においては、入力回路１０に入力される第１，第２カム信号のうち、一方の信号における信号レベルと他方の信号における信号レベルの変化状態（エッジの方向）との組み合わせそれぞれに対して、各カウンタにセットすべき初期値が定められている（図１２参照）。そのため、Ｓ５３０では、入力回路１０に入力される第１，第２カム信号の信号レベルおよび変化状態に基づいて、その定めに従った初期値が各カウンタにセットされる。なお、上述した「定め」は、例えば、上記組み合わせと初期値との対応関係をフラッシュＲＯＭ３７などにデータテーブルとして記憶した構成とすればよく、この場合、Ｓ５３０において、そのデータテーブルを参照して該当する初期値を特定するようにすればよい。
【０１０７】
次に、カム位置確定フラグに「ＯＮ」がセットされた後（Ｓ５４０）、次の処理（Ｓ５７０）へ移行する。
一方、上述したＳ５２０で、ガードカウンタのカウント値が逓倍数ｆを２倍にした値以上になっていないと判定された場合（Ｓ５２０：ＮＯ）、Ｓ５３０，Ｓ５４０が行われることなく、プロセスが次の処理（Ｓ５７０）へ移行する。
【０１０８】
また、上述したＳ５１０で、カム位置確定フラグが「ＯＮ」になっていると判定された場合（Ｓ５１０：ＮＯ）、アングルクロック部４９に内蔵されたガードカウンタのカウント値が、逓倍クロック生成部４５のレジスタにセットされた逓倍数ｆ（１２００）に、エンジンの気筒数（本実施形態では６）を積算した値（１２００×６＝７２００）以上となっているか否かがチェックされる（Ｓ５５０）。
【０１０９】
このＳ５５０で、ガードカウンタのカウント値が逓倍数ｆにエンジンの気筒数を積算した値以上となっていると判定された場合（Ｓ５５０：ＹＥＳ）、ガードカウンタに「０」がセットされた後（Ｓ５６０）、プロセスが次の処理（Ｓ５７０）へ移行する。一方、ガードカウンタの値が逓倍数ｆにエンジンの気筒数を積算した値以上になっていないと判定された場合（Ｓ５５０：ＮＯ）、Ｓ５６０が行われることなく、プロセスが次の処理（Ｓ５７０）へ移行する。
【０１１０】
次に、アングルクロック部４９に内蔵されたガードカウンタのカウント値が「０」であるか否かがチェックされ（Ｓ５７０）、「０」であれば（Ｓ５７０：ＹＥＳ）、図７のＳ３７０と同様、アングルクロック部４９に内蔵された基準カウンタのカウントが、許可モードにより行われるように設定される（Ｓ５８０）。一方、ガードカウンタのカウント値が「０」でなければ（Ｓ５７０：ＮＯ）、図７のＳ４２０と同様、基準カウンタのカウントが、禁止モードにより行われるように設定される（Ｓ５９０）。
【０１１１】
こうして、Ｓ５８０，Ｓ５９０にて基準カウンタの設定がなされたら、本カムエッジ割込処理が起動される契機となった有効エッジが、カム信号における不規則な変化点Ｑとなる直前の変化点であるか（つまり、次の有効エッジが変化点Ｑであるか）否かがチェックされる（Ｓ６００）。本実施形態においては、第２カム信号がＬレベルのときに第１カム信号がＨからＬへと変化する点と、第１カム信号がＬレベルのときに第２カム信号がＨからＬへと変化する点と、が不規則な変化点Ｑとなる（図２，図１２参照）。そして、第２カム信号がＨレベルの時に第１カム信号がＨからＬへと変化する変化点Ｐ，または，第１カム信号がＨレベルのときに第２カム信号がＨからＬへと変化する変化点Ｐが、変化点Ｑの直前の変化点である。そのため、このＳ６００では、第１，第２カム信号の状態（第１，第２カム信号の一方における信号レベルと他方における信号レベルの変化状態との組み合わせ）に基づいて、次の有効エッジが変化点Ｑであるか否かがチェックされる。
【０１１２】
このＳ６００で、有効エッジが不規則な変化点Ｑとなる直前の変化点を示すものであると判定された場合（Ｓ６００：ＹＥＳ）、入力選択部４１が、アングルクロック生成部３３の各部に対する信号の供給を行わない供給禁止状態となる（Ｓ６１０）。一方、有効エッジが不規則な変化点Ｑとなる直前の変化点を示すものではないと判定された場合（Ｓ６００：ＮＯ）、入力選択部４１が、アングルクロック生成部３３の各部に対する信号の供給を行う供給許可状態となる（Ｓ６２０）。このＳ６１０，Ｓ６２０では、ＣＰＵ３１が、入力選択部４１に内蔵されたレジスタに「０」をセットすることで入力選択部４１が供給禁止状態となるのに対し、同レジスタに「１」をセットすることで入力選択部４１が供給許可状態となる。
【０１１３】
こうして、Ｓ６１０，Ｓ６２０で入力選択部４１が供給禁止状態または供給許可状態とされた後、カム位置確定フラグに「ＯＮ」がセットされ、かつ、今回の有効エッジが変化点Ｑでないか否かがチェックされる（Ｓ６３０）。
【０１１４】
このＳ６３０で、カム位置確定フラグに「ＯＦＦ」がセットされている、または、今回の有効エッジが変化点Ｑであると判定された場合（Ｓ６３０：ＮＯ）、本カムエッジ割込処理が終了する。
【０１１５】
一方、Ｓ６３０で、カム位置確定フラグに「ＯＮ」がセットされ、かつ、今回の有効エッジが変化点Ｑでないと判定された場合（Ｓ６３０：ＹＥＳ）、イベントカウンタのカウント値が「０」より大きな値となっているか否かがチェックされる（Ｓ６４０）。このイベントカウンタは、ＣＰＵ３１がソフトウェア的に起動する初期値「０」のカウンタである。
【０１１６】
このＳ６４０で、イベントカウンタのカウント値が「０」より大きな値になっていると判定された場合（Ｓ６４０：ＹＥＳ）、イベントカウンタのカウント値と同じ数だけ、制御対象（インジェクタ，イグナイタなど）を駆動するための基準タイミングとなるイベントが発生した後（Ｓ６５０）、プロセスが次の処理（Ｓ６６０）へ移行する。
【０１１７】
一方、Ｓ６４０で、イベントカウンタのカウント値が「０」より大きな値になっていないと判定された場合（Ｓ６４０：ＮＯ）、Ｓ６５０が行われることなく、次の処理（Ｓ６６０）へ移行する。
【０１１８】
次に、エッジ後経過角度計測部４７に内蔵されたレジスタに、エッジ後経過角度計測がセットされる（Ｓ６６０）。ここでは、規則的な変化点Ｐからイベントを発生させるまでに必要なカム軸（またはクランク軸）の回転角度（イベントまでの角度またはイベント発生間隔；本実施形態では１５°ＣＡ），カム軸の回転位置が各気筒の上死点に到達する間隔（ＴＤＣ角度；１２０°ＣＡ），および，逓倍クロック生成部４５のレジスタにセットされた逓倍数ｆに基づく式「イベントまでの角度（１５°ＣＡ）／（ＴＤＣ角度（１２０°ＣＡ）／逓倍数ｆ（１２００））」にて求められる値（１５／（１２０／１２００）＝１５０）が、エッジ後経過角度計測として上記レジスタにセットされる。
【０１１９】
なお、この時点において、エッジ後経過角度計測部４７における経過角度計測カウンタのカウント値は、その信号レベルが特定方向に変化するまでの間における逓倍クロックのエッジ数を示すものであり、カム信号の信号レベルが特定方向に変化した以降におけるカム軸の回転位置に対応するものとなる。
【０１２０】
次に、エッジ後経過角度計測割込に「許可」がセットされる（Ｓ６７０）。このエッジ後経過角度計測割込は、エッジ後経過角度計測部４７に内蔵された初期値「禁止」のレジスタである。このエッジ後経過角度計測割込に「許可」がセットされている間は、エッジ後経過角度計測部４７から割込信号の入力を受けて、後述するエッジ後経過角度計測割込処理がＣＰＵ３１により起動されるようになる。
【０１２１】
そして、イベントカウンタに、イベント値がセットされる（Ｓ６８０）。ここでは、ＴＤＣ角度（１２０°ＣＡ），および，イベントを発生させるべき回転角度の間隔（イベント間隔；本実施形態では３０°ＣＡ）に基づく式「ＴＤＣ角度／イベント間隔」にて求められる値（１２０／３０＝４）が、イベント値としてイベントカウンタにセットされる。
【０１２２】
ここまで説明したカムエッジ割込処理によれば、カウンタのカウント値などのパラメータが、図１３に示すように変化する。
まず、本カムエッジ割込処理が最初に起動されたとき、カム位置確定フラグは初期値「ＯＦＦ」であり、ガードカウンタのカウント値がカウントアップして「１×逓倍数ｆ」となることから（図１３におけるｅ０，ｅ１の区間参照）、Ｓ５１０で「ＹＥＳ」，Ｓ５２０で「ＮＯ」と判定され、Ｓ５７０へ移行する。ここで、ガードカウンタは「１×逓倍数ｆ」となっているため、Ｓ５７０で「ＮＯ」と判定され、プロセスがＳ５９０を経てＳ６００へ移行する。
【０１２３】
この時点において、Ｓ５３０を経ていないことから、Ｓ６００では、有効エッジが不規則な変化点Ｑとなる直前の変化点を示すものであると判定されることはなく、「ＮＯ」と判定されてＳ６２０へ移行し、入力選択部４１が初期状態である供給許可状態のままで維持される。
【０１２４】
そして、Ｓ６３０では、この時点でカム位置確定フラグの値が初期値「ＯＦＦ」のまま変更されていないため、Ｓ６３０で「ＮＯ」と判定されて、本カムエッジ割込処理が終了する。
【０１２５】
この後、次の有効エッジが発生した際には（図１３のＥ２参照）、カム位置確定フラグは初期値「ＯＦＦ」であり、ガードカウンタがカウントアップして「２×逓倍数ｆ」となることから（図１３におけるｅ２の区間参照）、Ｓ５２０で「ＹＥＳ」と判定される。こうして、Ｓ５２０で「ＹＥＳ」と判定された場合、Ｓ５３０でガードカウンタ，基準カウンタおよびアングルカウンタそれぞれに初期値がセットされた後、Ｓ５４０でカム位置確定フラグに「ＯＮ」がセットされる。このとき、第２カム信号がＨレベルのときに、第１カム信号に立ち上がりエッジが発生した状態であるため、ガードカウンタに４８００（＝４×ｆ），基準カウンタに３６００，アングルカウンタに３６００がそれぞれセットされる（図１２参照）。
【０１２６】
続いて、Ｓ５７０，Ｓ５９０，Ｓ６００，Ｓ６２０を経て、この時点でカム位置確定フラグが「ＯＮ」であり、かつ、今回の有効エッジが変化点Ｑでないことから、Ｓ６３０で「ＹＥＳ」と判定され、Ｓ６４０でイベントカウンタがチェックされる。
【０１２７】
このとき、イベントカウンタは初期値「０」のままであることから、Ｓ６５０が行われることなく、Ｓ６６０〜Ｓ６８０により各パラメータが設定された後、本カムエッジ割込処理が終了する。
【０１２８】
これ以降、変化点Ｑとなる直前の有効エッジが発生するため（図１３のＥ３参照）、Ｓ６００で「ＹＥＳ」と判定され、Ｓ６１０にて入力選択部４１が供給禁止状態に設定された後、以降の処理が行われる。
【０１２９】
こうして、入力選択部４１は、供給禁止状態に設定されていると、供給許可状態に設定し直されるまでの間、各部への信号の供給を行わなくなる。そのため、この次に発生する不規則な変化点Ｑの有効エッジについては、各部に供給されない。その結果、各部のカウントがリセットされることなく、継続されることとなる（図１３におけるｅ３の区間参照）。
【０１３０】
その後、有効エッジが発生する毎に、上述と同様に各処理が行われた後、ガードカウンタが「気筒数×逓倍数ｆ（＝６×１２００＝７２００）」以上のカウント値となったら、Ｓ５５０で「ＹＥＳ」と判定され、Ｓ５６０でガードカウンタに「０」がセットされる。
【０１３１】
続いて、Ｓ５７０で「ＹＥＳ」と判定されて、Ｓ５８０で基準カウンタが許可モードに設定されるため、ｓ５６０でガードカウンタに「０」がセットされていても、基準カウンタによる上限値までのカウントが継続される（図１３におけるｅ４の区間参照）。
【０１３２】
ここでも、イベントカウンタは初期値「０」のままであることから、Ｓ６５０が行われることなく、Ｓ６６０〜Ｓ６８０により各パラメータが設定された後、本カムエッジ割込処理が終了する。
【０１３３】
この後は、上述したのと同様、ガードカウンタ「０」の状態で基準カウンタのカウントが継続され、そのカウント値が「０」にクリアされた後（図１３におけるｅ４の区間参照）、変化点Ｑとなる直前の有効エッジが発生するまで、Ｓ５５０→Ｓ５７０→Ｓ５９０→Ｓ６００→Ｓ６２０→Ｓ６３０〜Ｓ６８０が繰り返される（図１３におけるｅ５〜ｅ６の区間参照）。
【０１３４】
これ以降、上述したのと同様に、Ｓ５５０でガードカウンタが「気筒数×ｆ」以上のカウント値となるまで、上述した処理が繰り返されることとなる（図１３におけるｅ７〜ｅ８の区間参照）。
（２−５）エッジ後経過角度計測割込処理
以下に、図１３のＳ６７０でエッジ後経過角度計測割込に「許可」がセットされた状態で、エッジ後経過角度計測部４７から割込信号の入力があった場合に起動されるエッジ後経過角度計測割込処理の処理手順を、図１４に基づいて説明する。
【０１３５】
この経過角度計測割込処理が起動されると、まず、図８のＳ４６０と同様、制御対象を駆動するための基準タイミングとなるイベントが発生する（Ｓ７１０）。
次に、イベントカウンタがデクリメント（１減算）された後（Ｓ７２０）、イベントカウンタが「０」より大きな値であるか否かがチェックされる（Ｓ７３０）。
【０１３６】
このＳ７３０で、イベントカウンタが「０」より大きな値であると判定された場合（Ｓ７３０：ＹＥＳ）、エッジ後経過角度計測部４７に内蔵されたレジスタに、エッジ後経過角度計測をセットし直す（Ｓ７４０）。ここでは、イベント発生間隔（３０°ＣＡ），ＴＤＣ角度（１２０°ＣＡ）および逓倍数ｆに基づく式「イベント発生間隔（３０°ＣＡ）／（ＴＤＣ角度（１２０°ＣＡ）／逓倍数ｆ（１２００））」にて求められる値（１５／（１２０／１２００）＝３００）を、エッジ後経過角度計測に対して加算した値が、新たなエッジ後経過角度計測として上記レジスタにセットされる。
【０１３７】
一方、Ｓ７３０で、イベントカウンタが「０」になっていると判定された場合（Ｓ７３０：ＮＯ）、エッジ後経過角度計測割込に「禁止」がセットされる（Ｓ７５０）。こうして、エッジ後経過角度計測割込に「禁止」がセットされた以降、エッジ後経過角度計測部４７から割込信号の入力があっても、本エッジ後経過角度計測割込処理が起動されなくなる。
【０１３８】
こうして、Ｓ７４０，Ｓ７５０が終了した後、本エッジ経過角度計測割込処理が終了する。
ここまで説明したエッジ後経過角度計測割込処理は、図１１のＳ６６０にてエッジ後経過角度計測に「１５０」がセット、同図Ｓ６７０でエッジ後経過角度計測割込に「許可」がセット、同図Ｓ６８０でイベントカウンタに「４」がセットされ、さらに、エッジ後経過角度計測カウンタがリセットされた状態で起動されるようになる（図１５におけるｅ１の区間参照）。そして、以降、カウンタのカウント値などのパラメータが図１５，図１６に示すように変化する。
【０１３９】
具体的にいうと、まず、エッジ後経過角度計測カウンタがエッジ後経過角度計測「１５０」に到達することで（図１５におけるｅ２の区間参照）、エッジ後経過角度計測部４７からの割込信号の発生に伴い、本処理が起動する。すると、Ｓ７１０によるイベントの発生後（図１５の「分周イベント」参照）、Ｓ７２０にてイベントカウンタが「４」から「３」とされ、この時点で「０」より大きい値であるため、Ｓ７２０で「ＹＥＳ」と判定された後、Ｓ７４０でエッジ後経過角度計測がセットし直される。このＳ７４０では、エッジ後経過角度計測に「３００」が加算されて「４５０」となる。
【０１４０】
この後、エッジ後経過角度計測カウンタがエッジ後経過角度計測「４５０」に到達することで（図１５におけるｅ３の区間参照）、エッジ後経過角度計測部４７からの割込信号の発生に伴い、本処理が起動する。すると、Ｓ７１０によるイベントの発生後、Ｓ７２０にてイベントカウンタが「３」から「２」とされ、この時点で「０」より大きい値であるため、Ｓ７２０で「ＹＥＳ」と判定された後、Ｓ７４０でエッジ後経過角度計測がセットし直される。このＳ７４０では、エッジ後経過角度計測に「３００」が加算されて「４５０」となる。
【０１４１】
以下同様に、エッジ後経過角度計測カウンタがエッジ後経過角度計測に到達する毎に、エッジ後経過角度計測割込処理が繰り返し行われ（図１５のｅ４，ｅ５の区間参照）、イベントカウンタが「０」になったら、Ｓ７３０で「ＮＯ」と判定された後、Ｓ７５０でエッジ後経過角度計測割込に「禁止」がセットされる。そうすると、再度、図１１のＳ６７０でエッジ後経過角度計測割込に「許可」がセットされるまで、エッジ後経過角度計測割込処理が起動されない状態になる（図１５におけるｅ５の区間参照）。
【０１４２】
これにより、本エッジ後経過角度計測割込処理により発生するイベントは、カム軸を規則的な変化点Ｐから１５°ＣＡだけ回転させた回転位置から、イベント間隔毎（１５°ＣＡ，４５°ＣＡ，７５°ＣＡ，１０５°ＣＡ）に発生するようになる。
【０１４３】
ところで、上述したカムエッジ割込処理においては、図１１のＳ６４０にて「ＹＥＳ」と判定された場合に、Ｓ６５０にてイベントカウンタに応じた数のイベント発行が行われることとなっているが、上記Ｓ６４０にて「ＹＥＳ」と判定されるのは、例えば、車両が急加速するときのように、エンジンの回転数が急激に上昇する場合などである。
【０１４４】
このような場合には、上述したエッジ経過角度計測割込処理が、適切な回数だけ（具体的にいうと、イベントカウンタが「０」になるまで）繰り返される前に、カム信号に有効エッジが発生し、これにより、図１１のＳ６６０〜Ｓ６８０でイベントカウンタを含む各パラメータが設定し直されてしまう。そうすると、本来発生させるべきイベントが発生されなくなってしまうため、本実施形態では、図１１のＳ６４０でイベントカウンタが「０」でないと判定された場合に、その時点におけるイベントカウンタの値に応じた数のイベントを同図Ｓ６５０にて発生させるようにしている（図１６におけるｅ７〜ｅ９の区間参照）。
（３）作用，効果
このように構成されたエンジン制御装置１では、クランク信号が異常になると、アングルクロック生成部３３内で利用される入力信号がクランク信号からカム信号に変更されると共に、逓倍クロックを生成するために用いられる逓倍数ｆがクランク信号用の値からカム信号用の値に変更される（図６のＳ２４０）。
【０１４５】
これにより、アングルクロック生成部３３のエッジ間計測部４３により計測される時間間隔は、クランク信号において有効エッジが発生するまでに要するクランク軸の回転角度（単位角度Δθ°ＣＡ；以降、「第１の角度」という）に応じた値から、カム信号において有効エッジが発生するまでに要するカム軸の回転角度（１２０°ＣＡ；以降、「第２の角度」という）に応じた値に変更される。そして、逓倍クロック生成部４５により生成される逓倍クロックの周期についても、第１の角度に応じた時間間隔をクランク信号用の逓倍数ｆで割った値から、第２の角度に応じた時間間隔をカム信号用の逓倍数ｆで割った値に変更される。
【０１４６】
ここで、「カム信号用の逓倍数ｆ」は、式「（第２の角度×クランク信号用の逓倍数ｆ）／第１の角度」から求められた値である（図６のＳ２４０）。この式は、「第１の角度／クランク信号用の逓倍数ｆ＝第２の角度／カム信号用の逓倍数ｆ」が成立するようなカム信号用の逓倍数を求める式ということができ、このことは、入力信号および逓倍数の変更前後で角度と逓倍数との比が変化しないことを意味する。
【０１４７】
つまり、逓倍クロック生成部４５により生成される逓倍クロックの周期を、第２の角度に応じた時間間隔（計測値）をカム信号用の逓倍数ｆに変更しても、角度と逓倍数との比が変わらないことから、実際の周期もその変更前後で変化しない。逆にいえば、逓倍数をカム信号用の逓倍数ｆに変更することで、逓倍クロック生成部４５により生成される逓倍クロックの周期が変わらないようにしているということができる。
【０１４８】
そうすると、アングルカウンタを動作させるための逓倍クロックの周期が、入力信号および逓倍数の変更前後で変化しないことになるため、アングルクロック部４９に関しては、その変更前後において処理を切り替えるなどといった特別な処理が必要ない。
【０１４９】
これにより、本エンジン制御装置１では、クランク信号が異常になった場合に、入力信号および逓倍数を変更するだけで、カム信号に基づいてエンジンの制御を継続させることができる。これにより、その変更後に逓倍クロック生成部４５，アングルクロック部４９およびタイマ出力部３５が特別な処理を行うように構成しなくてもよくなる結果、大幅なハードウェア構成の増加を伴うことなく、クランク信号が正常に入力されなくなった場合における退避走行を実現することができる。
【０１５０】
また、上記構成では、逓倍クロック生成部４５により生成される逓倍クロックの周期が、第１の角度に応じた時間間隔をクランク信号用の逓倍数ｆで割った値から、第２の角度に応じた時間間隔をカム信号用の逓倍数ｆで割った値へと変更されるように構成されている。このカム信号用の逓倍数ｆは、上述した式で示されるように、第１の角度，クランク信号用の逓倍数ｆおよび第２の角度から求められる値であるため、カム信号用の逓倍数ｆとして、他のパラメータに応じた適切な値を用いることができる。
【０１５１】
また、上記構成では、次の有効エッジが変化点Ｑになる場合に（図１１のＳ６００）、入力選択部４１を、各部に信号の供給を行わない供給禁止状態とすることで、アングルクロック生成部３３のエッジ間計測部４３による計測が、カム信号における不規則な変化点Ｑで中断しないようにしている。例えば、不規則な変化点でエッジ間計測部４３による計測を終了させると、カム軸が第２の角度回転し終わる前の計測値（時間間隔）に基づいて周期の短い逓倍クロックが生成されてしまう。その結果、アングルクロック部４９に内蔵されたアングルカウンタのカウント値とクランク軸の回転位置との対応関係が崩れてしまうため、適切なタイミングでイベントを発生させることができなくなってしまう。
【０１５２】
そのため、上記実施形態においては、上述のように、エッジ間計測部４３による計測が不規則な変化点Ｑで中断しないようにすることで、周期の短い逓倍クロックが生成されて適切なタイミングでイベントを発生させることができなくなるという不都合を回避できる。
【０１５３】
また、入力選択部４１が各部に信号の供給を行わない状態としていることから、各部からみた入力信号は、規則的な変化点Ｐでのみ信号レベルが特定方向に変化する信号となる。そのため、エッジ後経過角度計測部４７を除いた各部に対して何ら特別な処理を行わせることなく、エッジ後経過角度計測部４７による計測の継続を実現することができる。
【０１５４】
また、上記実施形態では、アングルクロック生成部３３のエッジ後経過角度計測部４７によって、クランク信号の有効エッジが「欠け歯」となる領域を構成する有効エッジ直後のものであるか否かを判定するように構成されている（図７のＳ３１０）。そして、「欠け歯」となる領域を構成する有効エッジ直後のものであると判定された場合には、その後の処理で、逓倍クロック生成部４５のレジスタにセットされる逓倍クロック基準時間が修正される（同図Ｓ３８０）。
【０１５５】
このように、エッジ後経過角度計測部４７は、入力信号がクランク信号である場合に、このクランク信号に存在する欠け歯期間に起因する不都合を回避するために設けられたものである。そのため、入力信号がカム信号に変更された以降、このカム信号に欠け歯期間が存在していないことから、そのカウント値は、エンジンの制御に利用されないものとなる。ところが、上記実施形態では、カム信号に基づく退避走行時においても、エッジ後経過角度計測部４７を有効に利用することができる。それは、エッジ後経過角度計測部４７のレジスタにエッジ後経過角度計測がセットされ（図１１のＳ６６０）、その後、このエッジ後経過角度計測部４７から割込信号を入力する毎に、エッジ後経過角度計測割込処理（図１４）を起動させることでイベントを発生させるようにしているからである。
【０１５６】
また、上記実施形態においては、カム信号に基づく退避走行時に、その信号レベルが特定方向に変化した以降の所定タイミング（所定の回転角度だけ回転したタイミング）でイベントを発生させていることを考えると、エンジンの回転数が急激に上昇するなどといった事態が発生した場合は、当然そのタイミングを早めなければならない。
【０１５７】
ただ、カム信号の信号レベルが特定方向に変化するまでに要する期間（１２０°ＣＡ）は、クランク信号における期間（６°ＣＡ）よりも大幅に長いため、クランク信号でエンジン制御を実施している場合と比べて、上記のような事態の発生確率が著しく高くなる。そして、このような事態が発生した場合には、次にカム信号の信号レベルが特定方向に変化するタイミングが、イベントを発生させるべきタイミングよりも先に到来する恐れがあり、この場合、本来発生させるべきイベントを発生させることができなくなってしまう。
【０１５８】
ところが、上記実施形態では、入力信号にカム信号が選択されてカムエッジ割込処理（図１１）が起動されるようになった以降、その起動時においてイベントカウンタが０より大きい，つまり本来発生させるべきイベント全てを発生させていない場合、そのイベントカウンタの数に応じたイベントの発生が行われる（図１１のＳ６５０）。
【０１５９】
これにより、カム信号の信号レベルが特定方向に変化するまでの間に、本来発生させるべきイベントの発生が行われていなくても、それ以降に、不足していたイベントを順次発生させることができる。
（４）その他
上記実施形態において、エッジ間計測部４３は本願発明における間隔計測手段であり、入力選択部４１は本願発明における信号入力手段であり、逓倍クロック生成部４５は本願発明における逓倍クロック生成手段であり、入力回路１０は本願発明におけるカム信号生成手段であり、エッジ後経過角度計測部４７は本発明におけるエッジカウンタである。
【０１６０】
また、逓倍クロック生成部４５の第２レジスタにセットされるクランク信号用の逓倍数ｆ（６０）が本発明における第１逓倍数であり、カム信号用の逓倍数ｆ（１２００）が本発明における第２逓倍数である。
【０１６１】
また、図６のＳ２１０は本発明における異常判定手段であり、図７のＳ３８０は本発明における計測値修正手段であり、図７のＳ４６０，図１３のＳ７１０は本願発明におけるイベント発生手段であり、図１１のＳ６００は本発明における変化点判定手段であり、同図Ｓ６１０（およびＳ６２０）は本発明における計測継続手段であり、同図Ｓ６５０は本発明におけるイベント補助手段である。
【０１６２】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０１６３】
例えば、上記実施形態においては、逓倍クロック生成部４５が、エッジ間計測部４３による計測値を逓倍数ｆで割ってなる時間を１周期とする逓倍クロックを生成するように構成されたものを例示した。しかし、エッジ間計測部４３と逓倍クロック生成部４５との間に、エッジ間計測部４３による計測値を逓倍数ｆで割ってなる値を算出する構成要素を追加し、逓倍クロック生成部４５が、この構成要素により算出された値を１周期とする逓倍クロックを生成するように構成してもよい。
【０１６４】
また、上記実施形態においては、カム信号における規則的な変化点Ｐの到来する間隔を、エンジンの１サイクルにおいて発生させるべきイベントと同じ角度間隔となるように構成しておけば、カム信号に基づく退避走行時においても、正常時と同じ角度間隔でのイベントの発生を実現することができるようになる。
【図面の簡単な説明】
【０１６５】
【図１】エンジン制御装置の概略構成を表す構成図
【図２】エンジンの制御に利用される各信号の波形を示す図
【図３】アングルクロック生成回路の構成を示すブロック図
【図４】入力信号の変化に伴うパラメータの変化状態を示すタイムチャート（１）
【図５】入力信号診断処理を示すフローチャート
【図６】時間同期タスクを示すフローチャート
【図７】クランクエッジ割込処理を示すフローチャート
【図８】入力信号の変化に伴う各パラメータの変化状態を示すタイムチャート（２）
【図９】クランクエッジ割込処理における各パラメータの変化状態を示すタイムチャート（１／２）
【図１０】クランクエッジ割込処理における各パラメータの変化状態を示すタイムチャート（２／２）
【図１１】カムエッジ割込処理を示すフローチャート
【図１２】第１，第２カム信号における信号レベルの組み合わせと、各カウンタにセットすべき初期値との関係を示す表
【図１３】カムエッジ割込処理における各パラメータの変化状態を示すタイムチャート（１／３）
【図１４】エッジ後経過角度計測割込処理を示すフローチャート
【図１５】カムエッジ割込処理における各パラメータの変化状態を示すタイムチャート（２／３）
【図１６】カムエッジ割込処理における各パラメータの変化状態を示すタイムチャート（３／３）
【符号の説明】
【０１６６】
１…エンジン制御装置、１０…入力回路、２０…出力回路、３０…マイコン、３３…アングルクロック生成部、３５…タイマ出力部、４１…入力選択部、４３…エッジ間計測部、４５…逓倍クロック生成部、４７…エッジ後経過角度計測部、４９…アングルクロック部。
【図１】
0004687481.tif 000002
【図２】
0004687481.tif 000003
【図３】
0004687481.tif 000004
【図４】
0004687481.tif 000005
【図５】
0004687481.tif 000006
【図６】
0004687481.tif 000007
【図７】
0004687481.tif 000008
【図８】
0004687481.tif 000009
【図９】
0004687481.tif 000010
【図１０】
0004687481.tif 000011
【図１１】
0004687481.tif 000012
【図１２】
0004687481.tif 000013
【図１３】
0004687481.tif 000014
【図１４】
0004687481.tif 000015
【図１５】
0004687481.tif 000016
【図１６】
0004687481.tif 000017