(57)【特許請求の範囲】
【請求項１】
第１の処理と第２の処理とを含む複数の割込み処理を実行する電子制御装置において、
第１の割込み要求に応答して前記第１の処理（１３）を実行し、第２の割込み要求に応答して前記第２の処理（１２）を実行するとともに、前記第１の処理及び前記第２の処理とは別の割込み処理として他の処理（１４）を実行する処理実行部（１１）と、
複数の前記割込み処理の待ち順序を記憶し、記憶された順序に従って、前記処理実行部に対して実行を要求するものであり、前記処理実行部において何らかの前記割込み処理が実行中であるために待たされる複数の前記割込み処理に、予め設定された優先順位に従って実行順序を設定し、当該実行順序に従って前記処理実行部に実行を要求するキュー処理部（１５）と、
前記キュー処理部に設定された前記実行順序を、前記第１の処理及び前記第２の処理について操作するキュー操作部（１６、１７、１８）と、を備え、
前記優先順位が、前記他の処理＞前記第１の処理＞前記第２の処理とされており、
前記他の処理を実行中に、第２の割込み要求が先に発生し、次いで第１の割込み要求が発生した場合、前記キュー処理部は、前記優先順位に従って、前記第１の処理が先に実行されるように実行順序を設定し、前記キュー操作部は、割込み要求の発生時刻の順に従って前記第２の処理が先に実行されるように、前記実行順序を操作することを特徴とする電子制御装置。
【請求項２】
前記キュー操作部は、前記第１の処理と前記第２の処理とが交互に実行されるように、前記キュー処理部に設定された前記実行順序を操作することを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記キュー操作部は、前記処理実行部における同じ処理の連続実行を判定し、この判定に応答して、前記第１の処理と前記第２の処理とが割込み時刻の順序で実行されるように、前記キュー処理部に設定された前記実行順序を操作することを特徴とする請求項１または請求項２に記載の電子制御装置。
【請求項４】
前記キュー操作部は、
前記第１の処理および前記第２の処理の実行を示すフラグを設定するフラグ設定部（１６）と、
前記フラグと、前記キュー処理部によって次に要求される処理とを比較し、同じ処理の連続実行を検出する比較部（１７）と、
前記連続実行の判定に応答して、前記キュー処理部に設定された前記実行順序を修正するキュー修正部（１８）とを備えることを特徴とする請求項１から請求項３のいずれかに記載の電子制御装置。
【請求項５】
前記キュー操作部は、前記キュー処理部に設定された前記実行順序を並べ替えることを特徴とする請求項１から請求項４のいずれかに記載の電子制御装置。
【請求項６】
前記キュー操作部は、前記キュー処理部に設定された前記実行順序の少なくとも一部を無効化することを特徴とする請求項１から請求項４のいずれかに記載の電子制御装置。
【請求項７】
エンジンの回転角を検出するためのパルス信号を出力する回転角センサ（３）と、
前記パルス信号の立上りエッジに応答して前記第１の割込み要求を発生し、前記パルス信号の立下りエッジに応答して前記第２の割込み要求を発生する入力回路（６ａ）とを備え、
前記第１の処理と前記第２の処理とは、前記パルス信号のパルス幅を計測する計測部を提供し、
前記エンジンの制御のために用いられることを特徴とする請求項１から請求項６のいずれかに記載の電子制御装置。
【請求項８】
前記回転角センサは、前記エンジンの回転方向に応じて長さが異なるパルスを出力する出力部（５ｂ）を備えることを特徴とする請求項７に記載の電子制御装置。
【請求項９】
前記エンジンは、車両の走行用の動力源であり、
前記電子制御装置は、前記車両が一時停止したときに前記エンジンを自動的に停止させ、前記車両が走行を再開する前に前記エンジンを自動的に再始動させる自動エンジン停止再始動システムを構成することを特徴とする請求項８に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１の処理と第２の処理とを含む複数の割込み処理を実行する電子制御装置に関する。本発明は、回転角センサの信号に応答して割込み処理を実行するエンジン制御装置に適用して好適である。
【背景技術】
【０００２】
特許文献１は、エンジンに設けられた回転角センサが出力する信号に応答して割込み処理を実行するエンジン制御装置が開示されている。この装置では、回転角センサとして、クランク角センサが使用されている。また、この装置では、複数の割込み処理が、予め定められた優先度に応じて、処理されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３４９４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術のような外部割込みを許容するマイクロコンピュータでは、複数の割込みを単一の割込みポートに入力する場合がある。しかし、複数の割込みの間隔が短い場合、一方の割込み時刻が、他方の割込み時刻によって上書きされることがあり、一方の割込み処理が実行されない可能性がある。
【０００５】
このような問題は、割込み入力をマイクロコンピュータの２つの割込みポートに分けて入力するように構成することによって解決できる。しかし、割込みポートに対応して、処理の優先度が設定されるため、２つの割込み処理に優先順位が生じる。この場合、割込み処理が、割込み時刻に従った順序で実行されることなく、優先順位に従う順序で実行されるという問題点があった。
【０００６】
例えば、回転角センサのパルス信号の立下りに対応する割込み処理と、立上りに対応する割込み処理とを実行する場合、立下りと立上りとの間隔が短くなることがある。また、これらパルス信号に応答した割込み処理より、さらに優先順位が高い割込み処理が発生した場合、割込み時刻に従った順序で、立下りと立上りとの割込み処理が実行されないことがあった。
【０００７】
特に、エンジンの正回転と逆回転とを判定する場合、パルス信号の立下りと立上りとの順序、すなわち割込み時刻に従った順序で割込み処理が実行されることが正しい回転方向判定のためには重要である。
【０００８】
本発明は上記問題点に鑑みてなされたものであり、その目的は、優先順位に従う割込み処理の実行を回避することができる電子制御装置を提供することである。
【０００９】
本発明の他の目的は、実行待ちの処理に優先順位に従う実行順序が設定される構成においても、同じ処理の連続実行を回避することができる電子制御装置を提供することである。
【００１０】
本発明のさらに他の目的は、エンジンの回転方向を正しく判定することができるエンジン制御装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明は上記目的を達成するために以下の技術的手段を採用する。
【００１２】
請求項１に記載の発明は、第１の処理と第２の処理とを含む複数の割込み処理を実行する電子制御装置において、第１の割込み要求に応答して第１の処理（１３）を実行し、第２の割込み要求に応答して第２の処理（１２）を実行するとともに、第１の処理及び第２の処理とは別の割込み処理として他の処理（１４）を実行する処理実行部（１１）と、複数の割込み処理の待ち順序を記憶し、記憶された順序に従って、処理実行部に対して実行を要求するものであり、処理実行部において何らかの割込み処理が実行中であるために待たされる複数の割込み処理に、予め設定された優先順位に従って実行順序を設定し、当該実行順序に従って処理実行部に実行を要求するキュー処理部（１５）と、キュー処理部に設定された実行順序を、第１の処理及び第２の処理について操作するキュー操作部（１６、１７、１８）と、を備え、優先順位が、他の処理＞第１の処理＞第２の処理とされており、他の処理を実行中に、第２の割込み要求が先に発生し、次いで第１の割込み要求が発生した場合、キュー処理部は、優先順位に従って、第１の処理が先に実行されるように実行順序を設定し、キュー操作部は、割込み要求の発生時刻の順に従って第２の処理が先に実行されるように、実行順序を操作することを特徴とする。
【００１３】
この構成によると、第１の処理と第２の処理と他の処理とを含む複数の割込み処理が実行される。第１の割込み要求に応答して第１の処理が実行され、第２の割込み要求に応答して第２の処理が実行される。また、処理実行部において他の処理を実行中に第１の処理または第２の処理が要求された場合には、その要求された処理が待たされる。このような処理の待ち制御は、キュー処理部によって実現される。キュー処理部は、複数の割込み処理に対して予め設定された優先順位に従って実行順序を設定する。優先順位は、他の処理＞第１の処理＞第２の処理とされている。さらに、キュー処理部は、設定された実行順序に従って処理実行部に割込み処理の実行を要求する。さらに、キュー処理部に設定された実行順序は操作される。他の処理を実行中に、第２の割込み要求が先に発生し、次いで第１の割込み要求が発生した場合、キュー処理部は、優先順位に従って、第１の処理が先に実行されるように実行順序を設定し、キュー操作部は、割込み要求の発生時刻の順に従って第２の処理が先に実行されるように、実行順序を操作する。この結果、優先順位に従って複数の割込み処理の実行順序を設定し、格納するキュー処理部を用いた場合であっても、第１の処理の連続実行、第２の処理の連続実行が回避される。
【００１４】
請求項２に記載の発明は、キュー操作部は、第１の処理と第２の処理とが交互に実行されるように、キュー処理部に設定された実行順序を操作することを特徴とする。この構成によると、優先順位に従うキュー処理部を採用した構成においても、第１の処理と第２の処理とが交互に実行される。よって、第１の処理と第２の処理とが一組となって共に実行されることによって得られる結果が誤った結果となることを抑制できる。
【００１５】
請求項３に記載の発明は、キュー操作部は、処理実行部における同じ処理の連続実行を判定し、この判定に応答して、第１の処理と第２の処理とが割込み時刻の順序で実行されるように、キュー処理部に設定された実行順序を操作することを特徴とする。この構成によると、同じ処理の連続実行が判定されると、これに応答して、キュー処理部に設定された実行順序が操作される。特に、第１の処理と第２の処理とが割込み時刻の順序で実行されるように操作される。したがって、優先順位に従うキュー処理部を採用した構成においても、割込み時刻の順序を再現して、処理を実行することができる。
【００１６】
請求項４に記載の発明は、キュー操作部は、第１の処理および第２の処理の実行を示すフラグを設定するフラグ設定部（１６）と、フラグと、キュー処理部によって次に要求される処理とを比較し、同じ処理の連続実行を検出する比較部（１７）と、連続実行の判定に応答して、キュー処理部に設定された実行順序を修正するキュー修正部（１８）とを備えることを特徴とする。この構成によると、フラグを用いた簡単なロジック処理によって同じ割込み処理の連続実行を判定することができる。
【００１７】
請求項５に記載の発明は、キュー操作部は、キュー処理部に設定された実行順序を並べ替えることを特徴とする。この構成によると、実行順序を並べ替えることによって操作が実行される。
【００１８】
請求項６に記載の発明は、キュー操作部は、キュー処理部に設定された実行順序の少なくとも一部を無効化することを特徴とする。この構成によると、実行順序の少なくとも一部を無効化することによって操作が実行される。無効化により、実行順序によって示された処理の少なくとも一部が実行されない。この結果、一部の処理が実行されないことにより、それ以降は、複数の割込み処理の交互の実行、または割込み時刻の順序に従う実行が実現される。
【００１９】
請求項７に記載の発明は、エンジンの回転角を検出するためのパルス信号を出力する回転角センサ（３）と、パルス信号の立上りエッジに応答して第１の割込み要求を発生し、パルス信号の立下りエッジに応答して第２の割込み要求を発生する入力回路（６ａ）とを備え、第１の処理と第２の処理とは、パルス信号のパルス幅を計測する計測部を提供し、エンジンの制御のために用いられることを特徴とする。この構成によると、エンジンの制御のために用いられる電子制御装置において、すなわちエンジン制御装置において、優先順位に従って複数の割込み処理の実行順序を設定し、格納するキュー処理部を用いた場合であっても、同じ処理の連続実行が回避される。この結果、第１の処理と第２の処理とが一組の割込み処理となって計測されるパルス幅の誤検出が抑制される。
【００２０】
請求項８に記載の発明は、回転角センサは、エンジンの回転方向に応じて長さが異なるパルスを出力する出力部（５ｂ）を備えることを特徴とする。この構成によると、パルス信号のパルス幅によって、エンジンの回転方向が示される。この構成によると、パルス幅の誤検出が抑制されるから、エンジンの回転方向の誤判定が抑制される。
【００２１】
請求項９に記載の発明は、エンジンは、車両の走行用の動力源であり、電子制御装置は、車両が一時停止したときにエンジンを自動的に停止させ、車両が走行を再開する前にエンジンを自動的に再始動させる自動エンジン停止再始動システムを構成することを特徴とする。この構成によると、自動エンジン停止再始動システムが構成される。このようなシステムでは、エンジンの停止位置を正確に特定するために、エンジンの回転方向を正確に検出することが必要となる。この構成によると、エンジンの回転方向の誤判定が抑制されるから、自動エンジン停止再始動システムの有用性を十分に発揮させることができる。
【００２２】
なお、特許請求の範囲および上記手段の項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００２３】
【図１】本発明を適用した第１実施形態に係るエンジン制御装置を示すブロック図である。
【図２】第１実施形態の制御装置によって実現される機能を示す機能的なブロック図である。
【図３】第１実施形態の立上り処理を示すフローチャートである。
【図４】第１実施形態の立下り処理を示すフローチャートである。
【図５】第１実施形態の各部の状態変化を示すタイムチャートであって、図５Ａはパルス信号を示し、図５Ｂは処理Ｚの割込み要求ＲＱＺを示し、図５Ｃは立上りフラグを示し、図５Ｄは立下りフラグを示し、図５Ｅはキューの内容を示し、図５Ｆは処理内容を示す。
【発明を実施するための形態】
【００２４】
以下に、図面を参照しながら本発明を実施するための複数の形態を説明する。各形態において先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を適用することができる。また、後続の実施形態においては、先行する実施形態で説明した事項に対応する部分に百以上の位だけが異なる参照符号を付することにより対応関係を示し、重複する説明を省略する場合がある。各実施形態で具体的に組合せが可能であることを明示している部分同士の組合せばかりではなく、特に組合せに支障が生じなければ、明示してなくとも実施形態同士を部分的に組み合せることも可能である。
【００２５】
（第１実施形態）
図１は、本発明を適用した第１実施形態に係るエンジン制御装置１を示すブロック図である。エンジン制御装置１は、エンジン（ＥＮＧＮ）２を制御する制御システムを構成する。エンジン２は、内燃機関である。エンジン２は、走行用の動力源として、車両に搭載されている。エンジン制御装置１は、車両が一時停止したときにエンジン２を自動的に停止させ、車両が走行を再開する前にエンジン２を自動的に再始動する自動エンジン停止再始動システムを構成する。このようなシステムは、アイドリング−ストップ−アンド−スタート−システムとも呼ばれる。このようなシステムでは、エンジン２の再始動を容易にするために、エンジン２の停止位置を高精度に認識する必要がある。このために、エンジン２の回転方向を正確に検出することが重要である。エンジン制御装置１は、回転角センサ３と、制御装置（ＥＣＵ）６と、アクチュエータ（ＡＣＴＭ）７とを備える。エンジン制御装置１は、回転角センサ３を含む複数のセンサを備える。複数のセンサは、エンジン２の作動状態、エンジン２への要求などを検出する。エンジン制御装置１は、アクチュエータ７を含む複数のアクチュエータを備える。複数のアクチュエータは、エンジン２の作動状態を調節するための機器、例えば、燃料噴射装置、および点火装置などである。制御装置６は、複数のセンサから信号を入力し、エンジン２の運転状態を適切に維持するように複数のアクチュエータを制御する。
【００２６】
回転角センサ３は、エンジンのクランク軸の回転角度を検出するクランク角センサである。回転角センサ３は、クランク軸に連結されたロータ４を備える。ロータ４には、所定の回転角ごとに信号を発生するための複数の歯が形成されている。回転角センサ３は、ロータ４に対向するように設けられたパルサ（ＰＬＳＲ）５を備える。パルサ５は、電磁的にまたは光学的にロータ４の歯を検出するピックアップによって提供される。パルサ５は、歯の通過に同期したパルス信号を出力する。
【００２７】
さらに、パルサ５は、判定部（ＲＤＤＭ）５ａと、出力部（ＰＳＧＭ）５ｂとを備える。判定部５ａは、エンジン２の回転方向を判定する。出力部５ｂは、判定部５ａによって判定された回転方向を示すパルス幅をもつパルス信号ＰＬＳを発生し、出力する。出力部５ｂは、エンジン２が正方向（Ｎｄｉｒ）に回転するとき、短いパルスを出力する。出力部４ｂは、エンジン２が逆方向（Ｒｄｉｒ）に回転するとき、長いパルスを出力する。この結果、パルス信号ＰＬＳのパルス幅を計測することにより、エンジン２の回転方向を知ることができる。また、パルス信号ＰＬＳの周期を計測することにより、エンジン２の回転数を知ることができる。
【００２８】
制御装置６は、第１の処理と第２の処理とを含む複数の割込み処理を実行する電子制御装置である。制御装置６は、パルス信号ＰＬＳを入力するための入力回路（ＩＮＰＣ）６ａを備える。さらに、制御装置６は、マイクロコンピュータを構成する複数のコンポーネントである、演算処理装置（ＣＰＵ）６ｂ、一時メモリ（ＲＡＭ）６ｃ、および不揮発メモリ（ＲＯＭ）６ｄを備える。制御装置６は、コンピュータによって読み取り可能な記憶媒体を備えるマイクロコンピュータによって提供される。例えば、不揮発メモリ６ｄが記憶媒体を提供する。記憶媒体は、コンピュータによって読み取り可能なプログラムを非一時的に格納している。記憶媒体は、半導体メモリまたは磁気ディスクによって提供されうる。プログラムは、制御装置６によって実行されることによって、制御装置６をこの明細書に記載される装置として機能させ、この明細書に記載される制御方法を実行するように制御装置６を機能させる。制御装置６が提供する手段は、所定の機能を達成する機能的ブロック、またはモジュールとも呼ぶことができる。
【００２９】
図２は、第１実施形態の制御装置６によって実現される機能を示す機能的なブロック図である。制御装置６は、それ自身が有するハードウェアおよびソフトウェアによって複数の機能的なブロックを提供する。これらの機能的なブロックは、手段、またはモジュールとも呼ばれる。
【００３０】
入力回路６Ａは、複数の入力ポートを備える。複数の入力ポートには、第１の割込みポートＩＮＴ１と、第２の割込みポートＩＮＴ２とが含まれている。この実施形態では、パルス信号ＰＬＳのひとつのパルスは、立下りエッジによって示される前エッジと、立上りエッジによって示される後エッジとを有している。第１の割込みポートＩＮＴ１は、パルス信号ＰＬＳの立上りエッジＴＥを受け付け、割込み要求ＲＱ１を出力する。第２の割込みポートＩＮＴ２は、パルス信号ＰＬＳの立下りエッジＬＥを受け付け、割込み要求ＲＱ２を出力する。割込み要求ＲＱ１と割込み要求ＲＱ２とには、異なる優先順位が設定されている。割込み要求ＲＱ１の優先順位は、割込み要求ＲＱ２のそれより高い。
【００３１】
制御装置６は、処理実行部（ＰＲＳＭ）１１を備える。処理実行部１１は、エンジン２を制御するための複数の制御処理を実行する。複数の制御処理は、予め設定された実行順序に従って実行される。この実行順序は、処理を開始するための要求時刻の順序、または複数の処理に設定された優先順位に基づいて決まる。複数の処理には、パルス信号ＰＬＳの立下りエッジ（ＬＥ）に応答して実行される立下り処理（ＬＥＰＭ）１２が含まれている。立下り処理１２は、第２の割込み要求ＲＱ２に応答して実行される。複数の処理には、パルス信号ＰＬＳの立上りエッジ（ＴＥ）に応答して実行される立上り処理（ＴＥＰＭ）１３とが含まれている。立上り処理１３は、第１の割込み要求ＲＱ１に応答して実行される。制御装置６は、ひとつのパルスに対して、立下り処理１２と立上り処理１３との一組を実行することによって、ひとつのパルス幅を計測する。一組の立下り処理１２と立上り処理１３とは、パルス幅を計測する計測部を提供する。制御装置６は、計測されたパルス幅に基づいて、エンジン２の回転方向を判定する。立下り処理１２と立上り処理１３とは、立下りエッジまたは立上りエッジに応答して実行されるから、割込み処理に分類される処理である。パルスｎの立下りエッジに対応する立下り処理１２は、Ｌ（ｎ）で示される。パルスｎの立上りエッジに対応する立上り処理１３は、Ｔ（ｎ）で示される。立上り処理１３は、第１の処理とも呼ばれる。立下り処理１２は、第２の処理とも呼ばれる。処理実行部１１は、第１の割込み要求ＲＱ１に応答して第１の処理１３を実行し、第２の割込み要求ＲＱ２に応答して第２の処理１２を実行する。さらに、複数の処理には、他の処理（ＯＴＨＭ）１４が含まれている。他の処理１４もまた割込み処理である。他の処理１４は、Ｚで示される。立上り処理１３の優先順位は、立下り処理１２の優先順位より高い。さらに、他の処理１４の優先順位は、立下り処理１２と立上り処理１３との優先順位より高い。よって、複数の処理の間の優先順位は、Ｚ＞Ｔ（ｎ）＞Ｌ（ｎ）である。
【００３２】
制御装置６は、キュー処理部（ＣＵＥＭ）１５を備える。キュー処理部１５は、複数の処理の待ち順序を記憶し、記憶された順序に従って、処理実行部１１に対して処理の実行を要求する。キュー処理部１５は、処理実行部１１において何らかの処理が実行中であるために待たされる割込み処理を、割込み要求の発生時刻の順序とは異なる所定の順序で記憶する。キュー処理部１５は、予め定められた優先順位に基づいて待たされている割込み処理を並べる。キュー処理部１５は、処理実行部１１において他の処理１４を実行中に第１または第２の処理が要求された場合に、要求された処理の実行を待たせる。さらに、キュー処理部１５は、複数の割込み処理に対して予め設定された優先順位（Ｚ＞Ｔ（ｎ）＞Ｌ（ｎ））に従って待たされている複数の処理に実行順序を設定し、当該実行順序に従って処理実行部１１に実行を要求する。例えば、他の処理Ｚと、パルス（Ｂ）に対する処理Ｌ（Ｂ）、Ｔ（Ｂ）とが待たされている場合、キュー処理部１５は、Ｚ＞Ｔ（Ｂ）＞Ｌ（Ｂ）の順序で記憶する。この結果、処理実行部には、キュー処理部１５から、まず処理Ｚが要求され、次に、処理Ｔ（Ｂ）が要求され、最後に処理Ｌ（Ｂ）が要求される。さらに、キュー処理部１５は、そこに記憶された複数の処理の順序をソフトウェアによって並べ替ることができるように構成されている。キュー処理部１５は、複数の処理の実行順序を管理する実行順序管理部、またはタスク管理部とも呼ぶことができる。
【００３３】
制御装置６は、キュー処理部１５に記憶された複数の処理の順序を操作するキュー操作部を備える。キュー操作部は、ひとつのパルスに対する立下り処理１２の後に、同じひとつのパルスに対する立上り処理１３が実行されるように、キュー処理部１５に記憶された順序を操作する。キュー操作部は、同じ処理の連続実行を回避するようにキュー処理部１５に設定された複数の処理の実行順序を操作する。キュー操作部は、立下り処理１２と立上り処理１３とが交互に実行されるように、キュー処理部１５に待たされている処理の実行順序を操作する。キュー操作部は、ひとつの態様においては、キュー処理部１５に格納された複数の処理の順序を並べ替える。キュー操作部は、優先順位に基づいてキュー処理部１５に記憶された複数の処理の順序を、割込み要求時刻の順序に従うように並べ替える。具体的には、キュー操作部は、立下り処理１２の後に、再び、立下り処理１２が実行されようとすること、または立上り処理１３の後に、再び、立上り処理１３が実行されようとすることを検出する。これらの場合、キュー操作部は、キュー処理部１５に待たされている立下り処理１２と立上り処理１３との順序を入れ替える。これにより、優先順位型のキュー処理部１５を用いていても、立下り処理１２の後に、立上り処理１３が実行される。
【００３４】
キュー操作部は、フラグ設定部（ＦＬＧＭ）１６と、比較部（ＣＭＰＭ）１７と、キュー修正部（ＣＣＲＭ）１８とを備える。フラグ設定部１６は、立下り処理１２および立上り処理１３の実行を示すフラグを設定する。比較部１７は、フラグに基づいて、同じ処理が連続して実行されるか否かを判定する。具体的には、フラグと、キュー処理部１５によって次に要求される処理とを比較し、同じ処理の連続実行を検出する。例えば、比較部１７は、フラグによって立下り処理１２の実行後であることが示されており、かつ、キュー処理部１５によって再び立下り処理１２の実行が要求される場合を判定する。フラグ設定部１６と比較部１７とは、同じ処理の連続実行を判定する連続判定部を構成している。キュー修正部１８は、比較部１７によって同じ処理の連続実行が判定されると、キュー処理部１５に記憶されている処理を入れ替える。具体的には、キュー処理部１５に待たされている立下り処理１２および立上り処理１３のうち、最も高順位の処理と、次の順位の処理とを入れ替える。これにより、同じ処理が連続して実行されることが回避され、立下り処理１２と立上り処理１３とを交互に実行することができる。
【００３５】
図３は、第１実施形態の立下り処理１２０を示すフローチャートである。立下り処理１２０は、割込み要求ＲＱ２またはキュー処理部１５からの要求に応答して実行される。ステップ１２１では、立下りフラグＦＬＧＬがセット状態であるか否かを判定する。立下りフラグＦＬＧＬがセット状態ではない場合、すなわちリセット状態である場合、ステップ１２２へ進む。ステップ１２２では、立下り処理を実行する。ステップ１２３では、立下りフラグＦＬＧＬをセット状態に設定する。この結果、立下りフラグＦＬＧＬは、立下り処理Ｌ（ｎ）の実行後であることを示す。ステップ１ｓ４では、立上りフラグＦＬＧＴをリセット状態に設定する。この結果、立上りフラグＦＬＧＴは、立上り処理Ｔ（ｎ）の実行待ちであることを示す。
【００３６】
ステップ１２１において、立下りフラグＦＬＧＬがセット状態である場合、ステップ１２５へ進む。ステップ１２５では、キュー処理部１５に記憶された順序が修正される。例えば、立上り処理Ｔ（ｎ）が実行された後に、再び、次のパルス（ｎ＋１）に対する立上り処理Ｔ（ｎ＋１）が実行されようとしている場合にステップ１２５へ進む。ステップ１２５では、キュー処理部１５に記憶されている立下り処理Ｌ（ｎ＋１）と、立上り処理Ｔ（ｎ＋１）とを入れ替える。すなわち、ステップ１２５では、キュー処理部１５に記憶されている処理を割込要求の発生時刻の順に並べる。
【００３７】
図４は、第１実施形態の立上り処理１３０を示すフローチャートである。立上り処理１３０は、割込み要求ＲＱ１またはキュー処理部１５からの要求に応答して実行される。ステップ１３１では、立上りフラグＦＬＧＴがセット状態であるか否かを判定する。立上りフラグＦＬＧＴがセット状態ではない場合、すなわちリセット状態である場合、ステップ１３２へ進む。ステップ１３２では、立上り処理を実行する。ステップ１３３では、立上りフラグＦＬＧＴをセット状態に設定する。この結果、立上りフラグＦＬＧＴは、立上り処理Ｔ（ｎ）の実行後であることを示す。ステップ１３４では、立下りフラグＦＬＧＬをリセット状態に設定する。この結果、立下りフラグＦＬＧＬは、立下り処理Ｌ（ｎ＋１）の実行待ちであることを示す。
【００３８】
立上りフラグＦＬＧＴがセット状態である場合、ステップ１３５へ進む。ステップ１３５では、キュー処理部１５に記憶された順序が修正される。例えば、立下り処理Ｌ（ｎ）が実行された後に、再び、次のパルス（ｎ＋１）に対する立下り処理Ｌ（ｎ＋１）が実行されようとしている場合にステップ１３５へ進む。ステップ１３５では、立下り処理Ｌ（ｎ＋１）と、立上り処理Ｔ（ｎ）とを入れ替える。すなわち、ステップ１３５では、キュー処理部１５に記憶されている処理を割込要求の発生時刻の順に並べる。なお、この実施形態では、立上り処理１３の優先順位が立下り処理１２の優先順位より高く設定されているから、ステップ１３５が実行される事態は稀である。
【００３９】
図５は、第１実施形態の各部の状態変化の一例を示すタイムチャートである。図５Ａはパルス信号ＰＬＳを示す。図５Ｂは処理Ｚの割込み要求ＲＱＺを示す。図５Ｃは立上りフラグＦＬＧＴを示す。図５Ｄは立下りフラグＦＬＧＬを示す。図５Ｅはキュー処理部１５に記憶された内容を示す。図５Ｆは処理実行部１１における処理を示す。横軸Ｔは、時間を示している。
【００４０】
時刻ｔ１においてパルス信号ＰＬＳが立上る。パルス（Ａ）は時刻ｔ１までの時間によってエンジン２の回転方向を示している。時刻ｔ１において割込み要求ＲＱ１が発生し、ステップ１３２によって処理Ｔ（Ａ）が実行される。処理Ｔ（Ａ）は、時刻ｔ２に終了する。時刻ｔ２において、ステップ１３３によって立上りフラグＦＬＧＴがセットされ、ステップ１３４によって立下りフラグＦＬＧＬがリセットされる。その後時刻ｔ３において処理Ｚの割込み要因ＲＱＺが立上る。これに応答して、キュー処理部１５には、処理Ｚが記憶され格納される。図示の例では、時刻ｔ３から処理Ｚが実行される。処理Ｚは時刻ｔ６までかかって実行される。
【００４１】
時刻ｔ４において、パルス（Ｂ）が立ち下る。時刻ｔ４において割込み要求ＲＱ２が発生する。しかし、時刻ｔ４においては処理Ｚが実行中であるから、立下り処理１２０は実行されない。割込み要求ＲＱ２に応答して、キュー処理部１５には、処理Ｌ（Ｂ）が記憶され格納される。
【００４２】
時刻ｔ５においてパルス信号ＰＬＳが再び立上る。パルス（Ｂ）は時刻ｔ４と時刻ｔ５との間の時間によってエンジン２の回転方向を示している。時刻ｔ５において割込み要求ＲＱ１が発生する。しかし、時刻ｔ５においては処理Ｚが実行中であるから、立上り処理１３０は実行されない。割込み要求ＲＱ１に応答して、キュー処理部１５には、処理Ｔ（Ｂ）が追加的に記憶される。処理Ｔ（Ｂ）の優先順位は、処理Ｌ（Ｂ）の優先順位より高い。このため、キュー処理部１５には、優先順位の順序に従って、Ｔ（Ｂ）＞Ｌ（Ｂ）の順序で処理が記憶される。
【００４３】
やがて、時刻ｔ６において、処理Ｚが終了する。これに応答して、キュー処理部１５から処理Ｔ（Ｂ）の実行が要求される。一方、処理Ｔ（Ｂ）は、立上り処理であるから、キュー処理部１５からの要求と同時にまたはそれより先行して、立上り処理１３０が実行される。このとき、ステップ１３１からステップ１３５へ分岐し、キュー処理部１５に記憶された処理の順序が修正される。ここでは、処理Ｔ（Ｂ）と処理Ｌ（Ｂ）とが入れ替えられる。この入れ替えに応答して、キュー処理部１５から処理Ｌ（Ｂ）の実行が要求される。この結果、時刻ｔ６において、処理Ｌ（Ｂ）の実行が開始される。
【００４４】
時刻ｔ７において、パルス信号ＰＬＳが立ち下る。時刻ｔ７においては処理Ｌ（Ｂ）が実行中であるから、キュー処理部１５には、処理Ｌ（Ｃ）が追加的に記憶され格納される。処理Ｔ（Ｂ）の優先順位は、処理Ｌ（Ｃ）の優先順位より高い。このため、キュー処理部１５には、優先順位の順序に従って、Ｔ（Ｂ）＞Ｌ（Ｃ）の順序で処理が記憶される。やがて、時刻ｔ８において、処理Ｌ（Ｂ）が終了すると、キュー処理部１５から処理Ｔ（Ｂ）の実行が要求される。この結果、時刻ｔ８において、処理Ｔ（Ｂ）の実行が開始される。以後、ひとつのパルスに対応する立下り処理Ｌ（ｎ）と立上り処理Ｔ（ｎ）とが、それらのパルス変化の発生時刻の順序に従って実行される。
【００４５】
以上に述べた実施形態によると、優先順位に従って複数の割込み処理の実行順序を設定し、格納するキュー処理部１５を用いた場合であっても、同じ処理の連続実行が回避される。立下り処理Ｌ（ｎ）と立上り処理Ｔ（ｎ）といった一組の処理を、正しい順序で実行することができる。例えば、立下り処理Ｌ（ｎ）と立上り処理Ｔ（ｎ）とによって計測されるパルス幅の誤計測が回避される。すなわち、エンジン２の回転方向の誤検出が回避される。
【００４６】
（他の実施形態）
以上、本発明の好ましい実施形態について説明したが、本発明は上述した実施形態に何ら制限されることなく、本発明の主旨を逸脱しない範囲において種々変形して実施することが可能である。上記実施形態の構造は、あくまで例示であって、本発明の範囲はこれらの記載の範囲に限定されるものではない。本発明の範囲は、特許請求の範囲の記載によって示され、さらに特許請求の範囲の記載と均等の意味及び範囲内での全ての変更を含むものである。
【００４７】
例えば、制御装置が提供する手段と機能は、ソフトウェアのみ、ハードウェアのみ、あるいはそれらの組合せによって提供することができる。例えば、制御装置をアナログ回路によって構成してもよい。
【００４８】
また、上記実施形態では、同じ割込み処理が連続して実行されようとしていることを判定し、この判定に応答してキュー処理部１５に記憶されている複数の割込み処理の順序を修正し、これによって、優先順位型のキュー処理部１５を用いていても、割込み時刻の順序によって処理を実行した。これに代えて、同じ割込み処理が連続して実行されようとしている場合に、連続処理によって影響を受ける一組の割込み処理の結果を利用しないように操作を実行してもよい。例えば、キュー処理部１５に設定された実行順序の少なくとも一部を無効化することができる。例えば、後の割込み処理を実行することなく通過するとともに、当該処理と組をなすべき割込み処理を無効化してもよい。一部の処理が実行されないことにより、それ以降は、複数の割込み処理の交互の実行、または割込み時刻の順序に従う実行が実現される。これによると、通過された処理と、無効化された処理とからは処理結果が得られない。しかし、立下り処理Ｌ（ｎ）と立上り処理Ｔ（ｎ）といった一組の処理を、正しい順序で実行することができる。例えば、立下り処理Ｌ（ｎ）と立上り処理Ｔ（ｎ）とによって計測されるパルス幅の誤計測が回避される。すなわち、エンジン２の回転方向の誤検出が回避される。
【００４９】
また、上記実施形態では、ひとつのパルスの前縁を立下りエッジとし、後縁を立上りエッジとした。これに代えて、ひとつのパルスの前縁を立上りエッジとし、後縁を立下りエッジとしてもよい。
【符号の説明】
【００５０】
１  エンジン制御装置、  ２  エンジン、  ３  回転角センサ、  ４  ロータ、  ５  パルサ、  ６  制御装置、  ７  アクチュエータ、  １１  処理実行部、  １２  立上り処理、  １３  立下り処理、  １４  他の処理、  １５  キュー処理部、  １６  フラグ設定部、  １７  比較部、  １８  キュー修正部。
【図１】
0005659995.tif 000002
【図２】
0005659995.tif 000003
【図３】
0005659995.tif 000004
【図４】
0005659995.tif 000005
【図５】
0005659995.tif 000006