(57)【要約】【課題】  角度カウンタのカウント値とクランク角との対応をエンジン回転数に拘わらず正確なものにする。【解決手段】  １０°ＣＡ毎に立ち上がりエッジが生じる角度信号を入力して、該角度信号の立ち上がりエッジ間隔である１パルス間隔毎（１０°ＣＡ毎）に、分周回路１５からのクロックＣＬＫで０からカウントアップ動作し、そのカウント値を上記１パルス間隔の計測値Ｔとして出力するパルス間隔カウンタ１７と、その計測値Ｔを逓倍数Ｎで除算した整数値Ｍを求め、周期が「クロックＣＬＫの周期×Ｍ」である逓倍クロックを生成する手段１９，２１，２３と、その逓倍クロックによりカウントアップ動作する角度カウンタ２５とを備えたマイコン１１では、上記クロックＣＬＫの周波数を、エンジン回転数が高い場合ほど大きい値に変更する。【選択図】  図１
2005048698.tif 000002
【特許請求の範囲】
【請求項１】
エンジンのクランク軸の回転に対応して所定角度間隔毎にパルスエッジが発生する角度信号を入力し、該角度信号に前記所定角度間隔毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの間隔（以下、１パルス間隔という）毎に、該１パルス間隔よりも短い所定の計測用周期でカウント動作を行って、その１パルス間隔の間にカウントしたカウント値を前記１パルス間隔の計測値として出力する計測手段と、
該計測手段による前記計測値を所定の逓倍数で除算して、該計測値が前記逓倍数の何倍であるかを示す整数値Ｍを求め、周期が「前記計測用周期×Ｍ」である逓倍信号を生成する逓倍信号生成手段と、
前記逓倍信号によりカウント動作する角度カウンタと、
を備えた信号処理装置において、
前記計測用周期を、前記クランク軸の回転数に応じて変更する計測用周期変更手段を備えていること、
を特徴とする信号処理装置。
【請求項２】
請求項１に記載の信号処理装置において、
前記計測用周期変更手段は、前記クランク軸の回転数が高い場合ほど、前記計測用周期を短くすること、
を特徴とする信号処理装置。
【請求項３】
請求項１又は請求項２に記載の信号処理装置において、
前記計測用周期変更手段は、前記計測用周期を、大きいものが小さいものの２z倍（ｚは１以上の整数）の関係にある複数通りの周期のうちの何れかに切り換えるように構成されていること、
を特徴とする信号処理装置。
【請求項４】
エンジンのクランク軸の回転に対応して所定角度間隔毎にパルスエッジが発生する角度信号を入力し、該角度信号に前記所定角度間隔毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの間隔（以下、１パルス間隔という）毎に、該１パルス間隔よりも短い所定の計測用周期でカウント動作を行って、その１パルス間隔の間にカウントしたカウント値を前記１パルス間隔の計測値として出力する計測手段と、
該計測手段による前記計測値を所定の逓倍数で除算して、該計測値が前記逓倍数の何倍であるかを示す整数値Ｍを求め、周期が「前記計測用周期×Ｍ」である逓倍信号を生成する逓倍信号生成手段と、
前記逓倍信号によりカウント動作する角度カウンタと、
を備えた信号処理装置において、
前記逓倍数を、前記クランク軸の回転数に応じて変更する逓倍数変更手段を備えていること、
を特徴とする信号処理装置。
【請求項５】
請求項４に記載の信号処理装置において、
前記逓倍数変更手段は、前記クランク軸の回転数が高い場合ほど、前記逓倍数を小さくすること、
を特徴とする信号処理装置。
【請求項６】
請求項４又は請求項５に記載の信号処理装置において、
前記角度カウンタは、上位複数ビットの上位カウンタと、下位ｋビット（ｋは２以上の整数）の下位カウンタとからなり、
前記逓倍数変更手段は、前記逓倍数を、２n（ｎは１からｋまでの整数のうちの何れか）で表される複数個の数値のうちの何れかに切り換えるように構成されており、
前記上位カウンタは、前記角度信号に前記特定エッジが発生する毎にカウント動作し、
前記下位カウンタは、前記逓倍信号によってカウント動作すると共に、前記角度信号に前記特定エッジが発生するとクリアされ、
更に、前記下位カウンタは、前記逓倍数変更手段により変更される逓倍数に応じて、該逓倍数が前記複数個の数値のうちの２p（ｐは１からｋまでの整数のうちの何れか）であるとすると、当該下位カウンタの最上位ビットから数えてｐビット目が、前記逓倍信号に応じたカウント動作の最下位ビットとなるように構成されていること、
を特徴とする信号処理装置。
【請求項７】
請求項６に記載の信号処理装置において、
前記逓倍数変更手段は、前記逓倍数を、前記角度信号に前記特定エッジが発生したタイミングで変更すること、
を特徴とする信号処理装置。
【請求項８】
請求項４ないし請求項７の何れか１項に記載の信号処理装置において、
前記角度カウンタのカウント値に基づき制御信号を出力する信号出力手段を備え、
更に、前記信号出力手段は、前記クランク軸の回転角度を指定した設定値が設定される設定部を有すると共に、該設定部に設定された設定値と、前記角度カウンタのカウント値とを大小比較して、それら両値が予め定められた大小関係にある場合に前記制御信号を出力するように構成されていること、
を特徴とする信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンのクランク軸の回転に対応して発生される角度信号に応じて、角度カウンタのカウント値を進めていく信号処理装置に関する。
【背景技術】
【０００２】
従来より、例えばエンジンを制御する装置は、エンジンのクランク軸の回転に同期して、燃料噴射弁や点火装置等を作動させるための制御信号を出力するように構成される。
そして、この種のエンジン制御装置として、クランク軸の回転に対応した所定角度間隔毎のパルス列の角度信号（クランク信号）を逓倍した逓倍信号を生成すると共に、その逓倍信号で角度カウンタをカウントアップさせることにより、元の角度信号よりも細かい分解能でクランク角を把握し、上記角度カウンタのカウント値が、あるクランク角を指示する設定値と一致したら、点火や噴射の出力を行うようにしたものがある（例えば、特許文献１，２参照）。
【０００３】
また、こうした装置では、上記逓倍信号を生成するための手段として、角度信号に所定角度間隔毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの１パルス間隔（つまり、所定角度間隔）毎に、その１パルス間隔よりも周期が十分に短い計測用クロックで０からカウントアップすることにより、該１パルス間隔を計測する計測カウンタと、角度信号に特定エッジが発生すると上記計測カウンタによる今回の１パルス間隔分のカウント値を逓倍数Ｎで除算して、その今回のカウント値が逓倍数Ｎの何倍であるかを示す整数値Ｍを求め、該整数値Ｍを逓倍レジスタにセットする手段と、逓倍レジスタにセットされた整数値Ｍを初期値として上記計測用クロックによりダウンカウントする逓倍カウンタとを備えており、その逓倍カウンタがアンダーフローすると、逓倍信号としてのパルス（逓倍クロック）を発生すると共に、該逓倍カウンタのカウント値が上記逓倍レジスタ内の整数値Ｍに戻されるようになっている（例えば、特許文献１参照）。そして、このような構成により、逓倍カウンタからは、周期が計測用クロックの周期×Ｍ（つまり、周期が角度信号の１パルス間隔のほぼ１／Ｎ）である逓倍信号が出力される。
【特許文献１】特開２００１−２６３１５０号公報
【特許文献２】特開２００１−２２７４４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、角度信号を逓倍した逓倍信号を生成する装置では、特許文献１にも記載されているように、１パルス間隔分のカウント値を逓倍数Ｎで除算した際の桁落ち（即ち、余り）により、角度カウンタの１カウント分の時間（＝逓倍信号の周期）に誤差が発生し、その誤差が問題となっていた。つまり、逓倍信号の周期に誤差が生じると、角度カウンタのカウント値がクランク角を正確に示さなくなり、例えば制御信号の出力タイミングの精度が低下するからである。
【０００５】
この誤差について具体例を挙げて説明する。尚、角度信号には１０°ＣＡ毎（クランク軸が１０°回転する毎）に立ち上がりエッジ（特定エッジに相当）が発生するものとし、その角度信号の１パルス間隔（１０°ＣＡの時間間隔）を計測する計測カウンタのクロック（上記計測用クロック）の周波数は１６ＭＨｚ（周期＝０．０６２５μｓ）であり、逓倍数Ｎは２５６であるものとする。また、角度カウンタは、カウントアップされるものとする。
【０００６】
まず図１５（Ａ）に示すように、例えばエンジン回転数（クランク軸の回転数）が５００ｒｐｍといった低回転時には、角度信号の１パルス間隔が３３３３．３３３…μｓとなるため、計測カウンタによる１パルス間隔分のカウント値は、５３３３３（＝３３３３．３３３…μｓ／０.０６２５μｓ）となり、そのカウント値を逓倍数Ｎ（＝２５６）で割ると、整数値Ｍが２０８で、余りが８５となる。
【０００７】
このため、逓倍信号の周期は「０．０６２５μｓ×２０８」となり、角度カウンタは、図１５（Ａ）に示す如く、その周期毎にカウントアップされることとなるが、その角度カウンタの１カウント分の時間（＝逓倍信号の周期）は、角度信号の１パルス間隔を１／Ｎにした本当の時間に対して、計測カウンタによる１パルス間隔分の全カウント値における上記余りの割合に相当する誤差を持つことになる。
【０００８】
そして、２５６逓倍する際の余りの最大値は２５５（＝逓倍数Ｎ−１）であるため、５００ｒｐｍ付近で考えると、全カウント値に占める余りの割合が最大となるのは、４９８．４１ｒｐｍの時であり、その余りの割合（即ち、逓倍信号の周期の誤差）は「２５５／（２５６＊２０８＋２５５）」＝０．４８％となる。
【０００９】
次に、図１５（Ｂ）に示すように、例えばエンジン回転数が１００００ｒｐｍといった高回転時には、角度信号の１パルス間隔が１６６．６６６…μｓとなるため、計測カウンタによる１パルス間隔分のカウント値は、２６６６（＝１６６．６６６…μｓ／０.０６２５μｓ）となり、そのカウント値を逓倍数Ｎ（＝２５６）で割ると、整数値Ｍが１０で、余りが１０６となる。
【００１０】
このため、逓倍信号の周期は「０．０６２５μｓ×１０」となり、角度カウンタは、図１５（Ｂ）に示す如く、その周期毎にカウントアップされることとなるが、この場合にも、その角度カウンタの１カウント分の時間（＝逓倍信号の周期）は、本当の時間に対して、計測カウンタによる１パルス間隔分の全カウント値における上記余りの割合に相当する誤差を持つことになる。
【００１１】
そして、１００００ｒｐｍ付近で考えると、全カウント値に占める余りの割合が最大となるのは、９４７３ｒｐｍの時であり、その余りの割合（即ち、逓倍信号の周期の誤差）は「２５５／（２５６＊１０＋２５５）」＝９．１％となる。
【００１２】
このように、エンジン回転数が高い場合ほど、１パルス間隔分のカウント値を逓倍数Ｎで除算した際の余りの影響（即ち、１パルス間隔分のカウント値に対する余りの割合の最大値であって、逓倍信号の周期誤差の最大値）が大きくなり、その結果、角度カウンタのカウント値とクランク角との対応が不正確になってしまう。このため、制御精度の悪化を招くこととなる。
【００１３】
尚、こうした誤差を小さくするために、計測カウンタのクロック（計測用クロック）の周波数を高く設定することも考えられるが、特に角度信号の１パルス間隔が長くなる低回転時において、計測カウンタがカウントすべき最大値が大きくなってしまう。このため、ビット数の大きな計測カウンタが必要となり、回路規模が増大してしまう。
【００１４】
また、上記特許文献１には、逓倍カウンタに初期値としてセットする整数値Ｍを、除算による桁落ち部分に対する四捨五入で補正することが記載されているが、そのような補正処理を行っても、せいぜい誤差を半分にできる程度である上に、エンジン回転数が高くなるほど誤差が大きくなってしまうことを解決することはできない。
【００１５】
本発明は、こうした問題に鑑みなされたものであり、角度カウンタのカウント値とクランク角との対応をエンジン回転数に拘わらず正確なものにすることができる信号処理装置の提供を目的としている。
【課題を解決するための手段】
【００１６】
上記目的を達成するためになされた請求項１に記載の信号処理装置では、計測手段が、エンジンのクランク軸の回転に対応して所定角度間隔毎にパルスエッジが発生する角度信号を入力し、その角度信号に前記所定角度間隔毎のパルスエッジである特定エッジが発生してから該特定エッジが次に発生するまでの間隔（以下、１パルス間隔という）毎に、該１パルス間隔よりも短い所定の計測用周期でカウント動作を行って、その１パルス間隔の間にカウントしたカウント値を前記１パルス間隔の計測値として出力する。
【００１７】
そして、逓倍信号生成手段が、計測手段による計測値（つまり、角度信号の１パルス間隔分のカウント値）を所定の逓倍数Ｎで除算して、その計測値が逓倍数Ｎの何倍であるかを示す整数値Ｍを求め、周期が「前記計測用周期×Ｍ」である逓倍信号を生成する。そして更に、角度カウンタが、逓倍信号生成手段からの逓倍信号によってカウント動作する。
【００１８】
ここで特に、請求項１の信号処理装置には、計測用周期変更手段が設けられており、その計測用周期変更手段は、上記計測手段と逓倍信号生成手段とに共通の計測用周期を、クランク軸の回転数（エンジン回転数）に応じて変更する。具体的には、請求項２に記載の如く、計測用周期変更手段は、クランク軸の回転数が高い場合ほど、計測用周期を短くする。
【００１９】
このような信号処理装置によれば、角度カウンタのカウント値とクランク角との対応をエンジン回転数に拘わらず正確なものにすることができるようになる。
つまり、計測手段による計測値（角度信号の１パルス間隔分のカウント値）をＴとすると、「発明が解決しようとする課題」の欄で述べたように、角度カウンタの１カウント分の時間である逓倍信号の周期には最大で「（逓倍数Ｎ−１）／Ｔ」だけの誤差が生じるが、角度信号の１パルス間隔が長い低回転時よりも、その１パルス間隔が短くなる高回転時の方が、計測用周期を短くすることにより、低回転時と高回転時とで、計測手段による計測値（カウント値）Ｔに大差が生じないようにすることができ、その結果、高回転時においても、逓倍信号の周期誤差を小さく抑えることができる。そして、逓倍信号の周期誤差が小さくなれば、角度カウンタのカウント値とクランク角との対応が一層正確になる。そして更に、このため、角度カウンタのカウント値に応じて実施される処理の精度が向上する。
【００２０】
しかも、この信号処理装置によれば、角度信号の１パルス間隔が長くなる低回転時には、計測用周期が長く設定されるため、計測手段がカウントすべき最大値が必要以上に大きくなってしまうこともない。
【００２１】
また、計測用周期を短くすると、少なくとも計測手段のカウント動作が早くなるため、装置での消費電力が大きくなるが、本装置では、エンジン始動時などの低回転時には計測用周期を長くすることとなるため、そのような低回転時での消費電力を抑えることができる。
【００２２】
また更に、角度信号に特定エッジが発生する上記所定角度間隔をＸ°ＣＡとすると、角度カウンタのカウント値が表すクランク角の分解能（クランク角分解能）は「Ｘ°ＣＡ／逓倍数Ｎ」であるが、この信号処理装置では逓倍数Ｎが一定であるため、そのクランク角分解能も一定である。このため、例えば、「背景技術」の欄で述べたように、角度カウンタのカウント値が設定値と一致したら制御信号を出力するといった構成を採った場合に、その設定値の分解能を変更する必要がなく、その点においても有利である。
【００２３】
ところで、計測用周期変更手段は、請求項３に記載のように、前記計測用周期を、大きいものが小さいものの２z倍（ｚは１以上の整数）の関係にある複数通りの周期のうちの何れかに切り換えるように構成するのが好ましい。デジタル回路及び処理の分野において、２z倍の関係にある複数通りの周期を作り出すのは、それ以外の関係にある周期を作り出すよりも遙かに容易であるからである。
【００２４】
次に、請求項４に記載の信号処理装置は、請求項１の信号処理装置と同様の計測手段，逓倍信号生成手段，及び角度カウンタを備えている。
そして特に、請求項４の信号処理装置には、逓倍数変更手段が設けられており、その逓倍数変更手段は、上記逓倍数Ｎを、クランク軸の回転数（エンジン回転数）に応じて変更する。具体的には、請求項５に記載の如く、逓倍数変更手段は、クランク軸の回転数が高い場合ほど、逓倍数Ｎを小さくする。
【００２５】
このような信号処理装置によっても、角度カウンタのカウント値とクランク角との対応をエンジン回転数に拘わらず正確なものにすることができるようになる。
つまり、前述したように、計測手段による計測値（角度信号の１パルス間隔分のカウント値）をＴとすると、角度カウンタの１カウント分の時間である逓倍信号の周期には最大で「（逓倍数Ｎ−１）／Ｔ」だけの誤差が生じるが、Ｔが大きくなる低回転時よりも、Ｔが小さくなる高回転時の方が、逓倍数Ｎを小さくすることにより、その誤差を、高回転時においても低回転時と同等に小さく抑えることができるからである。
【００２６】
また、この信号処理装置によれば、計測用周期を短くする必要がないため、計測手段がカウントすべき最大値が大きくなったり、消費電流の増加を招くこともない。
尚、角度信号の１パルス間隔の時間をｔｐとすると、角度カウンタのカウント値が表す時間の分解能（時間分解能）は「ｔｐ／逓倍数Ｎ」であるが、ｔｐが大きくなる低回転時には逓倍数Ｎを大きくし、ｔｐが小さくなる高回転時には逓倍数Ｎを小さくすることで、その時間分解能を回転数によらず一定範囲にすることができる。
【００２７】
次に、請求項６に記載の信号処理装置では、請求項４，５の信号処理装置において、角度カウンタは、上位複数ビットの上位カウンタと、下位ｋビット（ｋは２以上の整数）の下位カウンタとからなっている。また、逓倍数変更手段は、逓倍数Ｎを、２n（ｎは１からｋまでの整数のうちの何れか）で表される複数個の数値のうちの何れかに切り換えるようになっている。
【００２８】
そして、角度カウンタの上位カウンタは、角度信号に特定エッジが発生する毎にカウント動作するようになっている。
また、角度カウンタの下位カウンタは、前記逓倍信号によってカウント動作すると共に、角度信号に特定エッジが発生するとクリアされるが、更に、この下位カウンタは、逓倍数変更手段により変更される逓倍数Ｎに応じて、その逓倍数Ｎが前記複数個の数値のうちの２p（ｐは１からｋまでの整数のうちの何れか）であるとすると、当該下位カウンタの最上位ビットから数えてｐビット目が、逓倍信号に応じたカウント動作の最下位ビットとなるように構成されている。
【００２９】
尚、「下位カウンタの最上位ビットから数えてｐビット目が逓倍信号に応じたカウント動作の最下位ビットとなる」とは、下位カウンタにおいて、そのｐビット目よりも下位のビットは変化せずに、そのｐビット目と該ｐビット目よりも上位のビットからなる部分が、逓倍信号に応じてカウント動作することを意味している。また、下位カウンタの最上位ビットから数えてｐビット目とは、最上位ビットを１ビット目として数えたものであり、最下位ビットから数えたならば「ｋ−ｐ＋１」ビット目である。一方、以下の説明において、特に「最上位ビットから数えて」と明記していなければ、ビットの順番位置は、最下位ビットから数えたもの（即ち、最下位ビットを１ビット目としたもの）である。
【００３０】
このような請求項６の信号処理装置によれば、逓倍数変更手段によって逓倍数Ｎが変更されても、角度カウンタのＬＳＢ（下位カウンタの１ビット目）の重みは、常に、逓倍数Ｎが２kである場合の重み（＝Ｘ°ＣＡ／２k）となり、角度カウンタのカウント値の連続性を確実に保つことができる。
【００３１】
ところで、請求項６の信号処理装置において、逓倍数を角度信号の１パルス間隔の途中で、それまでよりも小さい値に変更すると、角度カウンタのカウント値が、変更後の逓倍数に合わない値をとってしまう可能性がある。
【００３２】
例えば、ｋ＝８で、逓倍数を２５６（＝２8）から１２８（＝２7）に変更した場合を例に挙げると、逓倍数が２５６に設定されている時点では、角度カウンタにおける下位カウンタの１ビット目（＝最上位ビットから数えて８ビット目）が逓倍信号に応じたカウント動作の最下位ビットとなるが、逓倍数が１２８に変更されると、角度カウンタにおける下位カウンタの２ビット目（＝最上位ビットから数えて７ビット目）が逓倍信号に応じたカウント動作の最下位ビットとなり、その下位カウンタの１ビット目は変化しなくなる。このため、下位カウンタの１ビット目が“１”である時に逓倍数が１２８に変更されると、その後、角度信号に特定エッジが発生して下位カウンタがクリアされるまでは、その下位カウンタの値が奇数になってしまう。これは、本来、逓倍数が１２８であるならば、角度カウンタのカウント値は偶数である（即ち、下位カウンタの１ビット目は“０”である）ということと矛盾してしまう。そして、このことから、例えば「背景技術」の欄で述べたように角度カウンタのカウント値が設定値と一致したら制御信号を出力する、といった構成の場合には、制御信号が出力されなくなってしまう可能性が生じる。
【００３３】
そこで、こうした可能性を回避するためには、請求項７に記載のように、逓倍数変更手段は、逓倍数を、角度信号に特定エッジが発生したタイミングで変更するように構成すれば良い。つまり、逓倍数を変更する場合には、その逓倍数が、角度カウンタの下位カウンタがクリアされるタイミングで変更されることとなり、上記矛盾の発生を避けることができる。
【００３４】
次に、請求項８に記載の信号処理装置では、請求項４〜７の信号処理装置において、角度カウンタのカウント値に基づき制御信号を出力する信号出力手段を備えている。
そして更に、その信号出力手段は、クランク軸の回転角度（クランク角）を指定した設定値が設定される設定部を有しており、その設定部に設定された設定値と、角度カウンタのカウント値とを大小比較して、それら両値が予め定められた大小関係にある場合に、制御信号を出力するようになっている。
【００３５】
このような信号処理装置によれば、逓倍数変更手段により逓倍数Ｎがそれまでよりも小さい値に変更されて、角度カウンタのカウント値が上記設定部に既に設定されている設定値の分解能（増減単位）よりも荒い分解能で進んでいく、といった状況が発生した場合でも、必ず制御信号を出力することができるようになる。
【００３６】
つまり、上記の状況が発生すると、角度カウンタのカウント値が設定値を跨いでしまう場合があるため、角度カウンタのカウント値が設定値と一致したら制御信号を出力する、といった構成の場合には、制御信号が出力されなくなってしまう可能性があるが、そのような不具合を確実に回避することができる。
【００３７】
尚、請求項８の構成を採用した場合、設定値の分解能は、角度信号に特定エッジが発生する上記所定角度間隔Ｘ°ＣＡを一番大きい逓倍数Ｎｍａｘで割った値（＝Ｘ°ＣＡ／Ｎｍａｘ）に固定しておくことが好ましい。
【発明を実施するための最良の形態】
【００３８】
以下に、本発明が適用された実施形態のエンジン制御装置について説明する。
まず図１は、第１実施形態のエンジン制御装置に搭載されたマイコン（マイクロコンピュータ）１１の構成を表す構成図である。
【００３９】
図１に示すように、マイコン１１には、クランクセンサによって発生される角度信号が入力される。この角度信号は、エンジンのクランク軸の回転に対応して所定角度間隔毎（クランク軸が所定角度回転する毎であり、本実施形態では１０°ＣＡ毎）に立ち上がりエッジが発生する信号である。
【００４０】
そして、マイコン１１は、エンジンを制御するための各種処理を実行するＣＰＵ１３に加え、クランク軸の回転に同期して制御信号を出力するための手段として、分周回路１５、パルス間隔カウンタ１７、カウント値レジスタ１９、逓倍演算部２１、逓倍カウンタ２３、角度カウンタ２５、設定値レジスタ２７、信号出力部２９、ＡＮＤ（アンド）回路３１、及びＮＡＮＤ（ナンド）回路３３を備えている。尚、制御信号としては、例えば、エンジンの点火装置を作動させる点火信号や、エンジンの燃料噴射弁を作動させる噴射信号や、Ａ／Ｄ変換器を起動させる起動信号や、マイコンにて割り込み処理を起動させるための割込み要求信号など、エンジン制御を行うための様々な信号が考えられる。
【００４１】
ここで、分周回路１５は、高周波の内部クロックをＣＰＵ１３から指令される分周比で分周して複数通り（本第１実施形態では、１６ＭＨｚ，３２ＭＨｚ，６４ＭＨｚ，及び１２８ＭＨｚの４通り）の周波数の計測用クロックＣＬＫを出力する。尚、この計測用クロックＣＬＫの周期は、何れも、エンジンの全運転領域における１０°ＣＡ分の時間より短い。
【００４２】
パルス間隔カウンタ１７は、分周回路１５から出力される計測用クロックＣＬＫ（本実施形態では立ち上がりエッジ）によってアップカウントするカウンタである。そして、入力される角度信号に１０°ＣＡ毎の立ち上がりエッジ（特定エッジに相当）が発生すると、その時点でのパルス間隔カウンタ１７のカウント値がカウント値レジスタ１９にセットされると共に、そのセット直後に当該パルス間隔カウンタ１７がリセットされる。
【００４３】
このため、パルス間隔カウンタ１７は、角度信号に立ち上がりエッジが発生してから同エッジが次に発生するまでの１パルス間隔毎（１０°ＣＡ毎）に、計測用クロックＣＬＫの周期で０からアップカウント動作を行うこととなる。そして、このパルス間隔カウンタ１７のカウント値が、角度信号の１パルス間隔（つまり、１０°ＣＡ分の時間）の計測値Ｔとして、カウント値レジスタ１９に出力される。
【００４４】
逓倍演算部２１は、カウント値レジスタ１９にセットされた最新の計測値Ｔを、予め設定されている逓倍数Ｎ（本第１実施形態では２５６）で除算して、その除算の商の整数値（整数部分）Ｍを記憶する。そして、この逓倍演算部２１に記憶された整数値Ｍは、逓倍カウンタ２３の初期値となる。
【００４５】
逓倍カウンタ２３は、分周回路１５から出力される計測用クロックＣＬＫ（本実施形態では立ち上がりエッジ）によってダウンカウントするカウンタである。そして、逓倍カウンタ２３は、そのカウント値が１から０になると、逓倍クロックの立ち上がりを発生させると共に、そのカウント値が逓倍演算部２１に記憶されている整数値Ｍに初期化されるようになっている。
【００４６】
このため、逓倍カウンタ２３からは、周期が「計測用クロックＣＬＫの周期×Ｍ」であって、周期が角度信号の１パルス間隔のほぼ１／Ｎ（＝１／２５６）である逓倍クロック（逓倍信号に相当）が出力されることとなる。
【００４７】
次に、角度カウンタ２５は、上位８ビットの上位カウンタ２５ａと、下位８ビットの下位カウンタ２５ｂとからなっている。
そして、上位カウンタ２５ａは、角度信号の立ち上がりエッジによってアップカウントする（図４参照）。
【００４８】
また、下位カウンタ２５ｂは、逓倍カウンタ２３からの逓倍クロック（本実施形態では立ち上がりエッジ）によってアップカウントすると共に、角度信号に立ち上がりエッジが発生するとクリア（リセット）されるが、この下位カウンタ２５ｂには、逓倍カウンタ２３からの逓倍クロックが２入力のＡＮＤ回路３１を介して供給されるようになっている。そして、そのＡＮＤ回路３１の入力端子のうち、逓倍カウンタ２３からの逓倍クロックが入力される入力端子とは異なる方の入力端子には、下位カウンタ２５ｂの８ビットｂ０〜ｂ７の否定論理積をとるＮＡＮＤ回路３３の出力信号が入力されている。尚、ｂ０が１ビット目（最下位ビット）であり、ｂ７が８ビット目である。
【００４９】
このため、下位カウンタ２５ｂは、逓倍クロックの立ち上がりエッジによってアップカウント動作すると共に、角度信号に立ち上がりエッジが発生する毎にクリアされるが、もし、角度信号に立ち上がりエッジが発生する前（つまり、上位カウンタ２５ａがカウントアップされる前）に、当該下位カウンタ２５ｂの値が２５５（１６進数でＦＦ）に達したならば、ＮＡＮＤ回路３３の出力がローレベルになってＡＮＤ回路３１から逓倍クロックが出力されなくなるため、そのカウント値（ｂ０〜ｂ８からなる８ビットデータ値）は、角度信号が次に立ち上がるまで２５５にガードされることとなる。
【００５０】
一方、設定値レジスタ２７には、ＣＰＵ１３により、クランク角（クランク軸の回転角度）を指定した１６ビットの設定値がセットされる。
そして、信号出力部２９は、角度カウンタ２５のカウント値（上位カウンタ２５ａの８ビットと下位カウンタ２５ｂの８ビットとからなる合計１６ビットのデータ値）が、設定値レジスタ２７にセットされている設定値と一致したら制御信号を出力する。
【００５１】
尚、制御信号の出力方法としては、カウント値＝設定値となる毎に、制御信号の出力レベルを反転させたり、制御信号を一定時間だけハイレベル又はローレベルにする、といったものがあるが、本実施形態では、制御信号の出力レベルを反転させるようにしている。また、信号出力部２９は、角度カウンタ２５のカウント値と設定値レジスタ２７にセットされている設定値とを大小比較して、カウント値≧設定値であったら制御信号を出力するように構成しても良い。一方、図示は省略しているが、設定値レジスタ２７及び信号出力部２９は、マイコン１１から出力される制御信号毎にそれぞれ設けられている。
【００５２】
次に、ＣＰＵ１３が計測用クロックＣＬＫの周波数（以下、サンプリング周波数ともいう）を変更するために実行する処理について、図２のフローチャートを用いて説明する。
まず図２（Ａ）は、角度信号の立ち上がりタイミングのうち、エンジン回転数を算出すべきタイミングとして定められた特定のクランク角のタイミング毎（本実施形態では１２０°ＣＡ毎）に実行される回転数算出処理を表すフローチャートである。
【００５３】
この回転数算出処理の実行が開始されると、まずＳ１１０にて、当該処理の前回の起動時刻から今回の起動時刻までの時間（つまり、１２０°ＣＡ分の時間）に基づき、エンジン回転数を算出する。
【００５４】
次に、Ｓ１２０にて、今回算出したエンジン回転数と、現在のサンプリング周波数（即ち、分周回路１５に現在出力させている計測用クロックＣＬＫの周波数）とから、そのサンプリング周波数を変更する必要があるか否かを判断する。
【００５５】
具体的に説明すると、マイコン１１内のＲＯＭ（図示省略）には、図３の上段の如くエンジン回転数とサンプリング周波数との関係を示した回転数対周波数データマップが記憶されている。そして、Ｓ１２０では、その回転数対周波数データマップにおいて今回算出のエンジン回転数に対応するサンプリング周波数を読み込み、その読み込んだサンプリング周波数と、現在のサンプリング周波数とが異なっていれば、サンプリング周波数を変更する必要があると判断する。
【００５６】
尚、図３の上段に示すように、回転数対周波数データマップは、エンジン回転数が高い場合ほどサンプリング周波数が高くなるように（換言すれば、計測用クロックＣＬＫの周期が短くなるように）設定されている。また、回転数対周波数データマップは、図３の下段に示すように、逓倍クロックの周期の誤差（角度信号の１パルス間隔を１／Ｎにした本当の時間に対する誤差）の最大値が２％以下となるように設定されている。そして更に、この回転数対周波数データマップでは、サンプリング周波数が変更される回転数付近でサンプリング周波数の切り換えが頻繁に行われてしまうことがないように、ヒステリシスが設けられている。
【００５７】
そして、Ｓ１２０にて、サンプリング周波数を変更する必要がないと判断した場合には、そのまま当該回転数算出処理を終了するが、サンプリング周波数を変更する必要があると判断した場合には（Ｓ１２０：ＹＥＳ）、Ｓ１３０に進んで、変更すべき新たなサンプリング周波数（つまり、Ｓ１２０で回転数対周波数データマップから読み込んだサンプリング周波数）を記憶する。そして更に、続くＳ１４０にて、フラグＦａに“１”をセットした後、当該回転数算出処理を終了する。
【００５８】
次に、図２（Ｂ）は、図２（Ａ）の回転数算出処理が終了した後、次の角度信号の立ち上がりタイミングで実行される周波数変更処理を表すフローチャートである。
この周波数変更処理の実行が開始されると、まずＳ２１０にて、フラグＦａが“１”であるか否かを判定し、フラグＦａが“１”でなければ、そのまま当該周波数変更処理を終了するが、フラグＦａが“１”であれば（Ｓ２１０：ＹＥＳ）、Ｓ２２０に進む。
【００５９】
そして、Ｓ２２０では、図２（Ａ）のＳ１３０で記憶されたサンプリング周波数を読み出し、そのサンプリング周波数の計測用クロックＣＬＫが分周回路１５から出力されるように、該分周回路１５へ指令する分周比を切り換える。そして更に、続くＳ２３０にて、フラグＦａをクリア（フラグＦａに“０”をセット）し、その後、当該周波数変更処理を終了する。
【００６０】
尚、イグニッションスイッチのオンに伴いエンジン制御装置に電源が投入されてマイコン１１が動作を開始した際のサンプリング周波数（つまり、サンプリング周波数の初期値）は、図３からも分かるように最も低い１６ＭＨｚに設定される。
【００６１】
また、制御信号として、例えば点火装置を駆動するための点火信号を出力するものとすると、ＣＰＵ１３は、角度信号や図示しない気筒判別信号等の情報から、その点火信号の出力レベルを反転させるべきクランク角を算出して、そのクランク角に相当する設定値を設定値レジスタ２７にセットする。
【００６２】
このようなエンジン制御装置のマイコン１１では、図４に示すように、角度信号の立ち上がり毎に、角度カウンタ２５の上位８ビット（上位カウンタ２５ａの値）が１ずつアップすると共に、角度カウンタの下位８ビット（下位カウンタ２５ｂの値）が逓倍クロックによって０から１ずつアップする。このため、角度カウンタ２５の合計１６ビットのカウント値は、逓倍クロックによって１ずつアップすると共に、角度信号が立ち上がる毎に２５６の整数倍の値に補正されることとなる。そして、角度カウンタ２５のカウント値と設定値レジスタ２７内の設定値とが一致したら制御信号が出力されることとなる。
【００６３】
そして特に、本実施形態のマイコン１１では、サンプリング周波数（計測用クロックＣＬＫの周波数）を、エンジン回転数に応じて、低回転時には低くし、高回転時には高くするようにしている。例えば、図４に示すように、エンジン回転数が１５００ｒｐｍの場合には、サンプリング周波数が１６ＭＨｚに設定される。そして、エンジン回転数が２１００ｒｐｍよりも高く（この例では２５００ｒｐｍ）になり、そのことが図２（Ａ）の回転数算出処理で検出されると、角度信号の次の立ち上がりタイミングで実行される図２（Ｂ）の周波数変更処理により、サンプリング周波数が１６ＭＨｚよりも高い周波数（この例では３２ＭＨｚ）に変更されることとなる（図３参照）。
【００６４】
尚、本第１実施形態では、パルス間隔カウンタ１７と逓倍カウンタ２３とに、分周回路１５からの計測用クロックＣＬＫが入力されており、その計測用クロックＣＬＫの周波数（サンプリング周波数）を角度信号の立ち上がりタイミングで変更するようにしているため、そのサンプリング周波数の変更タイミングから角度信号が次に立ち上がるまでの１０°ＣＡの期間（以下、周波数変更直後の１０°ＣＡ期間という）だけは、逓倍カウンタ２３から出力される逓倍クロックの周期が、１０°ＣＡ分の時間を１／Ｎした正常な時間からずれてしまう。例えば、サンプリング周波数を２倍に変更した場合には、周波数変更直後の１０°ＣＡ期間だけ、逓倍クロックの周期が１／２になってしまい、サンプリング周波数を１／２倍に変更した場合には、周波数変更直後の１０°ＣＡ期間だけ、逓倍クロックの周期が２倍になってしまう。
【００６５】
しかし、このような現象が発生しても、本第１実施形態では、制御信号を周波数変更直後の１０°ＣＡ期間中には出力しない（つまり、その期間内のクランク角を示す設定値を設定値レジスタ２７に設定しない）ようになっていることと、前述したように角度カウンタ２５のカウント値は角度信号が立ち上がる毎に２５６の整数倍の値に補正されることから、何も問題は生じない。
【００６６】
また、このような現象自体が発生しないようにするためには、例えば下記の（ａ）又は（ｂ）のようにすれば良い。
（ａ）：サンプリング周波数をＱ倍に変更したとすると、周波数変更直後の１０°ＣＡ期間だけ、逓倍カウンタ２３にセットされる初期値を、上記整数値ＭをＱ倍した値（＝Ｍ×Ｑ）に変更する。つまり、逓倍カウンタ２３に入力される計測用クロックＣＬＫの周期が１／Ｑになった分、その逓倍カウンタ２３がダウンカウントする値をＱ倍にすることで、周波数変更直後の１０°ＣＡ期間における逓倍クロックの周期ずれを是正するのである。
【００６７】
（ｂ）：まず、分周回路１５と同様の第２の分周回路を設け、逓倍カウンタ２３には、その第２の分周回路から、カウント動作用のクロックが入力されるようにする。
そして、ＣＰＵ１３は、通常時においては、分周回路１５と上記第２の分周回路との両方が同じ周波数のクロックを出力するように指令するが、分周回路１５からパルス間隔カウンタ１７へのクロックの周波数を図２（Ｂ）のＳ２２０で変更すると、角度信号の次の立ち上がりタイミングで、上記第２の分周回路から逓倍カウンタ２３へのクロックの周波数を、パルス間隔カウンタ１７へのクロックと同じ周波数に変更する。つまり、逓倍カウンタ２３へのクロックの周波数は、パルス間隔カウンタ１７へのクロックの周波数を変更してから１０°ＣＡ後（角度信号の１パルス間隔後）に変更するのである。そして、このように構成しても、周波数変更直後の１０°ＣＡ期間における逓倍クロックの周期ずれをなくすことができる。
【００６８】
以上のような制御信号処理装置としてのマイコン１１によれば、エンジン回転数に拘わらず角度カウンタ２５のカウント値とクランク角との対応を正確なものにすることができ、制御信号を精度良く出力することができるようになる。
【００６９】
つまり、角度カウンタ２５の１カウント分の時間である逓倍クロックの周期には、最大で「（逓倍数Ｎ−１）／パルス間隔カウンタ１７による角度信号の１パルス間隔分のカウント値Ｔ」だけの誤差が生じるが、角度信号の１パルス間隔の時間（１０°ＣＡ分の時間）が長い低回転時よりも、その時間が短くなる高回転時の方が、サンプリング周波数を高くする（計測用クロックＣＬＫの周期を短くする）ことにより、低回転時と高回転時とで、パルス間隔カウンタ１７のカウント値Ｔに大差が生じないようにすることができ、その結果、高回転時においても、逓倍クロックの周期誤差を小さく抑えることができる。そして、逓倍クロックの周期誤差が小さくなれば、角度カウンタ２５のカウント値とクランク角との対応が一層正確になり、そのカウント値に基づき出力される制御信号の出力精度が向上するのである。
【００７０】
例えば、逓倍数Ｎが２５６でサンプリング周波数が１６ＭＨｚに固定されているとすると、「発明が解決しようとする課題」の欄で述べたように、エンジン回転数が１００００ｒｐｍ付近の９４７３ｒｐｍである場合には、逓倍クロックの周期誤差が９．１％にもなるが、仮に、サンプリング周波数を１０倍の１６０ＭＨｚにしたならば、その誤差は、約０．９１％に低減されることとなる。詳しくは、エンジン回転数が９４７３ｒｐｍ付近で、且つ、サンプリング周波数が１６０ＭＨｚとすると、逓倍クロックの周期誤差が最大となるのは、パルス間隔カウンタ１７のカウント値Ｔが２８１５９（＝２５６×１０９＋２５５）となる９４７０ｒｐｍのときであり、その場合の誤差は、２５５／２８１５９＝０．９１％になる。尚、このことを、「発明が解決しようとする課題」の欄で述べた内容と共にまとめると、図５のようになる。但し、この図５では、サンプリング周期が１６ＭＨｚで逓倍数Ｎを１６にした場合についても併せて記載している。
【００７１】
しかも、このマイコン１１によれば、角度信号の１パルス間隔が長くなる低回転時には、サンプリング周波数が低く設定されるため、パルス間隔カウンタ１７がカウントすべき最大値が必要以上に大きくなってしまうこともない。また、サンプリング周波数を高くすると、パルス間隔カウンタ１７や逓倍カウンタ２３のカウント動作が早くなるため消費電力が大きくなるが、本マイコン１１では、エンジン始動時などの低回転時にはサンプリング周波数が低く設定されることとなるため、そのような低回転時での消費電力を抑えることができる。
【００７２】
尚、本第１実施形態では、パルス間隔カウンタ１７が計測手段に相当し、カウント値レジスタ１９，逓倍演算部２１，及び逓倍カウンタ２３が逓倍信号生成手段に相当し、角度カウンタ２５が角度カウンタに相当している。また、計測用クロックＣＬＫの周期が計測用周期に相当している。そして、図２（Ａ）におけるＳ１２０〜Ｓ１４０の処理と図２（Ｂ）の処理とが、計測用周期変更手段に相当している。
【００７３】
また、上記第１実施形態では、サンプリング周波数を、大きいものが小さいものの２Y倍（Ｙは１以上の整数）の関係にある４通り（１６，３２，６４，１２８ＭＨｚ）の何れかに切り換えるように構成したが、そのような大小関係でない複数通りの周波数の何れかに切り換えるようにしても良い。但し、２Y倍の関係にある複数通りの周波数を作り出すのは、それ以外の関係にある周波数を作り出すよりも簡単であるため、上記実施形態のように構成した方が回路を簡略化することができ有利である。
【００７４】
次に、第２実施形態のエンジン制御装置に搭載されたマイコンについて説明する。
まず図６は、第２実施形態のマイコン４１の構成を表す構成図である。尚、図６において、図１と同様の構成要素については同一の符号を付しているため、詳細な説明は省略する。
【００７５】
図６に示すように、第２実施形態のマイコン４１は、第１実施形態のマイコン１１と比較すると、下記の（１）〜（６）の点が異なっている。
（１）：分周回路１５は、１種類の周波数（本第２実施形態では１６ＭＨｚ）の計測用クロックＣＬＫを出力する。
【００７６】
（２）：逓倍数ＮがＣＰＵ１３によってセットされる逓倍数レジスタ４３が設けられている。そして、逓倍演算部２１は、パルス間隔カウンタ１７からカウント値レジスタ１９にセットされた最新の計測値Ｔを、逓倍数レジスタ４３にセットされている逓倍数Ｎ（本第２実施形態では、２５６，１２８，６４，３２の４通りのうちの何れか：図９参照）で除算して、その除算の商の整数値Ｍを記憶する。尚、本第２実施形態においても、この逓倍演算部２１に記憶された整数値Ｍが、逓倍カウンタ２３のダウンカウントの初期値となる。
【００７７】
（３）：クロック経路切り換え回路４５が設けられている。そして、このクロック経路切り換え回路４５は、逓倍カウンタ２３からＡＮＤ回路３１を介して出力される逓倍クロックを、逓倍数レジスタ４３にセットされた逓倍数Ｎに応じて、角度カウンタ２５の下位カウンタ２５ｂを構成する各ビット毎のカウント手段のうち、下位４ビットｂ０〜ｂ３のカウント手段の何れかのクロック端子に入力する。
【００７８】
具体的に説明すると、まず、下位カウンタ２５ｂは、図７に示すように、自己のデータ端子とＱバー出力端子とが接続された８個のＤフリップフロップＦＦ０〜ＦＦ７からなる非同期式２５６進カウンタ（８ビットカウンタ）の構成を有している。尚、その８個のＤフリップフロップＦＦ０〜ＦＦ７が、各ビットｂ０〜ｂ７毎のカウント手段に相当する。また、図７において、６段目と７段目のＤフリップフロップＦＦ５，ＦＦ６は、図示を省略している。
【００７９】
そして、クロック経路切り換え回路４５は、ＡＮＤ回路３１の出力端子に接続された信号ライン（即ち、逓倍クロックが伝搬される信号ライン）４７と１段目のＤフリップフロップＦＦ０のクロック端子との接続／非接続を切り換えるスイッチＳＷ０と、２段目のＤフリップフロップＦＦ１のクロック端子を１段目のＤフリップフロップＦＦ０のＱバー出力端子と上記信号ライン４７との何れかに接続させるスイッチＳＷ１と、３段目のＤフリップフロップＦＦ２のクロック端子を２段目のＤフリップフロップＦＦ１のＱバー出力端子と上記信号ライン４７との何れかに接続させるスイッチＳＷ２と、４段目のＤフリップフロップＦＦ３のクロック端子を３段目のＤフリップフロップＦＦ２のＱバー出力端子と上記信号ライン４７との何れかに接続させるスイッチＳＷ３とを備えている。尚、以下の説明において、スイッチＳＷ０〜ＳＷ３のオンとは、そのスイッチに対応するＤフリップフロップのクロック端子が信号ライン４７に接続される方のことを意味している。
【００８０】
そして更に、逓倍数レジスタ４３にセットされた逓倍数Ｎが、２n（ｎは５〜８の各整数）で表される４通りの数値（３２＝２5，６４＝２6，１２８＝２7，２５６＝２8）のうちの２p（ｐは５〜８の何れか）であるとし、また、スイッチＳＷ０を１番目、スイッチＳＷ１を２番目、スイッチＳＷ２を３番目、スイッチＳＷ３を４番目とすると、クロック経路切り換え回路４５は、逓倍数レジスタ４３にセットされた逓倍数Ｎ（＝２p）に応じて、スイッチＳＷ０〜ＳＷ３のうち「９−ｐ」番目のスイッチだけをオンさせる。尚、図７は、逓倍数レジスタ４３にセットされた逓倍数Ｎが２５６である場合の接続状態（つまり、スイッチＳＷ０だけがオンされている状態）を表しており、この接続状態は、第１実施形態の場合のものと同じである。
【００８１】
よって、下位カウンタ２５ｂでは、逓倍数レジスタ４３にセットされた逓倍数Ｎが２p（ｐは５〜８の何れか）であれば、最上位ビットから数えてｐビット目（最下位ビットから数えたならば「９−ｐ」ビット目）が、逓倍クロックに応じたカウント動作の最下位ビットとなる。つまり、下位カウンタ２５ｂにおいて、最上位ビットから数えてｐビット目よりも下位のビットは変化せずに、そのｐビット目と該ｐビット目よりも上位のビットからなる部分が、逓倍クロックに応じてカウントアップ動作することとなる。
【００８２】
このため、逓倍数レジスタ４３にセットされる逓倍数Ｎが「３２，６４，１２８，２５６」のうちの何れに変更されても、角度カウンタ２５のＬＳＢ（下位カウンタ２５ｂの１ビット目ｂｏ）が示す重み（クランク角分解能）は、常に、逓倍数Ｎが２５６（＝２8）である場合の重み（＝１０°ＣＡ／２５６）となり、角度カウンタ２５のカウント値の連続性を確実に保つことができる。
【００８３】
（４）：入力切り換え回路４９が設けられている。そして、この入力切り換え回路４９は、ＮＡＮＤ回路３３の入力端子のうち、下位カウンタ２５ｂの下位３ビットｂ０〜ｂ２を入力するための各入力端子を、逓倍数レジスタ４３にセットされた逓倍数Ｎに応じて、下位カウンタ２５ｂからの各ビットｂ０〜ｂ２の信号ラインから切り離すと共に、論理“１”の電圧レベルに接続する。
【００８４】
具体的に説明すると、入力切り換え回路４９は、逓倍数Ｎが２５６であれば、下位カウンタ２５ｂの下位３ビットｂ０〜ｂ２をＮＡＮＤ３３にそのまま入力させるが、逓倍数Ｎが１２８であれば、ＮＡＮＤ回路３３にて１ビット目ｂ０を入力するための入力端子（以下、１ビット目入力端子という）を、その１ビット目ｂ０の信号ラインから切り離すと共に、その１ビット目入力端子を論理“１”に相当するハイレベル（例えば５Ｖ）に接続する。
【００８５】
また、入力切り換え回路４９は、逓倍数Ｎが６４であれば、上記１ビット目入力端子とＮＡＮＤ回路３３にて２ビット目ｂ１を入力するための入力端子（以下、２ビット目入力端子という）とを、１ビット目ｂ０及び２ビット目ｂ１の各信号ラインから切り離すと共に、その１ビット目入力端子と２ビット目入力端子とを論理“１”に相当するハイレベルに接続する。
【００８６】
また更に、入力切り換え回路４９は、逓倍数Ｎが３２であれば、上記１ビット目入力端子及び２ビット目入力端子と、ＮＡＮＤ回路３３にて３ビット目ｂ２を入力するための入力端子（以下、３ビット目入力端子という）とを、１ビット目ｂ０，２ビット目ｂ１，及び３ビット目ｂ２の各信号ラインから切り離すと共に、その１ビット目入力端子，２ビット目入力端子，及び３ビット目入力端子を論理“１”に相当するハイレベルに接続する。
【００８７】
つまり、入力切り換え回路４９は、逓倍数Ｎが２p（ｐは５〜８の何れか）であるとすると、ＮＡＮＤ回路３３の入力端子のうち、下位カウンタ２５ｂの最上位ビットから数えてｐビット目よりも下位のビットを入力するための入力端子を、そのビットの信号ラインから切り離して論理“１”のレベルに固定するようになっている。
【００８８】
そして、この入力切り換え回路４９の作用により、逓倍数Ｎが「３２，６４，１２８，２５６」のうちの何れに変更されても、ＮＡＮＤ回路３３によるガード機能が発揮されることとなる。逓倍数Ｎが２p（ｐは５〜８の何れか）であるとすると、下位カウンタ２５ｂの最上位ビットから数えてｐビット目（即ち、逓倍クロックに応じたカウント動作の最下位ビット）と該ｐビット目よりも上位のビットとが全て“１”になれば、ＮＡＮＤ回路３３の出力がローレベルになってＡＮＤ回路３１から逓倍クロックが出力されなくなるからである。
【００８９】
（５）：信号出力部２９は、設定部として設定値レジスタ２７にセットされている設定値と、角度カウンタ２５のカウント値（上位カウンタ２５ａの８ビットと下位カウンタ２５ｂの８ビットとからなる合計１６ビットのデータ値）とを大小比較して、「カウント値≧設定値」であったら制御信号を出力する（この例では、制御信号の出力レベルを反転させる）ように構成されている。
【００９０】
但し、信号出力部２９は、設定値レジスタ２７内の設定値が変更されたことで「カウント値≧設定値」の関係が成立しても制御信号は出力しないようになっている。つまり、設定値レジスタ２７に設定値がセットされる時には、たとえ「カウント値≧設定値」の関係が成立しても制御信号を出力せず、設定値がセットされた後、「カウント値＜設定値」の状態から「カウント値≧設定値」の状態に転じて始めて、制御信号を出力するように構成されている。
【００９１】
（６）：ＣＰＵ１３は、図２の処理に代えて、逓倍数Ｎを変更するために図８の処理を実行する。
そこで次に、本第２実施形態のマイコン４１において、ＣＰＵ１３が実行する処理の内容について説明する。
【００９２】
まず図８（Ａ）は、角度信号の立ち上がりタイミングのうち、エンジン回転数を算出すべきタイミングとして定められた特定のクランク角のタイミング毎（本第２実施形態においても１２０°ＣＡ毎）に実行される回転数算出処理を表すフローチャートである。
【００９３】
この回転数算出処理の実行が開始されると、まずＳ３１０にて、当該処理の前回の起動時刻から今回の起動時刻までの時間（１２０°ＣＡ分の時間）に基づき、エンジン回転数を算出する。
【００９４】
次に、Ｓ３２０にて、今回算出したエンジン回転数と、現在の逓倍数（即ち、逓倍数レジスタ４３に現在セットしている逓倍数）とから、その逓倍数を変更する必要があるか否かを判断する。
【００９５】
具体的に説明すると、マイコン４１内のＲＯＭ（図示省略）には、図９の上段の如くエンジン回転数と逓倍数との関係を示した回転数対逓倍数データマップが記憶されている。そして、Ｓ３２０では、その回転数対逓倍数データマップにおいて今回算出のエンジン回転数に対応する逓倍数を読み込み、その読み込んだ逓倍数と、現在の逓倍数とが異なっていれば、逓倍数を変更する必要があると判断する。
【００９６】
尚、図９の上段に示すように、回転数対逓倍数データマップは、エンジン回転数が高い場合ほど逓倍数が小さくなるように設定されている。また、回転数対逓倍数データマップは、図９の下段に示すように、逓倍クロックの周期の誤差（角度信号の１パルス間隔時間を「１／逓倍数Ｎ」にした本当の時間に対する誤差）の最大値が２％以下となるように設定されている。そして更に、この回転数対逓倍数データマップでは、逓倍数が変更される回転数付近で逓倍数の切り換えが頻繁に行われてしまうことがないように、ヒステリシスが設けられている。
【００９７】
そして、Ｓ３２０にて、逓倍数を変更する必要がないと判断した場合には、そのまま当該回転数算出処理を終了するが、逓倍数を変更する必要があると判断した場合には（Ｓ３２０：ＹＥＳ）、Ｓ３３０に進んで、変更すべき新たな逓倍数（つまり、Ｓ３２０で回転数対逓倍数データマップから読み込んだ逓倍数）を記憶する。そして更に、続くＳ３４０にて、フラグＦｂに“１”をセットした後、当該回転数算出処理を終了する。
【００９８】
次に、図８（Ｂ）は、図８（Ａ）の回転数算出処理が終了した後、次の角度信号の立ち上がりタイミングで実行される逓倍数変更処理を表すフローチャートである。
この逓倍数変更処理の実行が開始されると、まずＳ４１０にて、フラグＦｂが“１”であるか否かを判定し、フラグＦｂが“１”でなければ、そのまま当該逓倍数変更処理を終了するが、フラグＦｂが“１”であれば（Ｓ４１０：ＹＥＳ）、Ｓ４２０に進む。
【００９９】
そして、Ｓ４２０では、図８（Ａ）のＳ３３０で記憶された逓倍数を読み出し、その逓倍数を逓倍数レジスタ４３にセットし直す。そして更に、続くＳ４３０にて、フラグＦｂをクリア（フラグＦｂに“０”をセット）し、その後、当該逓倍数変更処理を終了する。
【０１００】
尚、イグニッションスイッチのオンに伴いエンジン制御装置に電源が投入されてマイコン４１が動作を開始した際に逓倍数レジスタ４３へセットされる逓倍数（つまり、逓倍数の初期値）は、図９からも分かるように、切り換えバリエーションのなかで最も大きい２５６である。
【０１０１】
このような第２実施形態のマイコン４１では、図１０に示すように、角度信号の立ち上がり毎に、角度カウンタ２５の上位８ビット（上位カウンタ２５ａの値）が１ずつアップすると共に、角度カウンタの下位８ビット（下位カウンタ２５ｂの値）が逓倍クロックによって０から１０進数で１，２，４，８の何れかずつアップする。つまり、上記（３）で説明した構成及び作用により、下位カウンタ２５ｂの値は、逓倍数レジスタ４３にセットされた逓倍数Ｎが２５６であれば、逓倍クロックによって１ずつアップし、逓倍数Ｎが１２８であれば、逓倍クロックによって２ずつアップし、逓倍数Ｎが６４であれば、逓倍クロックによって４ずつアップし、逓倍数Ｎが３２であれば、逓倍クロックによって８ずつアップする。
【０１０２】
このため、角度カウンタ２５の合計１６ビットのカウント値は、逓倍数Ｎに拘わらず、逓倍クロックに応じて、角度信号の１パルス間隔（１０°ＣＡ間隔）当たり２５６の割合で増加すると共に、角度信号が立ち上がる毎に２５６の整数倍の値に補正されることとなる。そして、角度カウンタ２５のカウント値が設定値レジスタ２７内の設定値以上になると制御信号が出力されることとなる。
【０１０３】
そして特に、本実施形態のマイコン４１では、逓倍数Ｎを、エンジン回転数に応じて、低回転時には大きくし、高回転時には小さくするようにしている。例えば、図１０に示すように、エンジン回転数が１５００ｒｐｍの場合には、逓倍数Ｎが２５６に設定される。そして、エンジン回転数が２１００ｒｐｍよりも高く（この例では２５００ｒｐｍ）になり、そのことが図８（Ａ）の回転数算出処理で検出されると、角度信号の次の立ち上がりタイミングで実行される図８（Ｂ）の逓倍数変更処理により、逓倍数Ｎが２５６よりも小さい値（この例では１２８）に変更されることとなる（図９参照）。
【０１０４】
以上のような制御信号処理装置としてのマイコン４１によっても、エンジン回転数に拘わらず角度カウンタ２５のカウント値とクランク角との対応を正確なものにすることができ、制御信号を精度良く出力することができるようになる。
【０１０５】
つまり、前述したように、逓倍クロックの周期には、最大で「（逓倍数Ｎ−１）／パルス間隔カウンタ１７による角度信号の１パルス間隔分のカウント値Ｔ」だけの誤差が生じるが、Ｔが大きくなる低回転時よりも、Ｔが小さくなる高回転時の方が、逓倍数Ｎを小さくすることにより、その誤差を、高回転時においても低回転時と同等に小さく抑えることができる。そして、逓倍クロックの周期誤差が小さくなれば、角度カウンタ２５のカウント値とクランク角との対応が一層正確になり、そのカウント値に基づき出力される制御信号の出力精度が向上するのである。
【０１０６】
また、このマイコン４１によれば、計測用クロックＣＬＫの周波数を大きくする必要がないため、パルス間隔カウンタ１７がカウントすべき最大値が大きくなったり、消費電流の増加を招くこともない。
【０１０７】
尚、高回転時に逓倍数Ｎを小さくすると、角度カウンタ２５のカウント値が表す時間の分解能（即ち、角度信号の１パルス間隔時間ｔｐを逓倍数Ｎで割った値＝「ｔｐ／逓倍数Ｎ」）が大きくなるが、図５における「丸数字６」の欄に示しているように、１００００ｒｐｍ付近の時に逓倍数Ｎが１６という小さい値であったとしても、その時間分解能は１１μｓ（逓倍数Ｎ＝３２ならば５．５μｓ）であり、５００ｒｐｍ付近の時に逓倍数Ｎを２５６とした場合の１３μｓと大きな差はないため、制御信号の出力精度に影響はない。つまり、逓倍数Ｎを、低回転時には大きくし高回転時には小さくすることで、角度カウンタ２５のカウント値が表す時間分解能を、回転数によらず一定範囲にすることができる。
【０１０８】
ところで、逓倍数Ｎを角度信号の１パルス間隔の途中で、それまでよりも小さい値に変更すると、角度カウンタ２５のカウント値が、変更後の逓倍数Ｎに合わない値をとってしまう可能性がある。
【０１０９】
例えば、図１１（Ａ）に示すように、逓倍数Ｎを角度信号の１パルス間隔の途中（即ち、角度カウンタ２５の下位カウンタ２５ｂがカウントアップしている途中）で、それまでの２５６から１２８に変更した場合を例に挙げると、逓倍数Ｎが２５６に設定されている時点では、角度カウンタ２５における下位カウンタ２５ｂの１ビット目ｂ０が逓倍クロックに応じたカウント動作の最下位ビットとなるが、逓倍数Ｎが１２８に変更されると、下位カウンタ２５ｂの２ビット目ｂ１が逓倍クロックに応じたカウント動作の最下位ビットとなり、その下位カウンタ２５ｂの１ビット目ｂ０は変化しなくなる。
【０１１０】
そして、逓倍数Ｎが切り換えられるタイミングとしては、図１１（Ｂ）の如く下位カウンタ２５ｂの１ビット目ｂ０が“１”である時（即ち、角度カウンタ２５のカウント値が奇数である時）と、図１１（Ｃ）の如く下位カウンタ２５ｂの１ビット目ｂ０が“０”である時（即ち、角度カウンタ２５のカウント値が偶数である時）との２通りがあるが、図１１（Ｂ）のように、角度カウンタ２５のカウント値が奇数である時に逓倍数Ｎが２５６から１２８に変更されたとすると、その後、角度信号に立ち上がりエッジが発生して下位カウンタ２５ｂがクリアされるまでは、その下位カウンタ２５ｂの値（延いては、角度カウンタ２５の値）が奇数になってしまう。
【０１１１】
そして、このような場合には、本来、逓倍数Ｎが１２８であるならば、角度カウンタ２５のカウント値は偶数である（即ち、下位カウンタ２５ｂの１ビット目ｂ０は“０”である）ということと矛盾してしまう。よって、例えば、「背景技術」の欄で述べたように角度カウンタ２５のカウント値が設定値と一致したら制御信号を出力する、といった構成の場合には、制御信号が出力されなくなってしまう可能性が生じる。
【０１１２】
しかし、本第２実施形態では、逓倍数Ｎを、角度信号の立ち上がりタイミング（即ち、下位カウンタ２５ｂがクリアされるタイミング）で変更するようにしているため、上記矛盾が発生するのを確実に避けることができる。
【０１１３】
一方、例えば図１２に示すように、エンジン回転数が８０００ｒｐｍで逓倍数Ｎが６４に設定されている場合に、設定値レジスタ２７内の設定値が、角度信号に立ち上がりエッジが発生する角度間隔（＝１０°ＣＡ）を現在の逓倍数（＝６４）で割った値を分解能（増減単位）として更新されたとする。尚、図１２の「設定値」の段と、後述する図１３とにおける「ＬＳＢ」とは、最下位ビットの意味ではなく、増減単位としての分解能のことである。
【０１１４】
そして、その後、エンジン回転数が８０００ｒｐｍから９０００ｒｐｍになったことにより逓倍数Ｎが３２に変更され、更にその後、角度カウンタ２５のカウント値が設定値レジスタ２７内の設定値に到達したとする。
【０１１５】
ここで、この場合、図１３（Ｄ）に示すように、角度カウンタ２５のカウント値は、変更後の逓倍数Ｎに応じた「１０°ＣＡ／３２」の分解能で増加するが、設定値の分解能は、変更前の逓倍数Ｎに応じた「１０°ＣＡ／６４」であり、角度カウンタ２５のカウント値は設定値の分解能よりも荒い分解能で増加していくこととなる。よって、角度カウンタ２５のカウント値が設定値を跨いでしまう可能性がある。このため、角度カウンタ２５のカウント値が設定値と一致したら制御信号を出力するといった構成では、制御信号が出力されなくなってしまう可能性がある。
【０１１６】
そして、この可能性は、逓倍数Ｎが６４から３２に変更された場合に限らず、それまでよりも小さい値に変更される場合に共通のものである。尚、図１３（Ａ）〜（Ｃ）に例示するように、角度カウンタ２５のカウント値の増加分解能が設定値の分解能と同じかそれよりも細かければ、こうした懸念はない。
【０１１７】
ここで、本第２実施形態のマイコン４１では、上記（５）で述べたように、信号出力部２９は「角度カウンタ２５のカウント値≧設定値」となったら制御信号を出力するように構成されているため、図１４に示すように、角度カウンタ２５のカウント値が設定値の分解能よりも荒い分解能で進んでいく、といった状況が発生した場合でも、必ず制御信号を出力することができる。このため、逓倍数Ｎを変更した場合でも、設定値を変更する必要はない。
【０１１８】
また、設定値の分解能は、角度信号に立ち上がりエッジが発生する角度間隔（＝１０°ＣＡ）を一番大きい逓倍数（＝２５６）で割った分解能（＝１０°ＣＡ／２５６）に固定しておくことが好ましい。このようにすれば、設定値の分解能を逓倍数Ｎに応じて変更しなくても、常に逓倍数Ｎに応じた最大限の精度で制御信号を出力することができるからである。
【０１１９】
尚、サンプリング周波数を変更する第１実施形態では、周波数変更直後の１０°ＣＡ期間中には制御信号を出力しないようにしていたが、サンプリング周波数が一定の本第２実施形態では、そのようにする必要はない。
【０１２０】
一方、本第２実施形態では、パルス間隔カウンタ１７が計測手段に相当し、カウント値レジスタ１９，逓倍演算部２１，逓倍カウンタ２３，及び逓倍数レジスタ４３が逓倍信号生成手段に相当し、角度カウンタ２５が角度カウンタに相当し、設定値レジスタ２７及び信号出力部２９が信号出力手段に相当している。また、計測用クロックＣＬＫの周期が計測用周期に相当している。そして、図８（Ａ）におけるＳ３２０〜Ｓ３４０の処理と図８（Ｂ）の処理とが、逓倍数変更手段に相当している。
【０１２１】
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
例えば、上記各実施形態では、エンジン回転数を１２０°ＣＡ分の時間から算出するようにしたが、それ以外の時間（１０°ＣＡ分の時間や３０°ＣＡ分の時間）からエンジン回転数を算出するようにしても良い。また、エンジン回転数の算出タイミングも、１２０°ＣＡ毎に限らず、１０°ＣＡ毎や３０°ＣＡ毎のタイミングでも良い。
【０１２２】
一方、上記各実施形態では、角度信号の立ち上がりエッジが特定エッジとなっていたが、立ち下がりエッジの方が特定エッジとなる構成であっても良い。
また、角度信号が、所定角度間隔毎（例えば５°ＣＡ毎）に立ち上がりエッジと立ち下がりエッジとが交互に発生する信号であるならば、その角度信号の立ち上がりエッジと立ち下がりエッジの両方を使えば良く、この場合には、立ち上がりエッジと立ち下がりエッジとの両方が、特定エッジとなる。つまり、例えば所定角度が５°ＣＡであるとすると、立ち上がりエッジから次の立下りエッジまでの５°ＣＡの間隔、および、立ち下がりエッジから次の立ち上がりエッジまでの５°ＣＡの間隔が、それぞれ１パルス間隔となり、そのそれぞれをパルス間隔カウンタ１７により計測するように構成すれば良い。
【０１２３】
また更に、上記各実施形態では、パルス間隔カウンタ１７の計測値（カウント値）Ｔを逓倍数Ｎで割った商（＝Ｔ／Ｎ）の整数部分を、計測値Ｔが逓倍数Ｎの何倍であるかを示す整数値Ｍとして逓倍カウンタ２３にカウントさせるようにしたが、例えば、その商の小数点以下（余りの部分）を四捨五入した整数値を、計測値Ｔが逓倍数Ｎの何倍であるかを示す整数値Ｍとして逓倍カウンタ２３にカウントさせるようにしても良い。
【０１２４】
また、上記各実施形態では、ダウンカウントする逓倍カウンタ２３を用いたが、アップカウントするカウンタを用いても良い。つまり、計測用クロックＣＬＫによって上記整数値Ｍだけカウントする毎に逓倍クロックとしての信号を発生させる構成であれば、カウントの方向はダウンとアップとのどちらでも良い。
【０１２５】
一方、上記各実施形態では、角度カウンタ２５を、制御信号の出力タイミングを決定するために用いていたが、角度カウンタ２５は他の様々な用途に使用することができる。例えば、マイコンの外部又は内部でトリガ信号が発生すると角度カウンタ２５のカウント値をラッチし、そのラッチしたカウント値からトリガ信号発生時のクランク角を把握する、といった構成を採ることもできる。
【図面の簡単な説明】
【０１２６】
【図１】第１実施形態のエンジン制御装置のマイコンの構成を表す構成図である。
【図２】第１実施形態のマイコンにおけるＣＰＵが実行する処理を表すフローチャートである。
【図３】回転数対周波数データマップを説明する説明図である。
【図４】第１実施形態の作用を表すタイムチャートである。
【図５】第１実施形態の効果を表す図である。
【図６】第２実施形態のエンジン制御装置のマイコンの構成を表す構成図である。
【図７】第２実施形態のマイコンにおけるＣＰＵが実行する処理を表すフローチャートである。
【図８】角度カウンタの下位カウンタ及びクロック経路切り換え回路を表す説明図である。
【図９】回転数対逓倍数データマップを説明する説明図である。
【図１０】第２実施形態の作用を表すタイムチャートである。
【図１１】逓倍数を角度信号の１パルス間隔の途中で小さい値に変更した場合を表す説明図である。
【図１２】逓倍数が小さい値に変更された場合の一例を表すタイムチャートである。
【図１３】角度カウンタのカウント値が設定値と一致したら制御信号を出力するようにした場合の問題を説明する説明図である。
【図１４】第２実施形態の効果を説明する説明図である。
【図１５】課題を説明するための説明図である。
【符号の説明】
【０１２７】
１１，４１…マイコン、１３…ＣＰＵ、１５…分周回路、１７…パルス間隔カウンタ、１９…カウント値レジスタ、２１…逓倍演算部、２３…逓倍カウンタ、２５…角度カウンタ、２５ａ…上位カウンタ、２５ｂ…下位カウンタ、２７…設定値レジスタ、２９…信号出力部、３１…ＡＮＤ回路、３３…ＮＡＮＤ回路、４３…逓倍数レジスタ、４５…クロック経路切り換え回路、４７…信号ライン、ＦＦ０〜ＦＦ７…Ｄフリップフロップ、ＳＷ０〜ＳＷ３…スイッチ、４９…入力切り換え回路
【図１】
2005048698.tif 000003
【図２】
2005048698.tif 000004
【図３】
2005048698.tif 000005
【図４】
2005048698.tif 000006
【図５】
2005048698.tif 000007
【図６】
2005048698.tif 000008
【図７】
2005048698.tif 000009
【図８】
2005048698.tif 000010
【図９】
2005048698.tif 000011
【図１０】
2005048698.tif 000012
【図１１】
2005048698.tif 000013
【図１２】
2005048698.tif 000014
【図１３】
2005048698.tif 000015
【図１４】
2005048698.tif 000016
【図１５】
2005048698.tif 000017