| 【発明の名称】 |
回転検出用のパルス幅計測装置及びパルス幅計測方法 |
| 【発明者】 |
【氏名】菅野 喜久
【氏名】福本 正博
|
| 【要約】 |
【課題】割込み処理中に、パルス割込み要求やオーバーフロー割込み要求が相次いで発生しても、パルス幅を正確に算出できるようにする。
【解決手段】コンピュータ3は、すでに発生したある割込み要求によるある割込み処理の実行中に、オーバーフロー割込み要求とパルス割込み要求が発生したら、保留した2つの要求の中で前者を優先する設定を行い、ある割込み処理が終了してオーバーフロー割込み要求による割込み処理を実行するとき、パルス割込み要求が発生していると、この要求が発生したときに取得したカウント値がゼロ又は最大値のどちらに近いかを調べる。カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数を用いて、検出信号のパルスの幅を算出する。一方、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントしてパルス割込み要求をクリアし、この後でパルスの幅を算出する。 |
【特許請求の範囲】
【請求項1】 所定間隔で生成されるパルスをカウントし、パルスのカウントがオーバーフローしたときにオーバーフロー割込み要求を発生し、このオーバーフロー割込み要求が発生すると、現在実行中の処理を中断して、オーバーフロー回数をインクリメントし、被計測物の回転に応じて生成される検出信号を受け取り、この検出信号にパルスが含まれるときにパルス割込み要求を発生し、このパルス割込み要求が発生すると、現在実行中の処理を中断して、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する回転検出用のパルス幅計測方法であって、すでに発生したある割込み要求によるある割込み処理の実行中に、前記オーバーフロー割込み要求とパルス割込み要求が発生したら、保留した2つの要求の中でこのオーバーフロー割込み要求を優先する設定を行う第1の処理と、前記ある割込み処理が終了して前記オーバーフロー割込み要求による割込み処理を実行するとき、前記パルス割込み要求が発生していると、このパルス割込み要求が発生したときに取得したカウント値がゼロ又は最大値のどちらに近いかを調べる第2の処理と、この第2の処理の結果、カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第3の処理と、前記第2の処理の結果、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントして前記パルス割込み要求をクリアし、この後で、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第4の処理とを含んでなることを特徴とする回転検出用のパルス幅計測方法。 【請求項2】 今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する処理を処理ブロックとし、前記第3の処理及び前記第4の処理の処理の中で、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する代わりに、前記処理ブロックを呼び出して、前記検出信号のパルスの幅を算出することを特徴とする請求項1記載の回転検出用のパルス幅計測方法。 【請求項3】 被計測物の回転に応じて検出信号を出力する回転検出部と、この回転検出部からの検出信号を受け取ると、この検出信号に含まれるパルスの幅を算出する演算部とを備え、この演算部が、所定間隔で生成されるパルスをカウントし、パルスのカウントがオーバーフローしたときにオーバーフロー割込み要求を発生し、このオーバーフロー割込み要求が発生すると、現在実行中の処理を中断して、オーバーフロー回数をインクリメントし、前記検出信号にパルスが含まれるときにパルス割込み要求を発生し、このパルス割込み要求が発生すると、現在実行中の処理を中断して、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する回転検出用のパルス幅計測装置であって、前記演算部には、すでに発生したある割込み要求によるある割込み処理の実行中に、前記オーバーフロー割込み要求と前記パルス割込み要求が発生したら、保留した2つの要求の中でオーバーフロー割込み要求を優先する設定を行う第1の処理と、前記ある割込み処理が終了して前記オーバーフロー割込み要求による割込み処理を実行するとき、前記パルス割込み要求が発生していると、このパルス割込み要求が発生したときに取得したカウント値がゼロ又は最大値のどちらに近いかを調べる第2の処理と、この第2の処理の結果、カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第3の処理と、前記第2の処理の結果、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントして前記パルス割込み要求をクリアし、この後で、今回と前回のカウント数とオーバーフロー回数とを用いて、検出信号のパルスの幅を算出する第4の処理とを行う機能が付加されていることを特徴とする回転検出用のパルス幅計測装置。 【請求項4】 前記演算部は、今回と前回のカウント数とオーバーフロー回数とを用いて、検出信号のパルスの幅を算出する処理を処理ブロックとし、前記第3の処理及び前記第4の処理の処理の中で、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する代わりに、前記処理ブロックを呼び出して、前記検出信号のパルスの幅を算出することを特徴とする請求項3記載の回転検出用のパルス幅計測装置。 【請求項5】 所定間隔で生成されるパルスをカウントし、パルスのカウントがオーバーフローしたときにオーバーフロー割込み要求を発生し、このオーバーフロー割込み要求が発生すると、現在実行中の処理を中断して、オーバーフロー回数をインクリメントし、被計測物の回転に応じて生成される検出信号を受け取り、前記検出信号にパルスが含まれるときにパルス割込み要求を発生し、このパルス割込み要求が発生すると、現在実行中の処理を中断して、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する回転検出用のパルス幅計測方法であって、すでに発生したある割込み要求によるある割込み処理の実行中に、前記オーバーフロー割込み要求と前記パルス割込み要求が発生したら、保留した2つの要求の中でパルス割込み要求を優先する設定を行う第1の処理と、前記ある割込み処理が終了してパルス割込み要求による割込み処理を実行するとき、前記オーバーフロー割込み要求が発生していると、この割込み要求で取得したカウント値がゼロ又は最大値のどちらに近いかを調べる第2の処理と、この第2の処理の結果、カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第3の処理と、前記第2の処理の結果、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントして前記オーバーフロー割込み要求をクリアし、この後で、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第4の処理とを含むんでなることを特徴とする回転検出用のパルス幅計測方法。 【請求項6】 オーバーフロー回数をインクリメントする処理を処理ブロックとし、前記第4の処理の処理の中で、オーバーフロー回数をインクリメントして前記オーバーフロー割込み要求をクリアする代わりに、前記処理ブロックを呼び出して実行した後で前記オーバーフロー割込み要求をクリアすることを特徴とする請求項5記載の回転検出用のパルス幅計測方法。 【請求項7】 被計測物の回転に応じて検出信号を出力する回転検出部と、この回転検出部からの検出信号を受け取ると、この検出信号に含まれるパルスの幅を算出する演算部とを備え、この演算部が、所定間隔で生成されるパルスをカウントし、パルスのカウントがオーバーフローしたときにオーバーフロー割込み要求を発生し、このオーバーフロー割込み要求が発生すると、現在実行中の処理を中断して、オーバーフロー回数をインクリメントし、前記検出信号にパルスが含まれるときにパルス割込み要求を発生し、このパルス割込み要求が発生すると、現在実行中の処理を中断して、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する回転検出用のパルス幅計測装置であって、前記演算部には、すでに発生したある割込み要求による割込み処理の実行中に、前記オーバーフロー割込み要求と前記パルス割込み要求が発生したら、保留した2つの要求の中でパルス割込み要求を優先する設定を行う第1の処理と、前記ある割込み処理が終了してパルス割込み要求による割込み処理を実行するとき、前記オーバーフロー割込み要求が発生していると、この割込み要求で取得したカウント値がゼロ又は最大値のどちらに近いかを調べる第2の処理と、この第2の処理の結果、カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第3の処理と、第2の処理の結果、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントして前記オーバーフロー割込み要求をクリアし、この後で、今回と前回のカウント数と、オーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第4の処理とを行う機能が付加されていることを特徴とする回転検出用のパルス幅計測装置。 【請求項8】 前記演算部は、オーバーフロー回数をインクリメントする処理を処理ブロックとし、前記第4の処理の処理の中で、オーバーフロー回数をインクリメントして前記オーバーフロー割込み要求をクリアする代わりに、前記処理ブロックを呼び出して実行した後で前記オーバーフロー割込み要求をクリアすることを特徴とする請求項7記載の回転検出用のパルス幅計測装置。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】この発明は、回転検出用のパルス幅計測装置及びパルス幅計測方法に係り、詳しくは、被計測物が回転する場合、この被計測物の回転をパルスに変換するとき、このパルスの幅を計測する回転検出用のパルス幅計測装置及びパルス幅計測方法に関する。 【0002】 【従来の技術】回転検出用のパルス幅計測装置は、従来から、車両の走行制御装置等に用いられている。走行制御装置は、車両のアンチロック・システムや定速走行装置において、エンジンや車輪等の、回転する被計測物の回転状態を表すパルスから、このパルスの幅を計測する。すなわち、凹凸を持つ回転体を被計測物に配置し、さらに、この回転体に磁界を与える。これにより、上記被計測物が回転するとき、上記回転体の凹凸で発生する磁界の変化を検出し、この変化をパルス状の検出信号に変換する。上記変換で得られた検出信号のパルスの幅、すなわちパルスが発生する時間が、被計測物の回転速度に対応する。 【0003】上記パルス幅の計測は、CPU(Central Processing Unit)、タイマ及びカウンタを用いて、次のようにして行われる。すなわち、上記カウンタが上記タイマからのパルスをカウントアップする。上記カウンタの値(以下、カウント値と記す)は、図9に示すようにカウントアップされる。カウント値は、最大値に達すると、オーバーフローする。この後、カウント値は、再びゼロからカウントアップされる。 【0004】上記カウンタがこのようにカウントしている間に、上記検出信号のパルス101が時間t111で発生すると、パルス割込み処理をするための割込み要求が発生する。このとき、上記CPUは、実行中の処理を中断して、割込み要求に応じてパルス割込み処理を起動する。すなわち、上記CPUは、上記カウンタのカウント値をこのCPU内部のレジスタに記憶する記憶処理及び後述するパルス幅算出処理を、パルス割込み処理として実行する。このとき記憶されたカウント値をDoとする。パルス割込み処理が終了すると、上記CPUは、通常の処理に復帰する。 【0005】この後、時間t112で上記カウンタがオーバーフローすると、オーバーフロー割込み処理をするための割込み要求が発生する。このとき、上記CPUは、実行中の処理を中断して、割込み要求に応じたオーバーフロー割込み処理を起動する。すなわち、上記CPUは、オーバーフローした回数(以下、オーバーフロー回数と記す)をインクリメントして、通常の処理に復帰する。このときのオーバーフロー回数をNとする。 【0006】この後、時間t113で次のパルス102が発生すると、パルス割込み要求が発生し、上記CPUは、上記記憶処理及び上記パルス幅算出処理を実行する。このときに記憶される、カウント値をDnとする。また、上記CPUは、次のようにして上記パルス幅算出処理を実行する。すなわち、上記カウンタが、例えば、kビットのアップカウンタである場合、このカウンタのカウント値は、値「0(ゼロ)」から値「2k−1」までの、計2kカウントである。したがって、カウント値が値Doから値Dnに変化し、この間、オーバーフロー回数が値Nであるとき、パルス101のパルス幅Tを示すカウント数Nwは、次式のようになる。 Nw=Dn−Do+2k・N (カウント) …(1) こうして、上記CPUは、パルス幅算出式(1)を用いた上記パルス幅算出処理を実行して、上記被計測物の回転速度に対応するパルス幅Tを求める。 【0007】 【発明が解決しようとする課題】しかしながら、上記従来技術には、次のような課題がある。すなわち、上記CPUが割込み要求による割込み処理を実行しているとき、別の割込み要求が発生すると、新たな割込み要求を保留する。そして、現在実行中の割込み処理が終了すると、上記新たな割り込み要求による割込み処理を実行する。また、上記CPUが割込み処理を実行しているとき、別の複数の割込み要求が発生すると、これらの割込み要求を保留する。そして、現在実行中の割込み処理が終了すると、上記CPUは、上記新たな割込み要求にあらかじめ設定されている優先順位に従って、割込み処理を順に実行する。 【0008】例えば、図10に示すように、検出信号のパルス103が時間t114で発生した後、上記CPUが別の割込み処理を実行しているとき、オーバーフロー割込み要求が時間t115で発生し、続いて、次のパルスであるパルス104の発生による、パルス割込み要求が時間t116で発生する。このとき、上記CPUは、発生した2つの割込み要求を保留し、現在実行中の割込み処理を継続する。そして、実行中の上記割込み処理が終了すると、上記CPUは、上記割込み要求の優先順位に従って、パルス割込み処理とオーバーフロー割込み処理とを実行する。 【0009】この場合に、例えば、パルス割込み要求がオーバーフロー割込み要求より優先するとき、図10に示すように、上記CPUは、時間t115の後で発生した割込み要求によるパルス割込み処理を先に実行する。この後、上記CPUは、時間t115で発生した割込み要求によるオーバーフロー割込み処理を実行する。この結果、パルス103のパルス幅算出に際して、上記CPUが、時間t115で発生したオーバーフローによるオーバーフロー回数をインクリメントしないので、上記パルス幅算出式(1)の2k・Nの値が小さくなる。これにより、カウント数Nwの値が小さくなるので、実際に発生したパルス103に比べて、上記CPUは、パルス幅を小さく算出してしまう。 【0010】また、図11に示すように、検出信号のパルス105が時間t117で発生した後、上記CPUが別の割込み処理を実行しているとき、パルス106の発生による、パルス割込み要求が時間t118で発生し、続いて、オーバーフロー割込み要求が時間t119で発生する。この場合に、オーバーフロー割込み要求がパルス割込み要求より優先するとき、上記CPUは、時間t119で発生した割込み要求によるオーバーフロー割込み処理を先に実行する。この後、上記CPUは、時間t118で発生した割込み要求によるパルス割込み処理を実行する。この結果、上記CPUは、オーバーフロー回数をインクリメントするので、パルス幅算出式(1)の2k・Nの値が大きくなる。これにより、オーバーフロー割込み要求がパルス割込み要求より優先するときには、カウント数Nwの値が大きくなり、上記CPUが、実際に発生したパルス105に比べて、パルス幅を大きく算出してしまう。 【0011】このように、割込み処理中に、パルス割込み要求やオーバーフロー割込み要求が相次いで発生すると、優先順位に従って、これらの割込み要求による割込み処理を実行する。このとき、優先順に割込み要求が発生しないと、割込み要求による割込み処理の起動順序が逆転するので、パルス幅を誤って算出するという課題が発生する。 【0012】この発明は、上記事情に鑑みてなされたもので、割込み処理中に、パルス割込み要求やオーバーフロー割込み要求が相次いで発生しても、パルス幅を正確に算出することができる回転検出用のパルス幅計測装置及びパルス幅計測方法を提供することを目的としている。 【0013】 【課題を解決するための手段】上記課題を解決するために、請求項1記載の発明は、所定間隔で生成されるパルスをカウントし、パルスのカウントがオーバーフローしたときにオーバーフロー割込み要求を発生し、このオーバーフロー割込み要求が発生すると、現在実行中の処理を中断して、オーバーフロー回数をインクリメントし、被計測物の回転に応じて生成される検出信号を受け取り、この検出信号にパルスが含まれるときにパルス割込み要求を発生し、このパルス割込み要求が発生すると、現在実行中の処理を中断して、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する回転検出用のパルス幅計測方法に係り、すでに発生したある割込み要求によるある割込み処理の実行中に、前記オーバーフロー割込み要求とパルス割込み要求が発生したら、保留した2つの要求の中でオーバーフロー割込み要求を優先する設定を行う第1の処理と、前記ある割込み処理が終了して前記オーバーフロー割込み要求による割込み処理を実行するとき、前記パルス割込み要求が発生していると、このパルス割込み要求が発生したときに取得したカウント値がゼロ又は最大値のどちらに近いかを調べる第2の処理と、この第2の処理の結果、カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第3の処理と、前記第2の処理の結果、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントしてパルス割込み要求をクリアし、この後で、今回と前回のカウント数とオーバーフロー回数とを用いて、検出信号のパルスの幅を算出する第4の処理とを含んでなることを特徴としている。 【0014】また、請求項2記載の発明は、請求項1記載の回転検出用のパルス幅計測方法に係り、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する処理を処理ブロックとし、前記第3の処理及び前記第4の処理の処理の中で、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する代わりに、前記処理ブロックを呼び出して、前記検出信号のパルスの幅を算出することを特徴としている。 【0015】請求項3記載の発明は、被計測物の回転に応じて検出信号を出力する回転検出部と、この回転検出部からの検出信号を受け取ると、この検出信号に含まれるパルスの幅を算出する演算部とを備え、この演算部が、所定間隔で生成されるパルスをカウントし、パルスのカウントがオーバーフローしたときにオーバーフロー割込み要求を発生し、このオーバーフロー割込み要求が発生すると、現在実行中の処理を中断して、オーバーフロー回数をインクリメントし、前記検出信号にパルスが含まれるときにパルス割込み要求を発生し、このパルス割込み要求が発生すると、現在実行中の処理を中断して、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する回転検出用のパルス幅計測装置に係り、前記演算部には、すでに発生したある割込み要求による割込み処理の実行中に、前記オーバーフロー割込み要求と前記パルス割込み要求が発生したら、保留した2つの要求の中でオーバーフロー割込み要求を優先する設定を行う第1の処理と、前記ある割込み処理が終了して前記オーバーフロー割込み要求による割込み処理を実行するとき、前記パルス割込み要求が発生していると、このパルス割込み要求が発生したときに取得したカウント値がゼロ又は最大値のどちらに近いかを調べる第2の処理と、この第2の処理の結果、カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第3の処理と、前記第2の処理の結果、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントして前記パルス割込み要求をクリアし、この後で、今回と前回のカウント数とオーバーフロー回数とを用いて、検出信号のパルスの幅を算出する第4の処理とを行う機能が付加されていることを特徴としている。 【0016】請求項4記載の発明は、請求項3記載の回転検出用のパルス幅計測装置に係り、前記演算部は、今回と前回のカウント数とオーバーフロー回数とを用いて、検出信号のパルスの幅を算出する処理を処理ブロックとし、前記第3の処理及び前記第4の処理の処理の中で、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する代わりに、前記処理ブロックを呼び出して、前記検出信号のパルスの幅を算出することを特徴としている。 【0017】請求項5記載の発明は、所定間隔で生成されるパルスをカウントし、パルスのカウントがオーバーフローしたときにオーバーフロー割込み要求を発生し、このオーバーフロー割込み要求が発生すると、現在実行中の処理を中断して、オーバーフロー回数をインクリメントし、被計測物の回転に応じて生成される検出信号を受け取り、前記検出信号にパルスが含まれるときにパルス割込み要求を発生し、このパルス割込み要求が発生すると、現在実行中の処理を中断して、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する回転検出用のパルス幅計測方法であって、すでに発生したある割込み要求による割込み処理の実行中に、前記オーバーフロー割込み要求と前記パルス割込み要求が発生したら、保留した2つの要求の中でパルス割込み要求を優先する設定を行う第1の処理と、前記ある割込み処理が終了して前記パルス割込み要求による割込み処理を実行するとき、前記オーバーフロー割込み要求が発生していると、この割込み要求で取得したカウント値がゼロ又は最大値のどちらに近いかを調べる第2の処理と、この第2の処理の結果、カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第3の処理と、前記第2の処理の結果、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントして前記オーバーフロー割込み要求をクリアし、この後で、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第4の処理とを含むことを特徴としている。 【0018】請求項6記載の発明は、請求項5記載の回転検出用のパルス幅計測方法であって、オーバーフロー回数をインクリメントする処理を処理ブロックとし、前記第4の処理の処理の中で、オーバーフロー回数をインクリメントして前記オーバーフロー割込み要求をクリアする代わりに、前記処理ブロックを呼び出して実行した後で前記オーバーフロー割込み要求をクリアすることを特徴としている。 【0019】請求項7記載の発明は、被計測物の回転に応じて検出信号を出力する回転検出部と、この回転検出部からの検出信号を受け取ると、この検出信号に含まれるパルスの幅を算出する演算部とを備えてなり、前記演算部は、所定間隔で生成されるパルスをカウントし、パルスのカウントがオーバーフローしたときにオーバーフロー割込み要求を発生し、このオーバーフロー割込み要求が発生すると、現在実行中の処理を中断して、オーバーフロー回数をインクリメントし、前記検出信号にパルスが含まれるときにパルス割込み要求を発生し、このパルス割込み要求が発生すると、現在実行中の処理を中断して、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する回転検出用のパルス幅計測装置に係り、前記演算部には、すでに発生したある割込み要求による割込み処理の実行中に、前記オーバーフロー割込み要求と前記パルス割込み要求が発生したら、保留した2つの要求の中でパルス割込み要求を優先する設定を行う第1の処理と、前記ある割込み処理が終了してパルス割込み要求による割込み処理を実行するとき、前記オーバーフロー割込み要求が発生していると、この割込み要求で取得したカウント値がゼロ又は最大値のどちらに近いかを調べる第2の処理と、この第2の処理の結果、カウント値が最大値に近いときは、今回と前回のカウント数とオーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第3の処理と、第2の処理の結果、カウント値がゼロに近いときは、オーバーフロー回数をインクリメントして前記オーバーフロー割込み要求をクリアし、この後で、今回と前回のカウント数と、オーバーフロー回数とを用いて、前記検出信号のパルスの幅を算出する第4の処理とを行う機能が付加されていることを特徴としている。 【0020】また、請求項8記載の発明は、請求項7記載の回転検出用のパルス幅計測装置、に係り前記演算部は、オーバーフロー回数をインクリメントする処理を処理ブロックとし、前記第4の処理の処理の中で、オーバーフロー回数をインクリメントして前記オーバーフロー割込み要求をクリアする代わりに、前記処理ブロックを呼び出して実行した後で前記オーバーフロー割込み要求をクリアすることを特徴としている。 【0021】 【発明の実施の形態】以下、図面を参照して、この発明の実施の形態について説明する。 ◇第1の実施の形態図1は、この発明の第1の実施の形態である回転検出用のパルス幅計測装置の構成を概略示すブロック図、図2は、同回転検出用のパルス幅計測装置の通常の処理手順を示すフローチャート、図3は、同回転検出用のパルス幅計測装置のパルス割込み処理を示すフローチャート、図4は、同回転検出用のパルス幅計測装置のオーバーフロー割込み処理を示すフローチャート、図5は、同回転検出用のパルス幅計測装置によるパルス幅の計測を説明する説明図、また、図6は、同回転検出用のパルス幅計測装置によるパルス幅の計測を説明する説明図である。 【0022】この回転検出用のパルス幅計測装置は、図1に示すように、回転センサ1、波形整形回路2及びコンピュータ3を備えてなっている。回転センサ1は、凹凸を持つ回転体(図示を省略する)を被計測物に配置し、さらに、この回転体に磁界を与えるものである。これにより、回転センサ1は、上記回転体の凹凸で発生する磁界の変化を検出して、検出結果を示す電気信号を発生し、この電気信号を波形整形回路2に送る。波形整形回路2は、回転センサ1からの電気信号を受け取ると、この電気信号の波形を整形して、電気信号が示す変化をパルス状の検出信号に変換する。波形整形回路2は、上記検出信号をコンピュータ3に送る。 【0023】コンピュータ3は、図1に示すように、入力ポート3A、カウンタ3B、タイマ3C、メモリ3D、CPU(Central Processing Unit)3Eを備えてなっている。入力ポート3Aは、波形整形回路2をバス3Fに接続するものである。入力ポート3Aにより、波形整形回路2からの検出信号がコンピュータ3に取り込まれる。このとき、検出信号のパルスの立ち上がりで、パルス割込み要求が発生する。タイマ3Cは、時間を計測する時計回路である。タイマ3Cは、時間の計測に伴って、一定の時間間隔でパルスをバス3Fに出力する。 【0024】カウンタ3Bは、タイマ3Cが出力するパルスをバス3Fを経由して受け取ると、このパルスをカウントアップして、カウント値を生成する。上記カウント値が最大値に達すると、カウンタ3Bは、オーバーフローし、再びゼロからカウントを始める。このとき、上記カウント値が最大値に達した時点で、オーバーフロー割込み要求が発生する。メモリ3Dは、CPU3Eの処理手順をあらかじめ記憶していると共に、カウンタ3Bのオーバーフロー回数を記憶する。 【0025】CPU3Eは、通常、図2に示す処理を実行する。つまり、CPU3Eは、処理を開始すると、割込み要求の順位を設定する(ステップS1)。ステップS1で、CPU3Eは、オーバーフロー割込み要求の順位を、パルス割込み要求より高く設定する。すなわち、CPU3Eは、オーバーフロー割込み要求を優先する。ステップS1の後、CPU3Eは、装置の制御等に係る通常処理を実行する(ステップS2)。この後、電源オフ等による上記通常処理の終了かどうかを判断する(ステップS3)。ステップS3で処理を終了しなければ、CPU3Eは、処理をステップS2に戻す。 【0026】CPU3Eは、ステップS2の処理中に、入力ポート3Aからの割込み要求によるパルス割込み処理を開始する場合、図3に示す処理を実行する。すなわち、CPU3Eは、処理ブロックである関数f1を行う(ステップS11)。関数f1は、後述するオーバーフロー割込み処理の際の呼び出しのために定義されたものであり、前回のパルスの幅を計測するためのパルス幅算出処理である。関数f1では、CPU3Eは、前回のカウント値Doと今回のカウント値Dnとをレジスタから読み出す。そして、CPU3Eは、カウント値Do,Dnとオーバーフロー回数の値Nとから、パルス幅算出式(1)を用いて、前回のパルスの幅に対応するカウント数Nwを算出する。この後、CPU3Eは、今回のカウント値Dnを値Doとしてレジスタに保存し、また、オーバーフロー回数をクリアして、次のパルスの幅を計測する。 【0027】ステップS11で、CPU3Eは、このような関数f1を行う。ステップS11が終了すると、CPU3Eは、ステップS2の上記通常処理に復帰する(ステップS12)。また、CPU3Eは、ステップS2の処理中に、カウンタ3Bからの割込み要求により、図4に示すオーバーフロー割込み処理を開始する。すなわち、CPU3Eは、パルス割込み要求の有無を調べる(ステップS21)。ステップS21で、パルス割込み要求が発生していると、CPU3Eは、この割込み要求が発生したときのカウンタ3Bのカウント値を調べて、このカウント値が最大値に近いかゼロに近いかを判断する(ステップS22)。ステップS22で、上記カウント値がゼロに近いときは、CPU3Eは、カウンタ3Bのオーバーフローが次のパルスの前に発生すると判断し、オーバーフロー回数をインクリメントし、オーバーフロー回数の値を「1」だけ増やす(ステップS23)。 【0028】ステップS23の後、CPU3Eは、関数f1を呼び出して、前回のパルスの幅を計測するための処理を行う。また、ステップS22で、上記カウント値が最大値に近いときは、CPU3Eは、カウンタ3Bのオーバーフローが次のパルスの後で発生すると判断し、オーバーフロー回数をそのままにして、ステップS23の処理を行う。 【0029】これらの処理により、CPU3Eは、オーバーフロー割込み要求に対するパルス割込み要求の発生タイミングを調べ、この発生タイミングに基づいて、オーバーフロー回数をインクリメントするかどうかを決める。ステップS24の処理が終了すると、CPU3Eは、上記パルス幅算出処理を終了したので、パルス割込み処理をクリアする(ステップS25)。この後、CPU3Eは、上記通常処理に復帰する(ステップS26)。また、先のステップS21で、パルス割込み処理が発生していなければ、CPU3Eは、オーバーフロー回数をインクリメントし(ステップS27)、ステップS26の処理をする。こうして、CPU3Eは、オーバーフロー割込み処理を実行する。 【0030】次に、図5も参照して、この実施の形態の動作について説明する。つまり、CPU3Eが図2に示すステップS2を行っているときに、時間t1で、検出信号のパルス41の立ち上がりによる割込み要求が発生する。この割込み要求により、CPU3Eは、図3に示すパルス割込み処理を開始する。CPU3Eは、前回のパルス幅を算出すると共に、パルス41のカウント値をレジスタに保存する。 【0031】時間t2でカウンタ3Bがオーバーフローすると、割込み要求が発生する。この割込み要求により、CPU3Eは、図4に示すオーバーフロー割込み処理を開始する。これにより、CPU3Eは、ステップS21で時間t2の前にパルス割込み要求が発生していないので、ステップS27の処理を行い、オーバーフロー回数をインクリメントして、オーバーフロー割込み処理を終了する。 【0032】時間t3のときに、他の割込み要求が発生し、CPU3Eは、この割込み要求による割込み処理を実行する。さらに、上記割込み処理の実行中に、時間t4でカウンタ3Bのオーバーフローによる割込み要求が発生し、この割込み要求に続いて、時間t5で、パルス41の次のパルス発生による割込み要求が発生すると、CPU3Eは、これら2つの割込み要求を保留する。上記他の割込み処理を終了すると、CPU3Eは、保留した上記2つの割込み要求による割込み処理を開始する。オーバーフロー割込み要求が優先するので、CPU3Eは、時間t4で発生した割込み要求によるオーバーフロー割込み処理(図4)を開始する。このとき、CPU3Eは、ステップS21で、時間t5によるパルス割込み要求が発生しているので、ステップS22で、現在のカウンタ3Bのカウント値がゼロに近いか最大値に近いかを判断する。図5に示すように、時間t4でのカウント値がゼロに近いので、CPU3Eは、カウンタ3Bのオーバーフローが次のパルスの立ち上がり前に発生すると判断し、ステップS23〜ステップS25の処理を行う。この後、CPU3Eは、通常処理に戻る。 【0033】ところで、検出信号が図6に示すものである場合、CPU3Eは、次のような処理を行う。CPU3Eが図2に示すステップS2を行っているときに、時間t11で、検出信号のパルス51の立ち上がりによる割込み要求が発生する。この割込み要求により、CPU3Eは、図3に示すパルス割込み処理を開始する。時間t12でカウンタ3Bがオーバーフローすると、割込み要求が発生する。この割込み要求により、CPU3Eは、図4に示すオーバーフロー割込み処理を開始する。時間t13のときに、他の割込み要求が発生し、CPU3Eは、この割込み要求による割込み処理を実行する。さらに、上記割込み処理の実行中に、時間t14で、パルス51の次のパルス発生によるパルス割込み要求が発生し、この割込み要求に続いて、時間t15で、カウンタ3Bのオーバーフローによるオーバーフロー割込み要求が発生すると、CPU3Eは、これら2つの割込み要求を保留する。 【0034】上記他の割込み処理を終了すると、CPU3Eは、保留した上記2つの割込み要求による割込み処理を開始する。このとき、オーバーフロー割込み要求が優先するので、CPU3Eは、時間t15で発生した割込み要求によるオーバーフロー割込み処理(図4)を開始する。CPU3Eは、ステップS21で、パルス割込み要求が発生しているので、ステップS22で、カウンタ3Bのカウント値がゼロに近いか最大値に近いかを判断する。図6に示すように、時間t14でのカウント値が最大値に近いので、CPU3Eは、カウンタ3Bのオーバーフローが次のパルスの立ち上がりの後で発生すると判断し、ステップS24,S25の処理を行う。この後、CPU3Eは、通常処理に戻る。 【0035】このように、この実施の形態によれば、オーバーフロー要求が優先する場合、時間t14で発生したパルス割込み要求によるパルス51のパルス幅を算出するときに、時間t15で発生したオーバーフローを取り込むことがないので、パルス51のパルス幅を正確に計測することを可能にする。 【0036】◇第2の実施の形態次に、この発明の第2の実施の形態について説明する。図7は、この発明の第2の実施の形態である回転検出用のパルス幅計測装置のオーバーフロー割込み処理を示すフローチャート、図8は、同回転検出用のパルス幅計測装置のパルス割込み処理を示すフローチャートである。この実施の形態では、CPU3Eの制御だけが第1の実施の形態と異なるので、この異なる点だけを説明する。この実施の形態のCPU3Eは、第1の実施の形態と同じように、図2に示す処理を実行する。このとき、CPU3Eは、ステップS1で、パルス割込み要求を優先する設定を行う。この後、CPU3Eは、第1の実施の形態と同じように、ステップS2,S3の処理を行う。 【0037】CPU3Eは、ステップS2の処理中に、カウンタ3Bからの割込み要求によるオーバーフロー割込み処理を開始する場合、図7に示す処理を実行する。すなわち、CPU3Eは、処理ブロックである関数f2を行う(ステップS31)。関数f2は、後述するパルス割込み処理の際の呼び出しのために定義されたものであり、カウンタ3Bのオーバーフローにより、オーバーフロー回数をインクリメントするものである。ステップS31で、CPU3Eは、このような関数f2を行う。ステップS31が終了すると、CPU3Eは、図2に示す上記通常処理に復帰する(ステップS32)。 【0038】また、CPU3Eは、ステップS2の処理中に、入力ポート3Aからの割込み要求により、図8に示すパルス割込み処理を開始する。すなわち、CPU3Eは、オーバーフロー割込み要求の有無を調べる(ステップS41)。ステップS41で、オーバーフロー割込み要求が発生していると、CPU3Eは、パルス割込み要求が発生したときのカウンタ3Bのカウント値を調べて、このカウント値が最大値に近いかゼロに近いかを判断する(ステップS42)。ステップS42で、上記カウント値がゼロに近いときは、CPU3Eは、カウンタ3Bのオーバーフローが次のパルスの前に発生すると判断し、図7の関数f2を呼び出して実行する(ステップS43)。ステップS43の後、CPU3Eは、オーバーフロー割込み要求をクリアする(ステップS44)。ステップS44の後、CPU3Eは、上記パルス幅の算出処理を実行し(ステップS45)、上記通常処理に復帰する(ステップS46)。また、先のステップS41で、パルス割込み処理が発生していない場合、CPU3Eは、ステップS45の処理を行う。さらに、先のステップS42で、カウント値が最大であれば、CPU3Eは、オーバーフローが次のパルスの後で発生すると判断して、ステップS45の処理を行う。こうして、CPU3Eは、パルス割込み要求に対するオーバーフロー割込み要求の発生タイミングに基づいて、パルス割込み処理を実行する。 【0039】次に、この実施の形態の動作について、先の図5を併せ用いて説明する。時間t1でのパルス割込み処理と、時間t2でのオーバーフロー割込み処理は、第1の実施の形態と同じである。この後、時間t3のときに、他の割込み要求が発生し、CPU3Eは、この割込み要求による割込み処理を実行する。さらに、上記割込み処理の実行中に、時間t4でオーバーフローによる割込み要求が発生し、この割込み要求に続いて、時間t5で、パルス41の次のパルス発生による割込み要求が発生すると、CPU3Eは、これら2つの割込み要求を保留する。 【0040】上記他の割込み処理を終了すると、CPU3Eは、保留した上記2つの割込み要求による割込み処理を開始する。このとき、パルス割込み要求が優先するので、CPU3Eは、時間t5で発生した割込み要求によるパルス割込み処理(図8)を開始する。CPU3Eは、ステップS41で、時間t4によるオーバーフロー割込み要求が発生しているので、ステップS42で、現在のカウント値がゼロに近いか最大値に近いかを判断する。図5に示すように、時間t5でのカウント値がゼロに近いので、CPU3Eは、オーバーフローが次のパルスの立ち上がり前に発生すると判断し、ステップS43,S44でカウント値を「1」だけインクリメントし、この後、ステップS45で上記パルス幅算出処理を行う。この後、CPU3Eは、通常処理に戻る。 【0041】ところで、検出信号が図6に示すものである場合、CPU3Eは、次のような処理を行う。時間t11でのパルス割込み処理と、時間t12でのオーバーフロー割込み処理は、第1の実施の形態と同じである。この後、時間t13のときに、他の割込み要求が発生し、CPU3Eは、この割込み要求による割込み処理を実行する。さらに、上記割込み処理の実行中に、時間t14で、パルス51の次のパルス発生による割込み要求が発生し、この割込み要求に続いて、時間t15で、オーバーフローによる割込み要求が発生すると、CPU3Eは、これら2つの割込み要求を保留する。 【0042】上記他の割込み処理を終了すると、CPU3Eは、保留した上記2つの割込み要求による割込み処理を開始する。このとき、パルス割込み要求が優先するので、CPU3Eは、時間t14で発生した割込み要求によるパルス割込み処理(図8)を開始する。ステップS41で、オーバーフロー割込み要求が発生しているので、CPU3Eは、ステップS42でカウンタ3Bのカウント値がゼロに近いか最大値に近いかを判断する。図6に示すように、時間t14でのカウント値が最大値に近いので、CPU3Eは、オーバーフローが次のパルスの立ち上がりの後で発生すると判断し、ステップS45の処理を行う。この後、CPU3Eは、通常処理に戻る。 【0043】このように、この実施の形態によれば、パルス割込み要求が優先する場合、時間t5で発生したパルス割込み要求によるパルス41のパルス幅を算出するときに、時間t14で発生したオーバーフローを取り込むので、パルス41のパルス幅を正確に算出することを可能にする。以上、この発明の第1、第2の実施の形態を図面により詳述してきたが、具体的な構成は、上記実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等があっても、この発明に含まれる。例えば、コンピュータ3を用いたソフト的な処理で、この発明を実施したが、ハード的な構成で、この発明を実施してもよい。 【0044】 【発明の効果】以上、説明したように、オーバーフロー割込み要求を優先する設定を行った場合、オーバーフロー割込み要求による割込み処理を実行するとき、優先順位が次のパルス割込み要求が発生していると、この要求の発生タイミングに基づいてオーバーフロー割込み処理を実行する。この結果、割込み処理中に、パルス割込み要求やオーバーフロー割込み要求が相次いで発生したら、優先順に割込み要求が発生しなくても、パルス幅を正確に算出することができる。 【0045】また、パルス割込み要求を優先する設定を行った場合、パルス割込み要求による割込み処理を実行するとき、優先順位が次のオーバーフロー割込み要求が発生していると、この要求に対するパルス割込み要求の発生タイミングに基づいてパルス割込み処理を実行する。この結果、割込み処理中に、パルス割込み要求やオーバーフロー割込み要求が相次いで発生したら、優先順に割込み要求が発生しなくても、パルス幅を正確に算出することができる。
|
| 【出願人】 |
【識別番号】000004237 【氏名又は名称】日本電気株式会社
|
| 【出願日】 |
平成9年(1997)11月28日 |
| 【代理人】 |
【弁理士】 【氏名又は名称】西村 征生
|
| 【公開番号】 |
特開平11−160338 |
| 【公開日】 |
平成11年(1999)6月18日 |
| 【出願番号】 |
特願平9−327454 |
|