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