(57)【要約】【課題】  出力ポートへの通電開始タイミングのばらつきを低減させた制御装置を提供する。【解決手段】  セットされた時間を計時し、セットされた時間を計時すると信号を出力する出力ポートの信号レベルを計時中の信号レベルとは異なる信号レベルに変更するリロードタイマ２２８と、ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいてリロードタイマ２２８の計時時間をセットする処理と、リロードタイマ２２８に、セットした時間の計時を開始させる処理とを実行するソフトウェア制御部５０とを有する構成としている。ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいてリロードタイマ２２８の計時時間を設定するので、ソフトウェア制御部５０がリロードタイマ２２８の計時時間を設定する時間と割り込み信号の入力時刻とにずれが生じても、リロードタイマ２２８所望の時間を計時させることができる。【選択図】        図３
2010117868.tif 000002
【特許請求の範囲】
【請求項１】
被制御部を制御する制御装置であって、
セットされた時間を計時し、計時を終了すると信号を出力する出力ポートの信号レベルを計時中の信号レベルとは異なる信号レベルに変更するタイマ部と、
ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいてタイマ部の計時時間をセットする処理と、
タイマ部に、セットした時間の計時を開始させる処理と、を実行する実行部と、
を備える制御装置。
【請求項２】
被制御部を制御する制御装置であって、
信号を出力する出力ポートの信号レベルを設定する情報を記憶する記憶部と、
セットされた時間を計時し、計時を終了すると信号を出力する出力ポートの信号レベルを計時中の信号レベルとは異なる信号レベルに変更するタイマ部と、
出力ポートの出力する信号レベルを、記憶部に記憶した情報に基づいて設定するのか、前記タイマ部の出力に基づいて設定するのかを選択する選択部と、
ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいて、タイマ部の計時時間をセットする処理と、
記憶部の情報に基づいて出力ポートの出力する信号レベルが設定されるように選択部を設定した後にタイマ部の計時を開始させる処理と、
タイマ部に計時を開始させた後に、タイマ部の出力に基づいて出力ポートの信号レベルが設定されるように選択部を設定する処理と、を実行する実行部と、
を備える制御装置。
【請求項３】
前記実行部が前記タイマ部に計時させる計時時間は、割り込み信号を入力してからの所定時間であって、前記実行部の処理遅延により前記タイマ部への計時時間のセットが遅延した時間分を所定時間から減算した時間である請求項１又は２記載の制御装置。
【請求項４】
前記タイマ部は、セットされた時間の計時を終了すると、実行部に割り込み信号を出力し、
前記実行部は、割り込み信号を入力した時刻と、現在時刻とに基づいて、タイマ部の計時時間をセットする請求項１から３のいずれか一項記載の制御装置。
【請求項５】
被制御部を制御する制御方法であって、
ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいてタイマ部の計時時間をセットする処理と、
セットされた時間を計時し、計時を終了すると信号を出力する出力ポートの信号レベルを計時中の信号レベルとは異なる信号レベルに変更するタイマ部に、セットした時間の計時を開始させる処理と、を有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置及び制御方法に関する。特に、本発明は、信号の出力ポートへの通電開始タイミングの計時にタイマ機能（以下、リロードタイマと呼ぶ）を使用する技術に関する。
【背景技術】
【０００２】
マイコンの出力ポートの通電時間にマイクロ秒単位の高い精度が要求される場合、マイコンに設けられたリロードタイマを使用する。
【０００３】
リロードタイマは、クロック信号をカウントしてカウントダウンし、カウントダウンが終了すると割り込みを発生させる。ソフトウェアは、割り込み信号を入力すると、予め定義された関数を実行する。その後、カウント値がリセットされ、リロードタイマは再びカウントダウン動作を開始する。
【０００４】
特許文献１には、内蔵するタイマの本数以上のタイマ出力処理を可能とし、出力端子を自在に設定できるようにした制御用処理が開示されている。
【０００５】
【特許文献１】特開平８−３０５４２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
出力ポートへの通電時間の精度は、リロードタイマを用いて通電時間を計時することによって上げることができる。しかしながら、出力ポートへの通電の開始時には、出力ポートの通電状態を設定する情報をソフトウェアでレジスタに書き込み、レジスタに書き込まれた情報が出力ポートの通電状態に反映されることとなる。ソフトウェアは、例えば優先度の高い割り込み信号を受け付けた場合には、受け付けた割り込みを処理してから出力ポートの通電状態の設定を行わなければならず、通電開始タイミングにばらつきが生じてしまう。例えば、マイコンを車両のエンジン制御に使用する場合、通電開始タイミングのばらつきによって燃料噴射タイミングにばらつきが生じるなどの問題が生じる。特許文献１にもこのような技術課題に対する解決策は開示されていない。
【０００７】
本発明は上記事情に鑑みてなされたものであり、出力ポートへの通電開始タイミングのばらつきを低減させた制御装置及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
かかる目的を達成するために本発明の制御装置は、被制御部を制御する制御装置であって、セットされた時間を計時し、計時を終了すると信号を出力する出力ポートの信号レベルを計時中の信号レベルとは異なる信号レベルに変更するタイマ部と、ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいてタイマ部の計時時間をセットする処理と、タイマ部に、セットした時間の計時を開始させる処理と、を実行する実行部とを有する構成としている。
本発明によれば、ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいてタイマ部の計時時間を設定するので、実行部がタイマ部の計時時間を設定する時間と割り込み信号の入力時刻とにずれが生じても、タイマ部に所望の時間を計時させることができる。従って、出力ポートへの通電開始タイミングのばらつきを低減させることができる。
【０００９】
本発明の制御装置は、被制御部を制御する制御装置であって、信号を出力する出力ポートの信号レベルを設定する情報を記憶する記憶部と、セットされた時間を計時し、計時を終了すると信号を出力する出力ポートの信号レベルを計時中の信号レベルとは異なる信号レベルに変更するタイマ部と、出力ポートの出力する信号レベルを、記憶部に記憶した情報に基づいて設定するのか、前記タイマ部の出力に基づいて設定するのかを選択する選択部と、ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいて、タイマ部の計時時間をセットする処理と、記憶部の情報に基づいて出力ポートの出力する信号レベルが設定されるように選択部を設定した後にタイマ部の計時を開始させる処理と、タイマ部に計時を開始させた後に、タイマ部の出力に基づいて出力ポートの信号レベルが設定されるように選択部を設定する処理と、を実行する実行部とを有する構成としている。
本発明によれば、ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいてタイマ部の計時時間を設定するので、実行部がタイマ部の計時時間を設定する時間と割り込み信号の入力時刻とにずれが生じても、タイマ部に所望の時間を計時させることができる。従って、出力ポートへの通電開始タイミングのばらつきを低減させることができる。
また、タイマ部が計時を開始するまでの間は、記憶部にに書き込まれた情報に従って出力ポートの出力レベルが設定される。このため、記憶部の設定を行ってからタイマ部の計時を開始させるまでの間に、出力ポートにタイマ部の不要な出力が反映されることがない。
【００１０】
上記制御装置において、前記実行部が前記タイマ部に計時させる計時時間は、割り込み信号を入力してからの所定時間であって、前記実行部の処理遅延により前記タイマ部への計時時間のセットが遅延した時間分を所定時間から減算した時間であるとよい。
従って、実行部がタイマ部の計時時間を設定するまでの時間に遅延が生じても、タイマ部に所望の時間を計時させることができる。従って、出力ポートへの通電開始タイミングのばらつきを低減させることができる。
【００１１】
上記構成の制御装置において、前記タイマ部は、セットされた時間の計時を終了すると、実行部に割り込み信号を出力し、前記実行部は、割り込み信号を入力した時刻と、現在時刻とに基づいて、タイマ部の計時時間をセットするとよい。
従って、タイマ部からの割り込み信号の入力により実行部はタイマ部に次の計時時間をセットすることができる。
【００１２】
本発明の制御方法は、被制御部を制御する制御方法であって、ハードウェアからの割り込み信号の入力時刻と、現在時刻とに基づいてタイマ部の計時時間をセットする処理と、セットされた時間を計時し、計時を終了すると信号を出力する出力ポートの信号レベルを計時中の信号レベルとは異なる信号レベルに変更するタイマ部に、セットした時間の計時を開始させる処理とを有している。
【発明の効果】
【００１３】
本発明によれば、出力ポートへの通電開始タイミングのばらつきを低減させた制御装置及び制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
添付図面を参照しながら本発明の好適な実施例を説明する。
【実施例】
【００１５】
まず、図１を参照しながら本実施例の構成を説明する。図１には、エンジン制御を行うＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ Ｃｏｎｔｒｏｌ Ｕｎｉｔ）（本発明の制御装置に該当する）２０の構成と、ＥＣＵ２０とその周辺装置との接続構成とを示す。
【００１６】
ＥＣＵ２０には、エンジンの運転状態や変速機の状態を示す各種センサが接続されている。図１には、各種センサとして、スロットル開度センサ１１と、アクセル開度センサ１２と、車速センサ１３と、クランク角度センサ１４と、ノックセンサ１５とを示す。なお、図示のセンサ以外にも複数のセンサからのセンサ信号がＥＣＵ２０には入力される。
【００１７】
スロットル開度センサ１１は、エンジンの吸気管に設けられた電子制御スロットル３４の開度に応じたセンサ信号をＥＣＵ２０に出力する。
アクセル開度センサ１２は、ドライバによるアクセルペダル（不図示）の操作量（以下、アクセル開度と呼ぶ）を検出する。アクセル開度センサ１２は、検出したアクセル開度を表すセンサ信号をＥＣＵ２０に出力する。
車速センサ１３は、例えば、ドライブシャフトの回転数に基づいて車両の走行速度である車速を検出する。車速センサ１３は、検出した車速を表すセンサ信号をＥＣＵ２０に出力する。
クランク角度センサ１４は、クランクシャフトの回転速度（エンジン回転数）およびクランクシャフトの回転角度を検出する。クランク角度センサ１４は、検出したクランクシャフトの回転速度や回転角度を表すセンサ信号をＥＣＵ２０に出力する。
ノックセンサ１５は、エンジンのシリンダブロックに設置され、シリンダブロック表面の振動のレベルを検出する。ノックセンサ１５は、検出した振動レベルを表すセンサ信号をＥＣＵ２０に出力する。
【００１８】
また、ＥＣＵ２０の出力側に設けられたインジェクタ３１は、ＥＣＵ２０の制御により開閉駆動されて燃料を噴射する電磁弁から構成される。
イグナイタ３２は、ＥＣＵ２０の制御により不図示の点火コイルにバッテリ電圧を供給し、点火コイルに蓄えられた高電圧により点火プラグ３３で火花を発生させて、燃焼室内の混合気を燃焼させる。
電子制御スロットル３４は、エンジンの吸気管に設けられ、ＥＣＵ２０によって制御されてエンジンへの吸入空気量を調整する。
【００１９】
ＥＣＵ２０は、入力インターフェース２１、マイコン２２、出力インターフェース２３、発振回路２４等を備えている。入力インターフェース２１は、図１に示す各種センサから出力されるセンサ信号を入力して、マイコン２２に出力する。出力インターフェース２３は、マイコン２２によって生成される制御信号を制御対象となるインジェクタ３１、点火プラグ３３、電子制御スロットル３４等に出力する。また、発振回路２４は、マイコン２２で使用するクロック信号を生成して、マイコン２２に出力する。
【００２０】
図２に、マイコン２２のハードウェア構成を示す。マイコン２２内には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２２１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２２２、ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）２２３、入力ポート２２４、出力ポート２２５、割込制御回路２２６、フリーランタイマ２２７、リロードタイマ２２８等が設けられている。
【００２１】
ＣＰＵ２２１は、ＲＯＭ２２２に記録されたプログラムを読み込んで、このプログラムに従った演算を行う。ＣＰＵ２２１の処理手順については、フローチャートを参照しながら後述する。ＲＡＭ２２３には、演算結果のデータが書き込まれる。
【００２２】
ＣＰＵ２２１は、入力ポート２２４から入力したセンサ信号に基づいてエンジン点火タイミングや、燃料噴射量等を制御する制御信号を生成する。生成した制御信号はインジェクタ３１や点火プラグ３３に出力される。また、ＣＰＵ２２１は、アクセル開度センサ１２によって測定されたアクセルペダルの操作量に応じて、電子制御スロットル３４を制御する。
ＣＰＵ２２１で生成された制御信号は、出力ポート２２５を介して出力インターフェース２３からインジェクタ３１、イグナイタ３２、電子制御スロットル３４等に出力される。
【００２３】
また、マイコン２２内には、割込制御回路２２６、フリーランタイマ２２７、リロードタイマ２２８等が設けられている。
割込制御回路２２６は、ＣＰＵ２２１が制御対象のハードウェアを制御するための演算等を割込んで実行することを要求する割込信号の入出力を制御する。
フリーランタイマ２２７、リロードタイマ２２８については、図３を参照しながら説明する。
【００２４】
図３には、ＣＰＵ２２１などのハードウェアと、ＲＯＭ２２２などに格納されたソフトウェアとの協働によって実現されるソフトウェア制御部５０と、ソフトウェア制御部５０が制御に必要なデータを書き込む各種レジスタと、前述した割込制御回路２２６、フリーランタイマ２２７、リロードタイマ２２８とを示す。
【００２５】
フリーランタイマ２２７は、図１に示す発振回路２４で生成されるクロック信号を入力し、入力したクロック信号に基づいて時刻を計時するタイマである。フリーランタイマ２２７の計時する時刻は、現在時刻レジスタ５２に書き込まれる。また、フリーランタイマ２２７は、割込制御回路２２６から割込信号の入力ありを示す信号を入力すると、割込信号の入力時刻を示す信号を入力時刻レジスタ５１に書き込む。
【００２６】
リロードタイマ２２８は、ソフトウェア制御部５０で設定された時間を計時（カウントダウン）し、計時が終了すると、出力ポート２２５の出力レベルを反転させる（リロードタイマの詳細については、後述する）。
【００２７】
ソフトウェア制御部５０は、図３に示すレベル設定レジスタ５３、カウントダウン時間設定レジスタ５４、カウントダウン開始レジスタ５５、データレジスタ５６、機能選択レジスタ５７に制御に必要なデータを書き込み、リロードタイマ２２８のカウントダウン開始タイミングや、リロードタイマ２２８のカウントダウン時間を設定する。
【００２８】
入力時刻レジスタ５１は、割込制御回路２２６にハードウェア、特にクランク角度センサ１４からの割込信号が入力された時刻がフリーランタイマ２２７によって書き込まれる。
現在時刻レジスタ５２には、フリーランタイマ２２７から出力される現在時刻が書き込まれる。フリーランタイマ２２７がクロック信号を入力してカウント値を更新すると、このカウント値、すなわち現在時刻が現在時刻レジスタ５２に書き込まれる。
レベル設定レジスタ５３は、リロードタイマ２２８がカウントダウン中の、リロードタイマ２２８の出力レベルを設定する情報が記録される。リロードタイマ２２８は、設定されたカウントダウン時間をカウントすると、出力レベルを反転させる。従って、リロードタイマ２２８のカウントダウン終了タイミングに合わせて、出力ポート２２５の信号レベルをハイレベルに設定する場合には、カウントダウン中のリロードタイマ２２８の出力レベルをローレベルに設定する。
カウントダウン時間設定レジスタ５４は、ソフトウェア制御部５０で算出されたリロードタイマ２２８のカウントダウン時間がソフトウェア制御部５０によって書き込まれる。
カウントダウン開始レジスタ５５には、リロードタイマ２２８にカウントダウンを開始させる情報、例えば「１」がソフトウェア制御部５０によって記録される。すなわち、リロードタイマ２２８は、カウントダウン開始レジスタ５５に「１」が書き込まれたことをトリガとして、カウントダウン時間設定レジスタ５４に設定されたカウントダウン時間をカウントする。
【００２９】
データレジスタ５６には、ソフトウェア制御部５０によって出力ポート２２５に出力する信号レベルが設定される。例えば、データレジスタ５６に「１」が書き込まれると、出力ポート２２５の信号出力レベルがハイレベルになる。また、データレジスタ５６に「０」が書き込まれると、出力ポート２２５の信号出力レベルがローレベルになる。
【００３０】
機能選択レジスタ５７は、出力ポート２２５の出力信号を、データレジスタ５６に書き込まれた設定に基づいて出力するのか、リロードタイマ２２８の出力レベルに基づいて出力するのかを設定するレジスタである。図４には、マイコン２２の出力側の構成を示す。ソフトウェア制御部５０によって機能選択レジスタ５７に「１」が書き込まれると、図４に示す出力選択部６０は、機能選択レジスタ５７を参照してリロードタイマ２２８の出力を出力ポート２２５に出力する。また、ソフトウェア制御部５０によって機能選択レジスタ５７に「０」が書き込まれると、図４に示す出力選択部６０は、機能選択レジスタ５７を参照してデータレジスタ５６の設定に従って、出力ポート２２５の信号出力レベルを設定する。
【００３１】
図５に示すタイムチャートを参照しながら、ソフトウェア制御部５０の動作概要を説明する。
本実施例は、図１に示す各種センサ（例えば、クランク角度センサ１４）等から割込信号が割込制御回路２２６に入力されると、割込信号の入力から所定時間を計時し、所定時間経過後に出力ポート２２５に所定レベルの信号を出力する。所定時間の計時には、リロードタイマ２２８が用いられる。リロードタイマ２２８は、クロック信号を入力して計時を行うため、設定された時間を正確に計時することができる。また、リロードタイマ２２８は、所定時間を計時（カウントダウン）すると、リロードタイマ２２８の出力レベルを計時中の出力レベルとは異なるレベルに自動的に変更する。出力ポート２２５の出力レベルに、リロードタイマ２２８の出力レベルが反映されるように設定しておくことで、リロードタイマ２２８の計時時間に合わせて出力ポート２２５の出力レベルを切り替えることができる。
【００３２】
しかしながら、割込信号を入力してからリロードタイマ２２８の計時時間の設定をソフトウェア制御部５０で行わなければならない。ソフトウェアは、例えば優先度の高い割り込み信号を受け付けた場合には、受け付けた割り込みを処理してから出力ポートの通電状態の設定を行わなければならず、通電開始タイミングにばらつきが生じてしまう。
そこで、ソフトウェア制御部５０は、割込制御回路２２６から割込処理の通知を受け付けると、入力時刻レジスタ５１に書き込まれた割込信号の入力時刻と、現在時刻レジスタ５２に書き込まれた現在時刻とを取得してＲＡＭ２２３に記録する。そして、ソフトウェア制御部５０は、割込信号の入力から所定時間経過後に、出力ポート２２５に所定レベルの信号を出力させるために、リロードタイマ２２８に計時（カウントダウン）させる時間を算出する。なお、割込信号の入力時刻と、現在時刻とは、フリーランタイマ２２７によって自動的に入力時刻レジスタ５１と、現在時刻レジスタ５２とにそれぞれ書き込まれる。
【００３３】
図６（Ａ）を参照しながらリロードタイマ２２８に計時（カウントダウン）させる時間を算出する手順を説明する。例えば、割込信号の入力時刻をＴ１、現在時刻をＴ２とする。また、割込信号を入力してから出力ポート２２５に所定レベルの信号を出力するまでの待機時間をＴ３とする。なお、ソフトウェア制御部５０が、リロードタイマ２２８に計時（カウントダウン）させる時間を算出する処理を開始する時間は、処理の込み具合によって異なる。このため、割込信号の入力時刻Ｔ１と、現在時刻Ｔ２とが一致することは殆どない。
ソフトウェア制御部５０は、まず、現在時刻Ｔ２から割込信号の入力時刻Ｔ１を減算する。この現在時刻Ｔ２から入力時刻Ｔ１を減算した時間（Ｔ２−Ｔ１）は、ソフトウェア制御部５０が割込信号を入力してから処理を開始するまでにかかった遅延時間となる．ソフトウェア制御部５０は、割込信号の入力時刻Ｔ１に待機時間Ｔ３を加算する。（Ｔ１＋Ｔ３）は、出力ポート２２５に所定レベルの信号を出力する時刻となる。
ソフトウェア制御部５０は、出力ポート２２５に所定レベルの信号を出力するまでの時間（Ｔ３＋Ｔ１）からソフトウェア制御部５０が処理を開始するまでにかかった時間（Ｔ２−Ｔ１）を減算する。ソフトウェア制御部５０は、算出した時間Ｔ１＋Ｔ３−（Ｔ２−Ｔ１）を、リロードタイマ２２８の計時（カウントダウン）時間としてカウントダウン時間設定レジスタ５４に書き込む。
【００３４】
リロードタイマ２２８の計時時間を設定した後のソフトウェア制御部５０の処理手順について引き続き図５を参照しながら説明する。
ソフトウェア制御部５０は、割込信号を入力すると、リロードタイマ２２８の計時時間を算出して、カウントダウン時間設定レジスタ５４に書き込む（図５（Ａ）参照）。
次に、ソフトウェア制御部５０は、リロードタイマ２２８のカウントダウン中に、出力ポート２２５に出力させる信号レベルを設定する。リロードタイマ２２８は、カウントダウンを終了すると、それまでの出力レベルを反転させる機能を有している。従って、例えば、カウントダウン終了後の出力ポート２２５の信号出力レベルをハイレベルにする場合、リロードタイマ２２８のカウントダウン中の出力レベルをローレベルに設定する。また、カウントダウン終了後の出力ポート２２５の信号出力レベルをローレベルにする場合、リロードタイマ２２８のカウントダウン中の出力レベルをハイレベルに設定する。ここでは、リロードタイマ２２８のカウントダウン終了後の出力ポート２２５の出力レベルをハイレベルに設定するとする。そこで、ソフトウェア制御部５０は、図５（Ｂ）に示すレベル設定レジスタに「０」の情報を書き込む。
【００３５】
レベル設定レジスタの設定が終了すると、ソフトウェア制御部５０は、カウントダウン開始レジスタ５５にカウントダウン開始情報（本実施例では「１」）を書き込み（図５（Ｃ）参照）、リロードタイマ２２８にカウントダウンを開始させる（図５（Ｄ）参照）。リロードタイマ２２８は、カウントダウン時間設定レジスタ５４に設定された時間を計時（カウントダウン）し、計時が終了すると出力レベルをハイレベルとする。これによって出力ポート２２５の信号出力レベルがハイレベルとなる（図５（Ｅ）参照）。又、リロードタイマ２２８は、計時（カウントダウン）を終了すると、割込信号を割込制御回路２２６に出力する（図５（Ｆ）参照）。
【００３６】
ソフトウェア制御部５０は、リロードタイマ２２８からの割込信号をトリガとしてリロードタイマ２２８の次の計時時間を算出する。この処理について図６（Ｂ）を参照しながら説明する。
なお、現在時刻をＴ４とする。また、リロードタイマ２２８が割込信号を出力した時刻は、Ｔ１＋Ｔ３となる。
ソフトウェア制御部５０は、まず、現在時刻Ｔ４から割込信号の出力時刻Ｔ１＋Ｔ３を減算する。このＴ４−（Ｔ１＋Ｔ３）がソフトウェア制御部５０が割込信号を入力してから処理を開始するまでにかかった遅延時間となる。また、出力ポート２２５に所定レベルの信号を出力する時刻は、割込信号の出力時刻Ｔ１＋Ｔ３に待機時間Ｔ３を加算したＴ１＋２Ｔ３となる。ソフトウェア制御部５０は、出力ポート２２５に所定レベルの信号を出力するまでの時間Ｔ１＋２Ｔ３からソフトウェア制御部５０が処理を開始するまでにかかった時間（Ｔ４−（Ｔ１＋Ｔ３））を減算する。ソフトウェア制御部５０は、算出した時間Ｔ１＋２Ｔ３−（Ｔ４−（Ｔ１＋Ｔ３）を、リロードタイマ２２８に計時（カウントダウン）させる時間としてカウントダウン時間設定レジスタ５４に書き込む（図５（Ａ）参照）。
【００３７】
しかしながら、レベル設定レジスタ５３にカウントダウン中のリロードタイマ２２８の信号出力レベルを設定してから、カウントダウン開始レジスタ５５にカウントダウン開始情報を書き込むまでの間に、出力ポート２２５に不要な出力が表れてしまうという問題が生じる。図７及び図８を参照しながらこの問題点について説明する。図７及び図８は、図５に示すレベル設定レジスタ５３の設定と、カウントダウン開始レジスタ５５の設定と、リロードタイマ２２８のカウントダウンと、出力ポート２２５の出力レベルとを拡大表示したものである。また、図７及び図８には、問題点を分かりやすくするために、レベル設定レジスタ５３の設定をソフトウェア制御部５０で行ってから、リロードタイマ２２８のカウントダウンを開始させるまでの時間を誇張して表示している。
レベル設定レジスタ５３に記録される情報は、リロードタイマ２２８がカウントダウン中のリロードタイマ２２８の出力レベルである。このため、ソフトウェア制御部５０がレベル設定レジスタ５３にリロードタイマ２２８の出力レベルを設定してから、リロードタイマ２２８がカウントダウンを開始するまでの間に、レベル設定レジスタ５３に設定した出力レベルとは異なる出力レベルをリロードタイマ２２８は出力してしまう。このリロードタイマ２２８の出力レベルが出力ポート２２５にも反映され、不要な出力信号が出力ポート２２５から出力される。
例えば、図７の（Ｂ）に示すように、レベル設定レジスタ５３にローレベルの情報を書き込むと、リロードタイマ２２８がカウントダウンするまでの間は、リロードタイマ２２８の出力レベルがハイレベルになる（図７の（Ｅ）参照）。
逆に、図８の（Ｂ）に示すように、レベル設定レジスタ５３にローレベルの情報を書き込むと、リロードタイマ２２８がカウントダウンするまでの間は、リロードタイマ２２８の出力レベルがハイレベルになる（図８の（Ｅ）参照）。
【００３８】
そこで、本実施例は、レベル設定レジスタ５３に情報を書き込む前に、出力ポート２２５の出力レベルにデータレジスタ５６の設定が反映されるように機能選択レジスタ５７に設定情報を書き込む。
すなわち、図７に示すようにリロードタイマ２２８のカウントダウン中の出力レベルをローレベルに設定する場合には、出力選択部６０にデータレジスタ５６を選択させ、さらにデータレジスタ５６の設定を、リロードタイマ２２８のカウントダウン中の出力レベルであるローレベルに設定する。
また、図８に示すようにリロードタイマ２２８のカウントダウン中の出力レベルをハイレベルに設定する場合には、出力選択部６０にデータレジスタ５６を選択させ、さらにデータレジスタ５６の設定を、リロードタイマ２２８のカウントダウン中の出力レベルであるハイレベルに設定する。
【００３９】
そして、ソフトウェア制御部５０は、リロードタイマ２２８に計時（カウントダウン）を開始させた後に、出力ポート２２５の信号出力レベルにリロードタイマ２２８の出力が反映されるように機能選択レジスタ５７に設定情報を書き込む。
このようにして本実施例は、ソフトウェア制御部５０がレベル設定レジスタ５３を設定してから、リロードタイマがカウントダウンを開始するまでの間の出力ポート２２５の不要な出力を防止することができる。
【００４０】
図９に示すフローチャートを参照しながらソフトウェア制御部５０の処理手順を説明する。
まず、ソフトウェア制御部５０は、入力時刻レジスタ５１に書き込まれた割込信号の入力時刻と、現在時刻レジスタ５２に書き込まれた現在時刻とを取得して、ＲＡＭ２２３に記録する（ステップＳ１）。
【００４１】
次に、ソフトウェア制御部５０は、リロードタイマ２２８に計時（カウントダウン）させる時間を算出する（ステップＳ２）。
割込信号の入力時刻をＴ１、現在時刻をＴ２、割込信号を入力してから出力ポート２２５に所定レベルの信号を出力までの待機時間をＴ３とすると、リロードタイマ２２８の計時時間は（Ｔ３＋Ｔ１）−（Ｔ２−Ｔ１）となる。なお、（Ｔ３＋Ｔ１）は、ハードウェアからの割込信号を入力してから、出力ポート２２５から所定レベルの信号を出力する時間である。また、（Ｔ２−Ｔ１）は、ハードウェアからの割込信号を入力してからソフトウェア制御部５０が処理を開始するまでにかかった時間である（図６（Ａ）参照）。
ソフトウェア制御部５０は、算出した計時時間（Ｔ３＋Ｔ１）−（Ｔ２−Ｔ１）をカウントダウン時間設定レジスタ５４に書き込む（ステップＳ２）。
【００４２】
次に、ソフトウェア制御部５０は、データレジスタ５６に「０」を書き込み、機能選択レジスタ５７に「０」を書き込む（ステップＳ３）。機能選択レジスタ５７に「０」を書き込むことで、出力ポート２２５の信号出力レベルにデータレジスタ５６の設定が反映される。すなわち、データレジスタ５６に書き込まれた「０」に従って、出力ポート２２５の信号出力レベルがローレベルとなる。
【００４３】
次にソフトウェア制御部５０は、レベル設定レジスタ５３に「０」を書き込み、カウントダウン中のリロードタイマ２２８の出力レベルをローレベルに設定する（ステップＳ４）。そして、ソフトウェア制御部５０は、リロードタイマ２２８にカウントダウンを開始させるため、カウントダウン開始レジスタ５５にカウントダウンの開始を示す情報「１」を書き込む（ステップＳ５）。カウントダウン開始レジスタ５５にカウントダウンの開始を示す情報「１」が書き込まれたことをトリガとして、リロードタイマ２２８はカウントダウンを開始する。リロードタイマ２２８がカウントダウンを開始すると、ソフトウェア制御部５０は、機能選択レジスタ５７に「１」を書き込む（ステップＳ６）。機能選択レジスタ５７に「１」が書き込まれることで、出力ポート２２５の信号出力レベルにリロードタイマ２２８の出力レベルが反映される。
【００４４】
ソフトウェア制御部５０は、上述した待機時間Ｔ３と割込信号の入力時刻Ｔ１とを加算した時刻（Ｔ１＋Ｔ３）をＲＡＭ２２３に記録し、他の処理に処理を移行させる（ステップＳ７）。なお、時刻（Ｔ１＋Ｔ３）は、リロードタイマ２２８がカウントダウンを終了し、出力ポート２２５の信号出力レベルをハイレベルとする時刻である。
【００４５】
リロードタイマ２２８は、カウントダウンを終了すると、リロードタイマ２２８の出力レベルを反転させると共に、割込信号を割込制御回路２２６に出力する。
リロードタイマ２２８からの割込信号を受け付けたソフトウェア制御部５０は、処理を開始し（ステップＳ８／ＹＥＳ）、まず、現在時刻レジスタ５２に書き込まれた現在時刻を取得してＲＡＭ２２３に記録する（ステップＳ９）。
次に、ソフトウェア制御部５０は、リロードタイマ２２８に計時させる計時時間を算出する（ステップＳ１０）。
リロードタイマ２２８がカウントダウンを終了し、割込信号を出力した時刻はＴ１＋Ｔ３である。ソフトウェア制御部５０は、この割込信号を出力した時刻（Ｔ１＋Ｔ３）を現在時刻から減算する。現在時刻をＴ４とすると、Ｔ４−（Ｔ１＋Ｔ３）が算出される。また、リロードタイマ２２８が出力ポート２２５の出力レベルをハイレベルとしてから、次にリロードタイマ２２８が出力ポート２２５の出力レベルをローレベルにする時刻は、（Ｔ１＋２Ｔ３）となる。従って、リロードタイマ２２８の計時時間は、（Ｔ１＋２Ｔ３）−（Ｔ４−（Ｔ１＋Ｔ３））となる（図６（Ｂ）参照）。ソフトウェア制御部５０は、算出した計時時間（Ｔ１＋２Ｔ３）−（Ｔ４−（Ｔ１＋Ｔ３））をカウントダウン時間設定レジスタ５４に書き込む（ステップＳ１０）。
【００４６】
次に、ソフトウェア制御部５０は、データレジスタ５６に「１」を書込み、機能選択レジスタ５７に「０」を書き込む（ステップＳ１１）。機能選択レジスタ５７に「０」を書き込むことで、出力ポート２２５の出力レベルにデータレジスタ５６の設定が反映される。すなわち、データレジスタ５６に書き込まれた「１」に従って、出力ポート２２５の出力レベルがハイレベルとなる。
【００４７】
次にソフトウェア制御部５０は、レベル設定レジスタ５３に「１」を書き込み、カウントダウン中のリロードタイマ２２８の信号出力レベルをハイレベルに設定する（ステップＳ１２）。そして、ソフトウェア制御部５０は、リロードタイマ２２８にカウントダウンを開始させるため、カウントダウン開始レジスタ５５にカウントダウンの開始を示す情報「１」を書き込む（ステップＳ１３）。カウントダウン開始レジスタ５５にカウントダウンの開始を示す情報「１」が書き込まれたことをトリガとして、リロードタイマ２２８はカウントダウンを開始する。リロードタイマ２２８がカウントダウンを開始すると、ソフトウェア制御部５０は、機能選択レジスタ５７に「１」を書き込む（ステップＳ１４）。機能選択レジスタ５７に「１」が書き込まれることで、出力ポート２２５の信号出力レベルにリロードタイマ２２８の出力レベルが反映される。
【００４８】
このように本実施例は、ソフトウェア制御部５０の処理の遅れを考慮に入れて、ソフトウェア制御部５０がリロードタイマ２２８の計時時間を設定するので、割込信号の入力から設定された待機時間で出力ポート２２５の出力レベルを所定レベルとすることができる。
【００４９】
また、リロードタイマ２２８は、クロック信号に基づいて設定された計時時間をカウントするので、正確に計時時間を計時することができる。このため、割込信号の入力から設定された待機時間で正確に出力ポート２２５の信号出力レベルを所定レベルとすることができる。
【００５０】
また、リロードタイマ２２８がカウントダウンを開始するまでの間は、データレジスタ５６に書き込まれた情報に従って出力ポート２２５の信号出力レベルが設定される。このため、レベル設定レジスタ５３の設定を行ってからカウントダウン開始レジスタ５５にカウントダウン開始情報を書き込むまでの間に、出力ポート２２５にリロードタイマ２２８の不要な出力が反映されることがない。
【００５１】
上述した実施例は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施が可能である。
【図面の簡単な説明】
【００５２】
【図１】ＥＣＵの構成を示すブロック図である。
【図２】マイコンのハードウェア構成を示す図である。
【図３】ソフトウェアの制御で動作するソフトウェア制御部と、ハードウェアの接続構成を示す図である。
【図４】出力ポートの出力レベルを設定する構成を示す図である。
【図５】マイコンの動作タイミングを示すタイムチャートである。
【図６】リロードタイマの計時時間の算出方法を示す図である。
【図７】カウントダウン中のリロードタイマの出力レベルがローレベルの場合に、出力ポートから出力される不要な出力を示す図である。
【図８】カウントダウン中のリロードタイマの出力レベルがハイレベルの場合に、出力ポートから出力される不要な出力を示す図である。
【図９】ソフトウェア制御部の処理手順を示すフローチャートである。
【符号の説明】
【００５３】
１１  スロットル開度センサ        １２  アクセル開度センサ
１３  車速センサ                  １４  クランク角センサ
１５  ノックセンサ                ２０  ＥＣＵ
２１  入力インターフェース        ２２  マイコン
２３  出力インターフェース        ２４  発振回路
３１  インジェクタ                ３２  イグナイタ
３３  点火プラグ                  ３４  電子制御スロットル
５０  ソフトウェア制御部          ５１  入力時刻レジスタ
５２  現在時刻レジスタ            ５３  レベル設定レジスタ
５４  カウントダウン時間設定レジスタ
５５  カウントダウン開始レジスタ  ５６  データレジスタ（記憶部）
５７  機能選択レジスタ            ２２６  割込制御回路
２２７  フリーランタイマ          ２２８  リロードタイマ（タイマ部）
【図１】
2010117868.tif 000003
【図２】
2010117868.tif 000004
【図３】
2010117868.tif 000005
【図４】
2010117868.tif 000006
【図５】
2010117868.tif 000007
【図６】
2010117868.tif 000008
【図７】
2010117868.tif 000009
【図８】
2010117868.tif 000010
【図９】
2010117868.tif 000011