(57)【特許請求の範囲】
【請求項１】
システムクロックとして用いられる第１の基本クロック信号のクロック数を計数する計数手段と、
前記第１の基本クロック信号よりも発振周波数が低く発振精度の高いシステムクロックとして用いられる第２の基本クロック信号の所定周期における前記計数手段により計数された前記第１の基本クロック信号のクロック数と、前記第２の基本クロック信号の所定周期に対応する前記第１の基本クロック信号のクロック数として予め計数された基準クロック数と、を用いて、前記計数手段が計数したクロック数の前記基準クロック数に対する変動量を示す物理量を導出する導出手段と、
前記導出手段が導出した前記物理量に応じて、測定対象とする時間に対応する前記第１の基本クロック信号のクロック数を示す期待計数値を補正する補正手段と、
前記計数手段が計数した前記第１の基本クロック信号のクロック数が、前記補正手段が補正した補正期待計数値に達した場合に、当該補正期待計数値に達したことを示す時間情報を出力する出力手段と、
を備えた時間測定装置。
【請求項２】
前記第２の基本クロック信号の周期ごとに第１の割込み信号を出力する第１の割込み手段と、
前記計数手段が計数する前記第１の基本クロック信号のクロック数が、前記補正手段が補正した前記補正期待計数値になると第２の割込み信号を出力する第２の割込み手段と、を備え、
前記導出手段は、前記第１の割込み手段から前記第１の割込み信号が出力されると、前記計数手段に前記第１の基本クロック信号のクロック数の計数を開始させて、次の前記第１の割込み信号が出力されるまで待機し、次の前記第１の割込み信号が出力されると、それまでに計数した前記第１の基本クロック信号のクロック数を、前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数として取得し、取得した前記クロック数と前記基準クロック数との比率を前記物理量として導出し、
前記補正手段は、前記導出手段が導出した前記比率に応じて、前記期待計数値を補正し、
前記出力手段は、前記補正手段が前記期待計数値を補正した後、前記計数手段に前記第１の基本クロック信号のクロック数の計数を開始させて、前記第２の割込み手段から前記第２の割込み信号が出力されるまで待機し、前記第２の割込み手段から前記第２の割込み信号が出力されると、前記時間情報を出力する、
請求項１記載の時間測定装置。
【請求項３】
前記導出手段は、前記第１の割込み手段から前記第１の割込み信号が出力されると、１回目の割込みか否かを判別し、１回目の割込みであれば、前記計数手段の計数値を初期化して、１回目の割込みが発生したことを示すフラグ情報を設定し、１回目の割込みでなければ、それまでに前記計数手段が計数した前記第１の基本クロック信号のクロック数を、前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数として取得して、前記フラグ情報の設定を初期化する、
請求項２記載の時間測定装置。
【請求項４】
前記導出手段は、前記計数手段が計数した前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数を、前記基準クロック数で除算した値を前記比率として導出し、
前記補正手段は、前記導出手段が導出した比率を前記期待計数値に乗算して前記補正を行う、
請求項２又は請求項３記載の時間測定装置。
【請求項５】
前記計数手段による前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数の計数時に発生したオーバーフローの回数を計数する第２の計数手段を備え、
前記導出手段は、前記第２の計数手段が計数したオーバーフローの回数と当該オーバーフローとなるクロック数とを乗算した値と、オーバーフローすることなく前記計数手段が計数した前記第１の基本クロック信号のクロック数と、を加算し、加算した値を、前記計数手段による前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数の計数値として取得する、
請求項２から請求項４の何れか１項に記載の時間測定装置。
【請求項６】
前記計数手段による前記オーバーフローが発生すると第３の割込み信号を出力する第３の割込み手段を備え、
前記第３の割込み手段から前記第３の割込み信号が出力されると、前記第２の計数手段は、前記オーバーフローの回数の計数を行い、
前記導出手段は、前記第１の割込み信号による割込みが１回目の割込みか否かを判別し、１回目の割込みであれば、前記第２の計数手段の計数値を初期化すると共に、前記計数手段の計数値を初期化して、１回目の割込みが発生したことを示すフラグ情報を設定し、１回目の割込みでなければ、それまでに前記計数手段が計数した前記第１の基本クロック信号のクロック数と前記第２の計数手段が計数したオーバーフローの発生回数を読み取り、前記乗算と前記加算を行い、前記フラグ情報の設定を初期化する、
請求項５記載の時間測定装置。
【請求項７】
前記第２の基本クロック信号の周期ごとに同期信号を生成する生成手段を備え、
前記導出手段は、ポーリングにより、前記生成手段が前記同期信号を生成しているか否かを判別し、前記同期信号を生成していれば、次の前記同期信号が生成されるまでの間、前記計数手段に前記第１の基本クロック信号のクロック数の計数を実行させて、当該計数値を順次に読み取ることで、前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数を読み取り、読み取った前記クロック数と前記基準クロック数との比率を前記物理量として導出し、
前記補正手段は、前記導出手段が導出した前記比率に応じて、前記期待計数値を補正し、
前記出力手段は、ポーリングにより、前記計数手段が計数する前記第１の基本クロック信号のクロック数が、前記補正手段が補正した前記補正期待計数値に達したか否かを判別し、達すれば前記時間情報を出力する、
請求項１記載の時間測定装置。
【請求項８】
前記第１の基本クロック信号を生成するＲＣ発振器もしくはＰＬＬ発振器のいずれかと、
前記第２の基本クロック信号を発生する水晶発振器と、
を備えた請求項１から請求項７の何れか１項に記載の時間測定装置。
【請求項９】
前記計数手段として、前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数の計数に用いられる第３の計数手段と、前記補正期待計数値と比較される前記第１の基本クロック信号のクロック数の計数に用いられる第４の計数手段と、
を備えた請求項１から請求項８の何れか１項に記載の時間測定装置。
【請求項１０】
前記第２の基本クロック信号を分周する分周手段を備え、
前記計数手段は、前記分周手段が分周した前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数を計数する、
請求項１から請求項９の何れか１項に記載の時間測定装置。
【請求項１１】
前記第１の基本クロック信号と前記第２の基本クロック信号のいずれかをシステムクロック信号として選択する選択手段を備え、
前記計数手段は、前記選択手段が選択した前記システムクロック信号のクロック数を計数する、
請求項１から請求項１０の何れか１項に記載の時間測定装置。
【請求項１２】
請求項１から請求項１１の何れか１項に記載の時間測定装置を備えたマイクロコントローラ。
【請求項１３】
コンピュータを、請求項１から請求項１１の何れか１項に記載の時間測定装置における各手段として機能させるためのプログラム。
【請求項１４】
プログラムに基づくコンピュータ装置により時間を測定する方法であって、
システムクロックとして用いられる第１の基本クロック信号のクロック数を計数する計数手順と、
前記第１の基本クロック信号よりも発振周波数が低く発振精度の高いシステムクロックとして用いられる第２の基本クロック信号の所定周期における前記計数手順により計数された前記第１の基本クロック信号のクロック数と、前記第２の基本クロック信号の所定周期に対応する前記第１の基本クロック信号のクロック数として予め計数された基準クロック数と、を用いて、前記計数手順で計数されたクロック数の前記基準クロック数に対する変動量を示す物理量を導出する導出手順と、
前記導出手順で導出された前記物理量に応じて、測定対象とする時間に対応する前記第１の基本クロック信号のクロック数を示す期待計数値を補正する補正手順と、
前記計数手順で計数された前記第１の基本クロック信号のクロック数が、前記補正手順で補正された補正期待計数値に達した場合に、当該補正期待計数値に達したことを示す時間情報を出力する出力手順と、
を含む時間測定方法。
【請求項１５】
前記第２の基本クロック信号の周期ごとに第１の割込み信号を出力する第１の割込み手順と、
前記計数手順で計数される前記第１の基本クロック信号のクロック数が、前記補正手順で補正された前記補正期待計数値になると第２の割込み信号を出力する第２の割込み手順と、を含み、
前記導出手順では、前記第１の割込み手順により前記第１の割込み信号が出力されると、前記計数手順による前記第１の基本クロック信号のクロック数の計数を開始させて、次の前記第１の割込み信号が出力されるまで待機し、次の前記第１の割込み信号が出力されると、それまでに計数された前記第１の基本クロック信号のクロック数を、前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数として取得し、取得した前記クロック数と前記基準クロック数との比率を前記物理量として導出し、
前記補正手順では、前記導出手順で導出された前記比率に応じて、前記期待計数値を補正し、
前記出力手順では、前記補正手順で前記期待計数値を補正した後、前記計数手順による前記第１の基本クロック信号のクロック数の計数を開始させて、前記第２の割込み手順により前記第２の割込み信号が出力されるまで待機し、前記第２の割込み手順により前記第２の割込み信号が出力されると、前記時間情報を出力する、
請求項１４記載の時間測定方法。
【請求項１６】
前記導出手順では、前記第１の割込み手順により前記第１の割込み信号が出力されると、１回目の割込みか否かを判別し、１回目の割込みであれば、前記計数手順による計数値を初期化して、１回目の割込みが発生したことを示すフラグ情報を設定し、１回目の割込みでなければ、それまでに前記計数手順で計数された前記第１の基本クロック信号のクロック数を、前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数として取得して、前記フラグ情報の設定を初期化する、
請求項１５記載の時間測定方法。
【請求項１７】
前記導出手順では、前記計数手順で計数された前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数を、前記基準クロック数で除算した値を前記比率として導出し、
前記補正手順では、前記導出手順で導出された比率を前記期待計数値に乗算して前記補正を行う、
請求項１５又は請求項１６記載の時間測定方法。
【請求項１８】
前記計数手順による前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数の計数時に発生したオーバーフローの回数を計数する第２の計数手順を含み、
前記導出手順では、前記第２の計数手順で計数されたオーバーフローの回数と当該オーバーフローとなるクロック数とを乗算した値と、オーバーフローすることなく前記計数手順において計数された前記第１の基本クロック信号のクロック数と、を加算し、加算した値を、前記計数手順による前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数の計数値として取得する、
請求項１５から請求項１７の何れか１項に記載の時間測定方法。
【請求項１９】
前記計数手順による前記オーバーフローが発生すると第３の割込み信号を出力する第３の割込み手順を含み、
前記導出手順では、前記第３の割込み手順により前記第３の割込み信号が出力されると、前記第２の計数手順により前記オーバーフローの回数を計数させると共に、前記第１の割込み手順による前記第１の割込み信号が１回目の割込みか否かを判別し、１回目の割込みであれば、前記第２の計数手順での計数値を初期化し、前記計数手順での計数値を初期化して、１回目の割込みが発生したことを示すフラグ情報を設定し、１回目の割込みでなければ、それまでに前記計数手順により計数された前記第１の基本クロック信号のクロック数と前記第２の計数手順により計数されたオーバーフローの発生回数を読み取り、前記乗算と前記加算を行い、前記フラグ情報の設定を初期化する、
請求項１８記載の時間測定方法。
【請求項２０】
前記第２の基本クロック信号の周期ごとに同期信号を生成する生成手順を含み、
前記導出手順では、ポーリングにより、前記生成手順で前記同期信号が生成されているか否かを判別し、前記同期信号が生成されていれば、次の前記同期信号が生成されるまでの間、前記計数手順による前記第１の基本クロック信号のクロック数の計数を実行させて、当該計数値を順次に読み取ることで、前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数を読み取り、読み取った前記クロック数と前記基準クロック数との比率を前記物理量として導出し、
前記補正手順では、前記導出手順で導出された前記比率に応じて、前記期待計数値を補正し、
前記出力手順では、ポーリングにより、前記計数手順で計数される前記第１の基本クロック信号のクロック数が、前記補正手順で補正された前記補正期待計数値に達したか否かを判別し、達すれば前記時間情報を出力する、
請求項１４載の時間測定方法。
【請求項２１】
前記第１の基本クロック信号をＲＣ発振器もしくはＰＬＬ発振器のいずれかで生成する手順と、
前記第２の基本クロック信号を水晶発振器で生成する手順と、
を含む請求項１４から請求項２０の何れか１項に記載の時間測定方法。
【請求項２２】
前記計数手順は、第１の計数手段を用いて前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数の計数を行う手順と、第２の計数手段を用いて前記補正期待計数値と比較される前記第１の基本クロック信号のクロック数の計数を行う手順と、
を含む請求項１４から請求項２１の何れか１項に記載の時間測定方法。
【請求項２３】
前記第２の基本クロック信号を分周手段により分周する手順を含み、
前記計数手順では、前記分周手段が分周した前記第２の基本クロック信号の所定周期における前記第１の基本クロック信号のクロック数を計数する、
請求項１４から請求項２２の何れか１項に記載の時間測定方法。
【請求項２４】
前記第１の基本クロック信号と前記第２の基本クロック信号のいずれかを、選択手段を用いてシステムクロック信号として選択する選択手順を含み、
前記計数手順では、前記選択手順で選択された前記システムクロック信号のクロック数を計数する、
請求項１４から請求項２３の何れか１項に記載の時間測定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ処理を行う装置におけるタイマを用いた時間測定技術に係り、特に、高速動作時における時間測定動作の高精度化を低コストに行うのに好適な時間測定装置、マイクロコントローラ、プログラム、及び時間測定方法に関するものである。
【背景技術】
【０００２】
コンピュータ処理を行う装置として、１つの半導体チップにコンピュータシステム全体を集積したマイクロコントローラがある。一般に、このマイクロコントローラは、動作クロックを生成するための発振器を複数備えており、目的や用途によってＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やタイマなどの周辺回路の動作クロックを切り替えることができる。
【０００３】
例えば、通常の動作では、消費電力を抑えるためこれらの動作クロックとして低速のクロックを選択し、高速で処理を行う必要が生じたときに高速のクロックに切り替える。
【０００４】
一例として、無線通信を行うシステムでは、無線によるコマンドの受信が開始されるまでは、低速のクロックで動作しコマンドの受信を待つ状態になっている。これにより、コマンドの受信を待つ状態における消費電力を少なくすることができる。
【０００５】
ここで、一定間隔で状態が変化し、その状態を無線で送信する装置ａと、装置ａの状態を無線で受信し、装置ａの状態に応じた動作を装置ａと同じ間隔で切り替える装置ｂがあり、装置ｂは、何らかの妨害で装置ａからの無線が途切れた場合でも、以前受信した間隔をもとに動作し続ける無線通信を行うシステムがあるとする。
【０００６】
このシステムで、装置ｂは、装置ａからの無線が途切れた場合でも装置ａと同期をとるため、受信したコマンドの時間間隔を正確に測定する必要があり、この場合、コマンドの時間間隔を測定するタイマの精度は高くする必要がある。
【０００７】
このような用途に用いられるマイクロコントローラに搭載されるクロック発振器として代表的なものとしては、水晶発振器やＲＣ発振器が挙げられる。
【０００８】
水晶発振器は、水晶振動子を外部に付加して使用する発振器で、高精度なクロックを生成することができる。
【０００９】
また、ＲＣ発振器は、マイクロコントローラの外部に部品を取り付ける必要はなく、内部に集積することができるため、水晶発振器よりも安価に構築することができる。
【００１０】
しかし、ＲＣ発振器では、水晶発振器と比べて高精度なクロックを生成することはできない。そのため、ＲＣ発振器は、正確な測定時間を要する用途には使用することができない。
【００１１】
この問題を解決するために、特許文献１では、ＲＣ発振器を使用したタイマを用いる場合でも正確な時間測定を可能とする技術が提案されている。この特許文献１に記載のマイクロコントローラの動作を、図１５のタイミングチャートを用いて説明する。
【００１２】
図１５に示すように、ＲＣ発振器による基本クロックの立ち上がりで発生する割込み要求レジスタの割込み要求信号の立ち上がりから、ＲＣ発振器のクロックの１周期分の先頭（図中、丸付きの１で示される）と１周期の終わり（図中、丸付きの２で示される）を検出し、その間に発生する高精度で高周波数の水晶発振器による基本クロックのカウント値（計数値）の確認を行う。
【００１３】
このように、高精度で高周波数の水晶発振器により、ＲＣ発振器のクロックの１周期を計測することで、ＲＣ発振器の実際の正確な周期を求め、求めた実際の周期とＲＣ発振器の正常時における周期（期待計数値）との比率を算出し、算出した比率に基づき補正係数を求める。そして、その補正係数を、ＲＣ発振器を入力としたタイマの計数値に乗じることで、タイマによる測定時間の補正を行う。
【００１４】
しかし、この技術では、次のような問題がある。
【００１５】
第１の問題点は、特許文献１の技術では、ＲＣ発振器のクロック周期を直接測定可能であるような、高周波数で高価な水晶振動子が必要であり、ＲＣ発振回路による低コスト化のメリットが失われてしまう点である。
【００１６】
一般に、水晶発振器は、高周波数なものほど高価であるため、高周波の発振クロックで動作するコンピュータシステムにおいてタイマの制御に水晶発振器を用いるとコスト高になってしまう。
【００１７】
そのため、マイクロコントローラの動作を安価に高速化するためには、ＲＣ発振器のクロックを高速化してシステムクロックとして用いることが望ましい。しかし、この場合、特許文献１の技術では、さらに高周波数の水晶振動子が必要となる。
【００１８】
なお、特許文献１のマイクロコントローラにおいても、水晶発振器のクロックを、高速動作時のシステムクロックとして選択して使用しているが、当該マイクロコントローラをさらに高速に動作させるためには、高価な水晶発振器が必要となりコスト高となる。
【００１９】
第２の問題点は、特許文献１の技術で正確な補正係数を求める場合、ＲＣ発振器は、水晶発振器よりも低周波数でなくてはならないため、その低周波数のＲＣ発振器の基本クロックを入力とするタイマの分解能を高めることができない点である。
【００２０】
タイマの分解能を高める場合は、高周波数の基本クロックを発振するＲＣ発振器を使用しなければならない。ＲＣ発振器は高周波数のものであっても安価ではあるが、特許文献１の技術では、タイマの分解能を高めるためには、同時に高周波数の水晶発振器を使用しなければならないため、コストが高くなってしまう。
【００２１】
なお、特許文献１においても記載されているように、ＲＣ発振器の周波数を分周すれば、低周波数の水晶発振器を使用したままでもタイマの分解能を高めることができる。しかし、この場合、分周器を新たに追加しなければならない。なお、分周器としては、例えば、特許文献２に記載のものがある。
【００２２】
また、このように分周器を使用した場合、ＲＣ発振器の基本クロックの１周期が分周されて長くなるため、補正係数を求める際に行う、ＲＣ発振器の１クロックの間に発生する水晶発振器のクロックを計数する処理の時間が増加してしまう。
【００２３】
第３の問題点は、補正係数算出の際に行っている水晶発振器のクロックの先頭と終端の検索と、タイマ補正係数を用いてポート出力する技術を、特許文献１においては、ポーリングすることによって実現しているため、マイクロコントローラ内のＣＰＵが常に動作している状態にあり、省電力モードに切り替えることができない点である。また、ポーリング中、ＣＰＵは他の処理を実行することができない。
【００２４】
第４の問題点は、補正係数を求める際に、低周波数のＲＣ発振器の１周期を、高周波数の水晶発振器のクロックを入力したタイマで計数しているので、ＲＣ発振器と水晶発振器の速度差が大きい場合、タイマの計数値がオーバーフローしてしまう場合がある点である。
【００２５】
なお、タイマによる発振器のクロック数の計数動作を制御するための技術として、例えば、特許文献３，４に記載のものがある。
【００２６】
特許文献３においては、第１のクロック信号の周波数の誤差を補正するために、第１のクロック信号よりも周波数が低い第２のクロック信号を入力し、パルス数カウンタにより当該第２のクロック信号の１周期に含まれる第１のクロック信号のパルス数を計数し、演算部において、このパルス数カウンタが計数したパルス数と予め定められた基準パルス数とを用いて補正情報を算出し、補正信号出力部において、演算部が算出した補正情報に基づいてクロック補正信号を出力し、出力ゲートにおいて、補正信号出力部が出力したクロック補正信号に基づいて第１のクロック信号の出力を補正する技術が開示されている。
【００２７】
しかし、この技術では、タイマへ入力されるＲＣ発振器などで生成された第１のクロック信号の一部を、水晶発振器で生成された第２のクロック信号の1周期に基づき、タイマへ伝えないように信号を切り離しており、クロック自身に加工を行なうものであり、構成を増加させる必要がある。
【００２８】
また、特許文献４においては、基準発振器の１周期毎にＲＣ発振器の周波数を計数し、計数値がある一定値以上であれば、スイッチトランジスタの数を増やしてＲＣ発振器における全容量値を増やして出力発振周波数を小さくし、計数数がある一定値より小さければ、スイッチトランジスタの数を減らしてＲＣ発振器における全容量値を減らして出力発振周波数を大きくする手順を繰り返す事により、発振周波数を、内部の別の基準発振器により自動的に目的の値に安定するように制御する技術が開示されており、この特許文献４における技術では、スイッチトランジスタの数を増やしてクロックを加工しており、特許文献３と同様に、構成を増加させる必要がある。
【先行技術文献】
【特許文献】
【００２９】
【特許文献１】特開平１０−４９２５１号公報
【特許文献２】特開平０５−４８４３３号公報
【特許文献３】特開２００６−３０９４７９号公報
【特許文献４】特開平０８−１３９５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【００３０】
本発明は、上記問題点を解決するためのものであり、コンピュータ装置に設けられたタイマによる高速動作時における高精度な時間測定を低コストに行うことを可能とする時間測定装置，マイクロコントローラ、プログラム、及び時間測定方法を提供することを目的とする。
【課題を解決するための手段】
【００３１】
上記目的を達成するため、本発明の時間測定装置は、システムクロックとして用いられる第１の基本クロック信号のクロック数を計数する計数手段と、前記第１の基本クロック信号よりも発振周波数が低く発振精度の高いシステムクロックとして用いられる第２の基本クロック信号の所定周期における前記計数手段により計数された前記第１の基本クロック信号のクロック数と、前記第２の基本クロック信号の所定周期に対応する前記第１の基本クロック信号のクロック数として予め計数された基準クロック数と、を用いて、前記計数手段が計数したクロック数の前記基準クロック数に対する変動量を示す物理量を導出する導出手段と、前記導出手段が導出した前記物理量に応じて、測定対象とする時間に対応する前記第１の基本クロック信号のクロック数を示す期待計数値を補正する補正手段と、前記計数手段が計数した前記第１の基本クロック信号のクロック数が、前記補正手段が補正した補正期待計数値に達した場合に、当該補正期待計数値に達したことを示す時間情報を出力する出力手段と、を備えた構成となっている。
【００３２】
また、上記目的を達成するため、本発明のマイクロコントローラは、上記記載の時間測定装置を備えて構成される。
【００３３】
また、上記目的を達成するため、本発明のプログラムは、コンピュータを、上記記載の時間測定装置における各手段として機能させるためのプログラムである。
【００３４】
また、上記目的を達成するため、本発明の時間測定方法は、プログラムに基づくコンピュータ装置により時間を測定する方法であって、システムクロックとして用いられる第１の基本クロック信号のクロック数を計数する計数手順と、前記第１の基本クロック信号よりも発振周波数が低く発振精度の高いシステムクロックとして用いられる第２の基本クロック信号の所定周期における前記計数手順により計数された前記第１の基本クロック信号のクロック数と、前記第２の基本クロック信号の所定周期に対応する前記第１の基本クロック信号のクロック数として予め計数された基準クロック数と、を用いて、前記計数手順で計数されたクロック数の前記基準クロック数に対する変動量を示す物理量を導出する導出手順と、前記導出手順で導出された前記物理量に応じて、測定対象とする時間に対応する前記第１の基本クロック信号のクロック数を示す期待計数値を補正する補正手順と、前記計数手順で計数された前記第１の基本クロック信号のクロック数が、前記補正手順で補正された補正期待計数値に達した場合に、当該補正期待計数値に達したことを示す時間情報を出力する出力手順と、を含むものである。
【発明の効果】
【００３５】
本発明によれば、コンピュータ装置に設けられたタイマによる高速動作時における高精度な時間測定を低コストに行うことを可能である。
【図面の簡単な説明】
【００３６】
【図１】本発明に係るマイクロコントローラに備えられた時間測定装置の機能構成例を示すブロック図である。
【図２】本発明に係る時間測定装置を設けたマイクロコントローラの第１の構成例を示すブロック図である。
【図３】図２におけるマイクロコントローラの本発明に係る第１の処理動作例を示すフローチャートである。
【図４】図２におけるマイクロコントローラの時間測定補正時の第１の動作例を示すタイミングチャートである。
【図５】図２におけるマイクロコントローラの本発明に係る第２の処理動作例を示すフローチャートである。
【図６】図２におけるマイクロコントローラの時間測定補正時の第２の動作例を示すタイミングチャートである。
【図７】本発明に係る時間測定装置を設けたマイクロコントローラの第２の構成例を示すブロック図である。
【図８】図７におけるマイクロコントローラの本発明に係る第１の処理動作例を示すフローチャートである。
【図９】図７におけるマイクロコントローラの本発明に係る第２の処理動作例を示すフローチャートである。
【図１０】図７におけるマイクロコントローラの時間測定補正時の動作例を示すタイミングチャートである。
【図１１】図７におけるマイクロコントローラの本発明に係る第３の処理動作例を示すフローチャートである。
【図１２】図７におけるマイクロコントローラの本発明に係る第４の処理動作例を示すフローチャートである。
【図１３】本発明に係る時間測定装置を設けたマイクロコントローラの第３の構成例を示すブロック図である。
【図１４】本発明に係る時間測定装置を設けたマイクロコントローラの第４の構成例を示すブロック図である。
【図１５】従来のマイクロコントローラにおける時間測定補正時の動作例を示すタイミングチャートである。
【発明を実施するための形態】
【００３７】
以下、図を用いて本発明を実施するための形態例について説明する。
【００３８】
図１は、本発明に係るマイクロコントローラ１００に備えられた時間測定装置１０１の機能構成例を示しており、本例の時間測定装置１０１は、本発明に係る動作を実行する機能として、計数部１０１ａ、導出部１０１ｂ、補正部１０１ｃ、及び出力部１０１ｄを備えている。
【００３９】
計数部１０１ａは、第１の基本クロック信号のクロック数を計数し、導出部１０１ｂは、第１の基本クロック信号よりも発振周波数が低く発振精度の高い第２の基本クロック信号の所定周期における計数部１０１ａにより計数された第１の基本クロック信号のクロック数と、第２の基本クロック信号の所定周期に対応する第１の基本クロック信号のクロック数として予め計数された基準クロック数と、を用いて、計数部１０１ａが計数したクロック数の基準クロック数に対する変動量を示す物理量を導出し、補正部１０１ｃは、導出部１０１ｂが導出した物理量に応じて、測定対象とする時間に対応する第１の基本クロック信号のクロック数を示す、記憶装置に記憶されている期待計数値１０１ｅを補正し、出力部１０１ｄは、計数部１０１ａが計数した第１の基本クロック信号のクロック数が、補正部１０１ｃが補正した補正期待計数値に達した場合に、当該補正期待計数値に達したことを示す時間情報を出力する。
【００４０】
このような各処理部を設けた構成の時間測定装置１０１を備えたことにより、マイクロコントローラ１００は、高速動作時におけるタイマ機能による高精度な時間測定を低コストに行うことができる。
【００４１】
次に、図２〜図１４を用いて、このような時間測定装置を備えたマイクロコントローラの詳細について説明を行う。
【００４２】
図２は、本発明の第１の形態例を示すマイクロコントローラの構成図であり、本例のマイクロコントローラ１は、本発明に係る時間測定方法を含むマイクロコントローラ１の処理動作を制御するプログラムが格納されたＲＯＭ１４と、ＲＯＭ１４に格納された各プログラムを読み出してコンピュータ処理を実行するＣＰＵ１３と、マイクロコントローラ内部のデータが通るバス１１と、システムクロック７と、外部とのインターフェースを行うポート１２と、第１の基本クロック３を生成するＲＣ発振器２と、第２の基本クロック５を生成する水晶発振器４と、第１及び第２の基本クロックのどちらをシステムクロック７として出力するかを選択する基本クロック選択器６と、システムクロック７を時間情報として計数するタイマ８と、第２の基本クロック５に同期し割込み要求信号を出力する割込み要求レジスタ９と、から構成されている。
【００４３】
なお、ＲＯＭ１４に格納された本発明に係る時間測定用のプログラムを読み込んでＣＰＵ１３が実行することにより、本発明に係る導出手段、補正手段、及び出力手段等を含む、各手段が構成される。また、タイマ８は本発明に係る計数手段に相当し、割込み要求レジスタ９は本発明に係る同期信号生成手段に相当する。
【００４４】
本例のマイクロコントローラ１においては、ＲＣ発振器２は発振周波数が高い第１の基本クロック３を生成し、水晶発振器４はＲＣ発振器２の発振周波数より低い高精度の第２の基本クロック５を生成する。そして、基本クロック選択器６は第１の基本クロック３と第２の基本クロック５のどちらをシステムクロック７にするかを選択し、タイマ８は、基本クロック選択器６が選択した第１の基本クロック３と第２の基本クロック５のいずれかのシステムクロック７のクロック数を計数し、ＣＰＵ１３は、タイマ８の計数値が予め定められた時間に相当する値（期待計数値）になるまで、タイマ８の計数値を確認する動作を繰り返す。
【００４５】
このような構成において、本例のマイクロコントローラ１は、ＲＣ発振器２からの高い周波数の発振クロック信号である第１の基本クロック３をシステムクロック７として用いて高速な処理動作を行い、水晶発振器４からの低い周波数の発振クロック信号である基本クロック５をシステムクロック７として用いて、低速な処理動作を行う。
【００４６】
このように、図４に示す本例のマイクロコントローラ１は、ＲＣ発振器２からの発振周波数が高い基本クロック３をシステムクロックとして用いており、高速な処理を低コストに行うことができる。
【００４７】
しかし、ＲＣ発振器２では、水晶発振器４と比べて高精度なクロック信号を生成することができないため、高速処理時のタイマ８における計数動作に誤差が生じて正確な時間を測定することができない。
【００４８】
この問題を回避するために、本例のマイクロコントローラ１においては、ＲＯＭ１４に格納された本発明に係る時間測定用のプログラムをＣＰＵ１３が読み出して実行することにより、ＲＣ発振器２からの発振周波数が高い基本クロック３をシステムクロックとして用いて高速処理を行う際の、タイマ８を用いた時間測定処理で生じる誤差を補正する。
【００４９】
すなわち、ＣＰＵ１３は、ＲＯＭ１４に格納されたプログラムを実行して実装される時間測定機能により、タイマ８が計数した高速処理時のＲＣ発振器２からの基本クロック３のクロック数が予め定められた期待計数値になると、当該期待計数値に対応付けられた時間情報を出力するが、このように、基本クロック３のクロック数の読み込みを開始する前に、ＲＯＭ１４に格納されたプログラムをＣＰＵ１３が実行して実装される導出手段、補正手段、及び出力手段等の各機能により、以下のようにして、ＲＣ発振器２の発振動作誤差に伴うタイマ８による時間測定の補正を行う。
【００５０】
まず、ＣＰＵ１３は、導出手段の機能により、発振精度の高い水晶発振器４からの第２の基本クロック５が入力されたか否かを判別し、入力されると、当該第２の基本クロック５の１周期におけるタイマ８が計数した第１の基本クロック３のクロック数を取得して、取得した実際のクロック数の、予め第２の基本クロック５の１周期に対して定められた基本クロック３のクロック数（基準クロック数）に対する変動量を示す物理量を導出し、次に、補正手段の機能により、導出機能により導出された物理量に応じて期待計数値を補正する。
【００５１】
なお、本例では、変動量を示す物理量として、取得した実際のクロック数と基準クロック数との比率を導出し、このように導出した比率に応じて、期待計数値を補正する。
【００５２】
そして、ＣＰＵ１３は、出力手段の機能により、タイマ８が計数した基本クロック３のクロック数が、補正手段の機能により補正された期待計数値になると時間情報を出力する。
【００５３】
このように、本例のマイクロコントローラ１においては、発振周波数が高いＲＣ発振器２の第１の基本クロック３に基づく高速処理動作中でのタイマ８による時間測定時に、発振周波数が低いが精度が高い水晶発振器４から入力される第２の基本クロック５を制御信号として用いて、時間測定に用いるＲＣ発振器２の第１の基本クロック３のクロック数の変動に対する補正を行うことで、高速な処理動作中でのタイマ８を用いた時間測定を高精度に行い、高速な処理を低コストに且つ高精度に行う。
【００５４】
以下、図３〜図６を用いて、このようなマイクロコントローラ１における本例に係るタイマ補正技術の詳細を説明する。
【００５５】
まず、図３のフローチャートを用いて、図２のタイマ８をＲＣ発振器２が生成する高速な第１の基本クロック３で動作させる場合の、タイマ８を用いた時間測定の精度を向上させるために用いるタイマ補正係数を求めるための、ＣＰＵ１３のプログラムに基づき実行される処理を説明する。
【００５６】
タイマ８で計数するクロックとしてＲＣ発振器２からの基本クロック３を選択するように基本クロック選択器６を設定し（ステップＳ１）、割込み要求レジスタ９をクリア（初期化）する（ステップＳ２）。
【００５７】
ポーリングにより、割込み要求レジスタ９からの割込み要求信号の出力の有無を判別し（ステップＳ３）、出力していれば割込み要求レジスタ９とタイマ８の値をクリア（初期化）して（ステップＳ４，Ｓ５）、次の割込み要求レジスタ９からの割込み要求信号が出力されているか確認し続けることにより、次の水晶発振器４のクロックの１周期分の先頭を探す（ステップＳ６）。
【００５８】
このステップＳ６での処理の間に、タイマ８により水晶発振器４からの第２の基本クロック５の１周期におけるＲＣ発振器２からの第１の基本クロック３のクロック数が計数される。
【００５９】
ステップＳ６での処理において次の１周期分の先頭が見つかれば、当該ステップＳ６での処理中にタイマ８が計数した値、すなわち、水晶発振器４からの第２の基本クロック５の１周期におけるＲＣ発振器２からの第１の基本クロック３のクロック数を読み取る（ステップＳ７）。
【００６０】
その後、このステップＳ７の処理で読みとったタイマ８の計数値からタイマ補正係数を求める（ステップＳ８）。
【００６１】
本例では、この補正係数は以下のようにして求める。すなわち、ステップＳ７の処理で実際に読み取ったクロック数を実クロック数Ａ、予め水晶発振器４からの第２の基本クロック５の１周期における基準となるＲＣ発振器２からの第１の基本クロック３のクロック数を基準クロック数Ｂとすると、補正係数Ｃは、以下の式で求める。
「Ｃ＝Ａ／Ｂ」
このような補正係数を求める際の、ＲＣ発振器２からの第１の基本クロック３、水晶発振器４からの第２の基本クロック５、及び割込み要求レジスタ９の割込み要求信号１０の各信号の動作関係を、図４のタイミングチャートを用いて説明する。
【００６２】
図４におけるＲＣ発振器による基本クロック３及び水晶発振器による基本クロック５のそれぞれは、図２におけるＲＣ発振器２による第１の基本クロック３及び水晶発振器４による第２の基本クロック５に相当し、また、図４におけるＳ２〜Ｓ４，Ｓ６は、図３における各処理ステップの符号Ｓ２〜Ｓ４，Ｓ６に対応している。
【００６３】
Ｓ２のタイミングでは、図２のＣＰＵ１３が、図３におけるステップＳ２の処理により、割込み要求レジスタ９をクリア（初期化）する。Ｓ３のタイミングでは、割込み要求レジスタ９が、水晶発振器４からの第２の基本クロック５における１周期分の先頭を検出して、割込み要求信号１０を生成する。
【００６４】
ＣＰＵ１３は、ポーリングにより、この割込み要求レジスタ９による割込み要求信号１０の生成を検知し、Ｓ４のタイミングで、割込み要求レジスタ９の値をクリア（初期化）する。なお、タイマ８は、このＳ３のタイミングで一旦クリア（初期化）された後、ＲＣ発振器２からの第１の基本クロック３のクロック数の計数を開始する。
【００６５】
Ｓ６のタイミングでは、割込み要求レジスタ９が、水晶発振器４からの第２の基本クロック５における次の１周期分の先頭を検出して、割込み要求信号１０を生成する。ＣＰＵ１３は、ポーリングにより、この割込み要求レジスタ９による次の割込み要求信号１０の生成を検知して割込み要求レジスタ９の値をクリア（初期化）する。
【００６６】
このようにして、ＣＰＵ１３は、実際の、水晶発振器４からの第２の基本クロック５の１周期におけるＲＣ発振器２からの第１の基本クロック３のクロック数を読み取り、補正係数を求める。
【００６７】
次に、このようにして求めた補正係数を用いて、タイマ８を用いた時間測定の精度を向上させる際の処理内容を、図５に基づき説明する。
【００６８】
まず、基本クロック選択器６により、タイマ８で計数するクロックをＲＣ発振器２からの基本クロック３に設定する（ステップＳ９）。
【００６９】
なお、予め、タイマ８により測定する所望の時間を、所望のＲＣ発振器２の周期、すなわち水晶発振器４からの第２の基本クロック５の１周期における正常時のＲＣ発振器２からの第２の基本クロックのクロック数として予め定められた基準クロック数で割った値を、所望のタイマ８の期待値（期待計数値）として求めてＲＯＭ１４等の記憶装置に記憶しておくと共に（ステップＳ１０）、このステップＳ１０の処理により求めた所望のタイマの期待計数値に、図３のステップＳ８の処理で求めたタイマ補正係数を乗じた値を、補正後のタイマの期待計数値（補正期待計数値）として求めてＲＯＭ１４等の記憶装置に記憶しておく（ステップＳ１１）。すなわち、「補正後のタイマの期待値＝所望のタイマの期待値×タイマ補正係数」の式に基づき算出する。
【００７０】
そして、タイマ８を一旦クリア（初期化）し（ステップＳ１２）、その後のタイマ８の計数値を読み取り（ステップＳ１３）、このタイマ８の計数値が補正後のタイマの期待計数値より小さい間は（ステップＳ１４）、ステップＳ１３の処理を繰り返し、タイマ８の計数値が補正後のタイマの期待計数値に達すると、当該期待計数値に相当する時間が経過したことを示す時間情報をポート１２経由で出力する（ステップＳ１５）。
【００７１】
以上の補正係数を求める処理、及び求めた補正係数を用いてタイマの時間測定動作時の誤差を補正する処理の詳細を、図６のタイミングチャートを用いて説明する。
【００７２】
ここでは、補正係数を求める例として水晶発振器４からの第２の基本クロック５の発振周期を１．０ｍｓｅｃ、正常動作時における所望のＲＣ発振器２からの第１の基本クロック３の発振周期を、図６におけるクロック波形１５に示すように１．０μｓｅｃとする。
【００７３】
もし、ＲＣ発振器２からの第１の基本クロック３の実際の発振周期が、図６のクロック波形１７で示すように１．１μｓｅｃに変動した場合、図３のステップＳ７の処理で読み取る、ＲＣ発振器２からの第１の基本クロック３のクロック数は９０９となる。
【００７４】
すなわち、水晶発振器４からの第２の基本クロック５の１周期が１．０ｍｓｅｃであり、ＲＣ発振器２からの第１の基本クロック３の実際の発振周期が１．１μｓｅｃに変動した場合、タイマ８が、第２の基本クロック５の１周期の１．０ｍｓｅｃの間に読み取る第１の基本クロック３のクロック数は、「１．０ｍｓｅｃ／１．１μｓｅｃ＝９０９」となる。
【００７５】
ＲＣ発振器２からの第１の基本クロック３の発振周期が所望の発振周期１．０μｓｅｃの場合、水晶発振器４からの第２の基本クロック５の周期１．０ｍｓｅｃにおいてタイマ８により計数される基準クロック数は１０００計数である。
【００７６】
従って、図３のステップＳ７の処理で読み取った第１の基本クロック３のクロック数が９０９の場合、タイマ８の補正係数Ｃは、「補正係数Ｃ＝実クロック数Ａ／基準クロック数Ｂ」により、「０．９０９＝９０９／１０００」となり、タイマ８の補正係数Ｃ＝０．９０９が求められる。
【００７７】
次に、このようにして求めたタイマ補正係数（Ｃ＝０．９０９）を用いて、ＲＣ発振器２からの高い発振周波数での、タイマ８を用いた時間測定の精度を高める技術を説明する。
【００７８】
補正を行う前のマイクロコントローラ１においては、もし、ＲＣ発振器２の所望の周期１．０μｓｅｃが１．１μｓｅｃに延びると、図６における時間１６とクロック波形１７，１８に示すように、タイマ８を用いて測定する時間は、所望の１．０ｍｓｅｃから１．１ｍｓｅｃに延びてしまう。
【００７９】
このような不具合を補正するために、まず、図５のステップＳ１０の処理で記憶する所望のタイマの期待値（期待計数値）を、「所望のタイマの期待値＝所望の測定対象時間／所望の基本クロックの周期」の式に基づき、「１０００＝１．０ｍｓｅｃ／１．０μｓｅｃ」として求める。
【００８０】
次に、このようにして求めた所望のタイマの期待計数値（＝１０００）に、図３のステップＳ８の処理に基づき求めたタイマ補正係数（＝０．９０９）を乗じて、補正後のタイマの期待計数値（補正期待計数値）を求める。本図６の例では、補正期待計数値は、「１０００×０．９０９＝９０９」となる。
【００８１】
この後、タイマ８でのＲＣ発振器２からの第１の基本クロック３のクロック数の計数を開始し、このタイマ８の計数値が補正期待計数値（＝９０９）に達するまでタイマ８が計数するクロック数を読み取る。図６の例では、補正後のタイマの期待計数値（補正期待計数値）は９０９なので９０９×１．１μｓｅｃ＝１．０ｍｓｅｃの間、タイマ８の計数値の読み取りを繰り返す。その結果として、タイマ８を用いて測定する時間は１．０ｍｓｅｃとなり、測定する時間が補正されたことになる。
【００８２】
例えば、マイクロコントローラ１のポート１２を経由して外部端子から１．０ｍｓｅｃのパルス信号を発生する場合、この補正制御技術を用いなければ１．１ｍｓｅｃになるが、本例の補正制御技術を用いれば、１．０ｍｓｅｃのパルス信号幅を発生することが可能となる。
【００８３】
以上のように、第１の形態例においては、水晶発振器４からの第２の基本クロック５の１クロック分の周期を基準として、その１周期におけるＲＣ発振器２からの第１の基本クロック３のクロック数を測定した結果に基づいた比率を基に、ＲＣ発振器２からの第１の基本クロック３を入力したタイマ８による時間測定に用いる期待計数値を補正している。
【００８４】
そのため、正確な補正係数を求める場合は、高周波数のＲＣ発振器２と低周波数の水晶発振器４を使用することが条件となる。
【００８５】
タイマ８の分解能を高めるには、高周波数のＲＣ発振器２を使用する必要があるが、本例では、高い発振周波数のＲＣ発振器２を使用してタイマ８でのクロック数の計数を行う場合にも、低周波数で低価な高精度の水晶発振器４を使用してタイマ８を用いた時間測定の補正を行うことができる。
【００８６】
タイマ８の分解能を高めるために、従来の特許文献１に記載の技術のように、水晶発振器４からの第２の基本クロックを分周することも有効ではあるが、本例では、高周波数のＲＣ発振器２を使用しており、水晶発振器４からの第２の基本クロックを分周することなくタイマ８の分解能を高めることができ、分周を行う従来技術に比べて補正係数を算出する処理時間が短くなる。
【００８７】
以上、図２〜図６を用いて説明したように、本第１の形態例では、ＲＯＭ１４に格納された本発明に係る時間測定用のプログラムを読み込んでＣＰＵ１３が実行することにより、本発明に係る時間測定装置における、導出手段、補正手段、及び出力手段を含む、各手段を構成し、これらの各手段を用いることにより、発振周波数が高いＲＣ発振器２のクロック数をシステムクロックとして高速な処理動作を行うコンピュータ装置におけるタイマによる時間測定動作の高精度化を低コストに実現することが可能となる。
【００８８】
すなわち、図２に示すように、本例のマイクロコントローラ１においては、タイマ８（計数手段）により、高速処理時のシステムクロックとして用いられるＲＣ発振器２からの基本クロック３（第１の基本クロック信号）のクロック数を計数し、ＣＰＵ１３の導出手段としての機能により、水晶発振器４からの、第１の基本クロック信号よりも発振周波数が低く発振精度の高い基本クロック５（第２の基本クロック信号）が入力された場合、タイマ８に、入力された第２の基本クロック信号の１周期における第１の基本クロック信号のクロック数を計数させ、タイマ８が計数したクロック数と予め第２の基本クロック信号の１周期に対して定められた第１の基本クロック信号のクロック数である基準クロック数とを用いて、タイマ８が計数した第２の基本クロック信号の１周期における第１の基本クロック信号のクロック数の基準クロック数に対する変動量を示す物理量を導出し、このように導出した物理量に応じて、補正手段としての機能により、第１の基本クロック信号のクロック数に対して予め定められた期待計数値を補正し、そして、出力手段としての機能により、タイマ８が計数した第１の基本クロック信号のクロック数を読み込み、読み込んだクロック数が、補正手段の機能で補正した期待計数値に達すると、当該期待計数値に相当する時間が経過したことを示す時間情報を出力する。
【００８９】
なお、本第１の形態例のマイクロコントローラ１においては、第２の基本クロック信号の周期ごとに同期信号を生成する割込み要求レジスタ９（生成手段）を備え、ＣＰＵ１３は、導出手段としての機能により、ポーリングを行い、割込み要求レジスタが同期信号を生成しているか否かを判別し、同期信号を生成していれば、次の同期信号が生成されるまでの間、タイマ８に、水晶発振器４からの基本クロック５（第２の基本クロック信号）の１周期におけるＲＣ発振器２からの基本クロック３（第１の基本クロック信号）のクロック数の計数を実行させて、当該計数値を順次に読み取ることで、水晶発振器４からの基本クロック５（第２の基本クロック信号）の１周期におけるＲＣ発振器２からの基本クロック３（第１の基本クロック信号）のクロック数を読み取り、読み取ったクロック数と基準クロック数との比率を物理量として導出し、補正手段としての機能により、導出手段の機能で導出した比率に応じて、期待計数値を補正し、出力手段としての機能により、ポーリングを行い、タイマ８が計数するＲＣ発振器２からの基本クロック３（第１の基本クロック信号）のクロック数が、補正手段の機能により補正された期待計数値に達したか否かを判別し、達すれば時間情報を出力する。
【００９０】
また、基本クロック選択器６により、ＲＣ発振器２からの基本クロック３（第１の基本クロック信号）と水晶発振器４からの基本クロック５（第２の基本クロック信号）のいずれかをシステムクロック７として選択して、タイマ８は、基本クロック選択器６が選択したシステムクロック７のクロック数を計数する。
【００９１】
次に、図７〜図１０を用いて第２の形態例の説明を行う。上述の第１の形態例においては、本発明に係る補正動作を開始する際に制御信号として入力する水晶発振器４からの基本クロック５を、ポーリングにより行っているが、第２の形態例においては、割込み処理により、水晶発振器４からの基本クロック５を入力する。
【００９２】
図７に示すように、本第２の形態例におけるマイクロコントローラ１ａは、図２に示す第１の形態例におけるマイクロコントローラ１における割込み要求レジスタ９の代わりに、割込みコントローラ２０を設けた構成となっており、その他の構成は同じであり、各構成要素に関しての説明はここでは省略する。
【００９３】
割込みコントローラ２０は、水晶発振器４の周期ごとに割込みを発生すると共に、タイマ８の計数値が、例えば割込みコントローラ２０内に設けられた図示していないタイマデータレジスタに設定した期待計数値に達した場合に割込みを発生する。
【００９４】
このような構成からなる本第２の形態例におけるマイクロコントローラ１ａにおいても、ＲＣ発振器２からの高い周波数の発振クロック信号である基本クロック３に基づき、高速な処理動作を行うことで、高速な処理を低コストに行うことができる。
【００９５】
そして、ＲＣ発振器２の基本クロック３に基づく高速処理時のタイマ８における時間測定動作の不具合を回避するために、本例のマイクロコントローラ１ａにおいても、ＲＯＭ１４ａに格納された本発明に係る時間測定を実行するためのプログラムをＣＰＵ１３が読み出して実行することにより、高速処理時におけるタイマ８を用いた時間測定動作に生じる誤差を補正する。
【００９６】
ここでは、ＣＰＵ１３は、基本クロック５の１周期においてタイマ８が計数する基本クロック３のクロック数を取得し、取得したクロック数と、予め基本クロック５の１周期に対して所望の計数値として定められた基本クロック３のクロック数との比率を変動量として導出し、導出した比率に応じて、期待計数値を補正する。
【００９７】
これにより、本例のマイクロコントローラ１ａにおいても、ＲＣ発振器２からの高い周波数の発振クロック信号に基づく高速な処理動作を行う際の、タイマ８を用いた時間測定を高精度に行うことができ、高速な処理を低コストに、かつ高精度に行うことができる。
【００９８】
さらに、本第２の形態例におけるマイクロコントローラ１ａは、例えば、ＣＰＵ１３の動作を停止して周辺回路のみ動作している状態にすることでマイクロコントローラ１ａの消費電力を低減させる省電力モードを有している。
【００９９】
第１の形態例のマイクロコントローラ１では、図３で示した補正係数を算出する際に行っている水晶発振器４のクロックの先頭と終端の検索を、ＣＰＵ１３が割込み要求レジスタ９をポーリングすることによって実現しているため、ＣＰＵ１３が常に動作している状態にあり、省電力モードに切り替えることができない。
【０１００】
同様に、図５に示すフローチャートにおけるステップＳ１５でのポート出力処理においても、第１の形態例のマイクロコントローラ１では、ＣＰＵ１３がタイマ８の計数値をポーリングして、補正後のタイマの期待計数値より大きくなった場合にポート出力を行っており、省電力モードに切り替えることができない。
【０１０１】
これに対して、第２の形態例のマイクロコントローラ１ａでは、割込みコントローラ２０を設けることにより、水晶発振器４のクロックの立ち上がりで割込みを発生するようにしている。
【０１０２】
このように、補正係数算出の際に行っている水晶発振器４のクロックの先頭と終端の検索を、割込みコントローラ２０の割込みによって検出するようにすることで、ＣＰＵ１３の動作は不要になるため、水晶発振器４のクロックの先頭と終端の検索中は、マイクロコントローラ１ａを省電力モードへ切り替えることができる。
【０１０３】
また、図５に示すフローチャートにおけるステップＳ１５でのポート出力処理においても、補正後のタイマの期待計数値になった場合に、割込みコントローラ２０が割込みを発生するようにすることで、タイマ８が計数している間は、マイクロコントローラ１ａを省電力モードへ切り替えることができる。
【０１０４】
以下、図８〜図１０を用いて、このような第２の形態例のマイクロコントローラ１ａにおける本発明に係る時間測定処理動作の説明を行う。
【０１０５】
図８を用いて、図７のタイマ８をＲＣ発振器２が生成する高周波数の基本クロック３で動作させる時に、タイマ８を用いた時間測定精度を向上させるために用いるタイマ補正係数の求め方を説明する。
【０１０６】
基本クロック選択器６により、タイマ８に入力するシステムクロックにＲＣ発振器２からの高周波数の基本クロック３を選択し（ステップＳ１’）、割込みコントローラ２０から、水晶発振器４のクロックの１周期分の先頭（クロックの立ち上がり）の割り込みが発生するまで待機する（ステップＳ２’）。
【０１０７】
割込みコントローラ２０からの水晶発振の割込みが発生すると、ＣＰＵ１３は、当該割り込みが１回目の割り込みであるか否かを示すフラグ情報（ｆｌｇ：初期値＝０）を参照して、当該割り込みが１回目の割り込み（ｆｌｇ＝０）であるか否かを判別する（ステップＳ２０）。
【０１０８】
１回目の割り込み（ｆｌｇ＝０）であれば、タイマ８の値をクリア（初期化）して（ステップＳ２１）、１回目の割込み（１周期分の先頭）が発生したことを通知するフラグｆｌｇを立てる（ｆｌｇ＝１）（ステップＳ２２）。
【０１０９】
その後、割込みコントローラ２０からの、水晶発振器４のクロックの１周期分の終わり（次の１周期分の頭）の割り込みが発生するまで待機する（ステップＳ３’）。
【０１１０】
次の１周期分の割込みが発生すると（ステップＳ２０）、当該水晶発振器４の１周期の時間内にタイマ８が計数した第１の基本クロック３のクロック数を読み取り（ステップＳ２３）、フラグｆｌｇをクリア（初期化）し（ｆｌｇ＝０）（ステップＳ２４）、読みとったタイマ８の値からタイマ補正係数を求める（ステップＳ４’）。
【０１１１】
このように、ステップＳ４’の処理で求めたタイマ補正係数を用いて、ＲＣ発振器２からの高い発振周波数の基本クロック３を用いたタイマ８の時間測定動作の精度を高める技術を、図９を用いて説明する。
【０１１２】
まず、基本クロック選択器６を制御して、ＲＣ発振器２からの基本クロック３がタイマ８に入力するよう設定する（ステップＳ５’）。
【０１１３】
なお、予め、タイマ８により測定する所望の時間を、所望のＲＣ発振器２の周期、すなわち水晶発振器４からの第２の基本クロック５の１周期における正常時のＲＣ発振器２からの第２の基本クロックのクロック数として予め求められた基準クロック数で割った値を、所望のタイマ８の期待値（期待計数値）として求め（ステップＳ６’）、このステップＳ６’の処理により求められる所望のタイマの期待計数値に、図８のステップＳ４’の処理で求められたタイマ補正係数を乗じた値を、補正後のタイマの期待計数値（補正期待計数値）として求めて（ステップＳ７’）、例えば割込みコントローラ２０内に設けられたタイマデータレジスタにセットする（ステップＳ８’）。
【０１１４】
そして、タイマ８を一旦クリア（初期化）した後（ステップＳ９’）、タイマ８の計数動作をスタート（開始）させる（ステップＳ１０’）。
【０１１５】
そして、タイマ８の計数結果に基づく割込みコントローラ２０からの割込みが入るまで待機する。この待機中、ＣＰＵ１３は停止もしくは他の処理を行うことができる。
【０１１６】
タイマ８の計数値が、補正後のタイマの期待計数値（補正期待計数値）に達すると、割込みコントローラ２０からの割込み信号（タイマ割込み）が入力されるので、ＣＰＵ１３は、当該補正期待計数値に相当する時間が経過したことを示す時間情報をポート１２経由で出力する（ステップＳ３０）。
【０１１７】
このように、第２の形態例のマイクロコントローラ１ａでは、割込みコントローラ２０によって、補正係数算出の際に行っている水晶発振器４のクロックの先頭と終端（次の先頭）の検索と、タイマ補正係数を用いたポート出力を行う処理を、割込みによって実現している。
【０１１８】
このため、割り込みのイベントが発生するまでＣＰＵ１３の動作を停止することができ、図１０に示すように、省電力モードの区間ができる。よって、マイクロコントローラ１ａの消費電力を低減することができる。また、省電力動作モードの区間中に、ＣＰＵ１３が他の処理をすることもできる。
【０１１９】
図１０においては、第２の形態例における各信号の動作タイミングを示しており、各信号として、ポート出力、水晶発振器割込み、タイマ割込み、水晶発振器による基本クロック（第２の基本クロック）、及びＲＣ発振器による基本クロック（第１の基本クロック）が示されている。
【０１２０】
図１０における符号Ｓ２’，Ｓ３’，Ｓ１０’，Ｓ１１’のそれぞれは図８及び図９におけるステップＳ２’，Ｓ３’，Ｓ１０’，Ｓ１１’の処理タイミングに相当している。
【０１２１】
Ｓ２’のタイミングで水晶発振器による基本クロック（第２の基本クロック）が立ち上がると、水晶発振器割込み信号が立ち上がり、タイマ８によるＲＣ発振器による基本クロック（第１の基本クロック）の計数が開始され、Ｓ３’のタイミングで次の水晶発振器による基本クロック（第２の基本クロック）が立ち上がり水晶発振器割込み信号が立ち上がるまで、タイマ８によるＲＣ発振器による基本クロック（第１の基本クロック）の計数が繰り返される。
【０１２２】
このタイマ８によりＲＣ発振器による基本クロック（第１の基本クロック）の計数が繰り返されている間は、ＣＰＵ１３は、省電力モードとなる。
【０１２３】
Ｓ３’のタイミングで次の水晶発振器による基本クロック（第２の基本クロック）が立ち上がり水晶発振器割込み信号が立ち上がると、ＣＰＵ１３は、図８で示した補正係数の算出処理と期待計数値の補正処理を行う。
【０１２４】
補正係数の算出処理と期待計数値の補正処理が完了した後のＳ１０’のタイミングで、補正した期待計数値に対するタイマ８の、ＲＣ発振器による基本クロック（第１の基本クロック）の計数動作が開始される（タイマスタート）。
【０１２５】
このタイマ８によるＲＣ発振器による基本クロック（第１の基本クロック）の計数時には、ＣＰＵ１３は、省電力モードとなる。
【０１２６】
Ｓ１１’のタイミングで、タイマ８によるＲＣ発振器による基本クロック（第１の基本クロック）の計数値が、補正した期待計数値に達すると、タイマ割込み信号が発生し、それに伴い、ＣＰＵ１３は、図９のステップＳ３０でのポート出力処理を実行する。
【０１２７】
以上説明したように、本第２の形態例のマイクロコントローラ１ａにおいては、図７に示すように、割込みコントローラ２０を備え、水晶発振器４からの基本クロック５（第２の基本クロック信号）の周期ごとに第１の割込み信号を出力すると共に、タイマ８が計数したＲＣ発振器２からの基本クロック３（第１の基本クロック信号）のクロック数が、ＣＰＵ１３が補正手段機能により補正した期待計数値になると第２の割込み信号を出力し、ＣＰＵ１３は、導出手段としての機能により、割込みコントローラ２０から第１の割込み信号が出力されると、タイマ８に、第１の基本クロック信号のクロック数の計数を開始させて、次の割込み信号が出力されるまで待機し、次の割込み信号が出力されると、それまでにタイマ８が計数した第１の基本クロック信号のクロック数を、第２の基本クロック信号の１周期における第１の基本クロックのクロック数として取得し、取得したクロック数と、予め第２の基本クロック信号の１周期に対して定められた第１の基本クロック信号のクロック数との比率を物理量として導出し、補正手段としての機能により、導出手段の機能で導出した比率に応じて、期待計数値を補正し、補正手段の機能で期待計数値を補正した後、出力手段としての機能により、タイマ８に第１の基本クロック信号のクロック数の計数を開始させて、割込みコントローラ２０からタイマ８の計数値が補正された期待計数値に達したことを示す第２の割込み信号が出力されるまで待機し、割込みコントローラ２０から第２の割込み信号が出力されると、時間情報を出力する動作を行う。
【０１２８】
また、本第２の形態例のマイクロコントローラ１ａにおいては、図７〜図９に示すように、ＣＰＵ１３は、導出手段としての機能により、割込みコントローラ２０から第１の割込み信号が出力されると、１回目の割込みか否かを判別し、１回目の割込みであれば、タイマ８の計数値を初期化して、１回目の割込みが発生したことを示すフラグ情報を設定し、１回目の割込みでなければ、それまでにタイマ８が計数したＲＣ発振器２からの基本クロック３（第１の基本クロック信号）のクロック数を、水晶発振器４からの基本クロック５（第２の基本クロック信号）の１周期における基本クロック３のクロック数として取得して、フラグ情報の設定を初期化する動作を行う。
【０１２９】
また、本第２の形態例のマイクロコントローラ１ａにおいては、図７に示すように、ＣＰＵ１３は、導出手段としての機能により、取得したタイマ８が計数したタイマ８による水晶発振器４からの基本クロック５（第２の基本クロック信号）の１周期におけるＲＣ発振器２からの基本クロック３（第１の基本クロック信号）のクロック数を、予め基本クロック３の１周期に対して定められた基本クロック３のクロック数で除算した値を比率として導出し、補正手段としての機能により、導出手段機能で導出した比率を期待計数値に乗算して補正を行うように動作する。
【０１３０】
このように、本第２の形態例のマイクロコントローラ１ａにおいては、割込みコントローラ２０によって、補正係数算出の際に行っている水晶発振器４からの第２の基本クロック５の先頭と終端の検索と、タイマ補正係数を用いてポート出力する処理動作を、割込みによって実現しているため、割り込みのイベントが発生するまでＣＰＵ１３の動作を停止することができ、図１０に示したように、省電力モードの区間ができる。この結果、マイクロコントローラ１ａの消費電力を低減することができる。また、省電力動作モードの区間中に他の処理をすることもできる。
【０１３１】
次に、図１１、図１２を用いて第３の形態例の説明を行う。なお、本第３の形態例におけるマイクロコントローラの構成は、図７で示した第２の形態例におけるマイクロコントローラ１ａと同じ構成であるのでここでの詳細な説明は省略する。
【０１３２】
上述の第１，第２の形態例では、補正係数を求める際に、タイマ８において、水晶発振器４からの低周波数の基本クロック５の１周期におけるＲＣ発振器２からの高周波数の基本クロック３のクロック数を計数しているが、ＲＣ発振器２と水晶発振器４の速度差（発振周波数の差）が大きい場合、タイマ８の計数値がオーバーフローしてしまう。その場合、水晶発振器４の１周期をＲＣ発振器２のクロック数で計数することができない。
【０１３３】
第３の形態例では、このようにタイマ８の計数値がオーバーフローした場合にも対応できるように、タイマ８による水晶発振器４の基本クロック５の１周期におけるＲＣ発振器２の基本クロック３のクロック数の計数時にオーバーフローが発生すると、割込みコントローラ２０が、当該オーバーフローの発生を、バス１１を介して検出し、割込み信号を出力する。
【０１３４】
この割込み信号により、ＣＰＵ１３は、オーバーフローの回数を計数し、この計数値と当該オーバーフローとなるクロック数とを乗算した値と、オーバーフローすることなくタイマ８が計数したＲＣ発振器２の基本クロック３のクロック数と、を加算し、加算した値を、タイマ８による水晶発振器４の基本クロック５の１周期におけるＲＣ発振器２の基本クロック３のクロック数の計数値として取得し、補正係数の算出を、図１１、図１２に示すようにして行う。
【０１３５】
以下、図７で示した構成のマイクロコントローラ１ａを用いた第３の形態例における動作を説明する。
【０１３６】
ここでは、図７のタイマ８を、ＲＣ発振器２が生成する発振周波数が高い基本クロック３で動作させる時に、タイマ８を用いた時間測定動作の精度向上に用いる、ＣＰＵ１３によるタイマ補正係数の求め方を説明する。
【０１３７】
図１１において、基本クロック選択器６を制御して、タイマ８に入力するシステムクロック７としてＲＣ発振器２からの第１の基本クロック３を設定し（ステップＳ１”）、割込みコントローラ２０から水晶発振器４のクロックの１周期分の先頭（クロックの立ち上がり）の割り込みが発生するまで待機する（ステップＳ２”）。
【０１３８】
割込みコントローラ２０からの水晶発振の割込みが発生すると、ＣＰＵ１３は、当該割り込みが１回目の割り込みであるか否かを示すフラグ情報（ｆｌｇ：初期値＝０）を参照して、当該割り込みが１回目の割り込み（ｆｌｇ＝０）であるか否かを判別する（ステップＳ４０）。
【０１３９】
１回目の割り込み（ｆｌｇ＝０）であれば、例えばＲＯＭ１４ａ等の記憶装置に記憶される、ＣＰＵ１３自身が計数するタイマ８のオーバーフロー回数を示す計数値ｃｎｔをクリア（初期化）する（ｃｎｔ＝０）（ステップＳ４１）と共に、タイマ８の値をクリア（初期化）して（ステップＳ４２）、１回目の割込み（１周期分の先頭）が発生したことを通知するフラグｆｌｇを立てる（ｆｌｇ＝１）（ステップＳ４３）。
【０１４０】
その後、割込みコントローラ２０からの、水晶発振器４のクロックの１周期分の終わり（次の１周期分の頭）の割り込みが発生するまで待機する（ステップＳ３”）。なお、この待機中にタイマ８のオーバーフローが発生した場合、その回数を計数する。
【０１４１】
次の１周期分の割込みが発生すると（ステップＳ３”）、フラグ情報ｆｌｇは「１」であり、ステップＳ４０からステップＳ４４の処理に移り、まず、水晶発振器４からの第２の基本クロックの１周期の時間内にタイマ８が計数したＲＣ発振器２からの第１の基本クロック３のクロック数を読み取り（ステップＳ４４）、この読み取ったクロック数に、ステップＳ３”での待機中に計数したタイマ８のオーバーフロー回数を加算して、水晶発振器４からの第２の基本クロック５の１周期の間にタイマ８が計数したＲＣ発振器２からの第１の基本クロック３のカウント値（計数値）として求め（ステップＳ４５）、フラグ情報ｆｌｇをクリア（初期化）し（ｆｌｇ＝０）（ステップＳ４６）、図８に示した処理を行うことで、読みとったタイマ８の値からタイマ補正係数を求める（ステップＳ４”）。
【０１４２】
このように、ステップＳ４”の処理で求めたタイマ補正係数を用いて、ＣＰＵ１３は、図９で示す補正処理を行い、ＲＣ発振器２からの高い発振周波数の基本クロック３を用いたタイマ８の時間測定動作の精度を高める。
【０１４３】
図１２においては、図１１のステップＳ３”での待機中における、ＣＰＵ１３による処理内容を示しており、割込みコントローラ２０からの、水晶発振器４のクロックの１周期分の終わり（次の１周期分の頭）の割り込みが発生するまでの待機中にタイマ８のオーバーフローが発生する度に（ステップＳ５０）、ＲＯＭ１４ａ等の記憶装置に記憶しているオーバーフロー回数ｃｎｔをインクリメント（ｃｎｔ＋＋）する（ステップＳ６０）。
【０１４４】
このように、第３の形態例では、図１１に示す処理で補正係数を算出することにより、ＲＣ発振器２と水晶発振器４の速度差（発振周波数の差）が大きく、ＲＣ発振器２からの高い周波数の基本クロック３の計数時にタイマ８がオーバーフローしてしまう場合でも、タイマ８による、水晶発振器４の１周期あたりのＲＣ発振器２のクロック数の計数を行うことができる。
【０１４５】
以上説明したように、第３の形態例としてのマイクロコントローラ１ｂにおいては、ＣＰＵ１３は、オーバーフロー計数手段（第２の計数手段）としての機能により、タイマ８による水晶発振器４からの第２の基本クロック５の１周期におけるＲＣ発振器２からの第１の基本クロック３のクロック数の計数時に発生したオーバーフローの回数を計数し、導出手段としての機能により、オーバーフロー計数手段機能で計数されたオーバーフローの回数と当該オーバーフローとなるクロック数とを乗算した値と、オーバーフローすることなくタイマ８が計数したＲＣ発振器２からの第１の基本クロック３のクロック数と、を加算し、加算した値を、タイマ８による水晶発振器４からの第２の基本クロック５の１周期におけるＲＣ発振器２からの第１の基本クロック３のクロック数の計数値として取得する。
【０１４６】
また、第３の形態例としてのマイクロコントローラ１ｂにおいては、割込みコントローラ２０における第３の割込み手段としての機能により、タイマ８によるオーバーフローの発生が検出され、第３の割込み信号が出力される度に、ＣＰＵ１３は、オーバーフロー計数手段としての機能により、オーバーフローの回数を計数すると共に、当該割込みが１回目の割込みか否かを判別し、１回目の割込みであれば、オーバーフロー計数手段機能としての計数値を初期化し、タイマ８の計数値を初期化して、１回目の割込みが発生したことを示すフラグ情報を設定し、１回目の割込みでなければ、それまでにタイマ８が計数した第１の基本クロック信号のクロック数とオーバーフロー計数手段機能で計数されたオーバーフローの発生回数を読み取り、乗算と加算を行い、フラグ情報の設定を初期化する。
【０１４７】
このように、第３の形態例では、補正係数を算出する処理を図１１に示す処理内容のように変更することにより、ＲＣ発振器２と水晶発振器４の速度差が大きくタイマ８がオーバーフローしてしまう場合でも、オーバーフローの回数をカウントすることにより、水晶発振器４からの第２の基本クロック５の１周期あたりのＲＣ発振器２からの第１の基本クロック３のクロック数をカウントすることができる。
【０１４８】
次に、図１３を用いて、第４の形態例の説明を行う。図１３におけるマイクロコントローラ１ｂは、図７に示したマイクロコントローラ１ａに、さらにタイマ２１と分周器２２を設けた構成となっている。
【０１４９】
第１〜３の形態例では、タイマを一つ使用していたが、図１３におけるマイクロコントローラ１ｂでは、タイマ２１をさらに１つ追加することで、補正係数の算出とタイマ補正を、別々のタイマ８，２１を用いて行うことができる。
【０１５０】
例えば、タイマ８を、水晶発振器４からの基本クロック５の１周期におけるＲＣ発振器２からの基本クロック３のクロック数の計数に用い、タイマ２１を、期待計数値と比較されるＲＣ水晶発振器２の基本クロック３のクロック数の計数に用いる。これにより、常に一定間隔でポートを出力しなければならないシステムにおいても、タイマの補正をしながら、ポートの出力をすることが可能となる。
【０１５１】
また、図１３におけるマイクロコントローラ１ｂは、分周器２２を備えており、この分周器２２により、水晶発振器４からの基本クロック５を分周することで、ＲＣ発振器２と水晶発振器４の速度差（発振周波数の差）がない場合にも、水晶発振器４の１周期分の時間を拡大してＲＣ発振器２の基本クロック３の発振周波数を計数することができ、時間測定精度を高めることができる。
【０１５２】
このように、本第４の形態例としてのマイクロコントローラ１ｂにおいては、タイマとして、第２の基本クロック５の１周期における第１の基本クロック３のクロック数の計数に用いられタイマ８（第３の計数手段）と、期待計数値と比較される第１の基本クロック３のクロック数の計数に用いられるタイマ２１（第４の計数手段）と、を備えている。
【０１５３】
このように、タイマを１つ追加し、補正係数算出とタイマ補正を、別々のタイマを使用できるようにすることで、常に一定間隔でポートを出力しなければならないシステムにおいても、タイマの補正をしながら、ポートの出力をすることができる。
【０１５４】
また、本第４の形態例としてのマイクロコントローラ１ｂにおいては、水晶発振器４からの第２の基本クロック５を分周する分周器２２を備え、タイマ８は、分周器２２が分周した第２の基本クロック５の１周期におけるＲＣ発振器２からの第２の基本クロック３のクロック数を計数する。
【０１５５】
このように、水晶発振器４に分周器２２を追加することで、ＲＣ発振器２と水晶発振器４の速度差がない場合には、水晶発振器４の１周期分の時間を拡大して計測することができ、時間測定精度を高めることができる。
【０１５６】
次に、図１４を用いて、第５の形態例の説明を行う。図１４におけるマイクロコントローラ１ｃは、図７に示したマイクロコントローラ１ａにおけるＲＣ発振器の代わりに、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）発振回路が設けられた構成となっている。
【０１５７】
第１〜３の形態例では、ＲＣ発振器２が生成するクロックで動作するタイマ８の時間測定精度を向上させる技術だが、図１４に示すマイクロコントローラ１ｃのように、ＲＣ発振器２の代わりにＰＬＬ発振回路２ａが生成するクロックを用いる場合でも、高速な動作用にＲＣ発振器２を用いた場合と同様にして、タイマ８の時間測定動作を補正することができる。
【０１５８】
以上、図１〜図１４を用いて説明したように、本例では、ＲＯＭ１４に格納された本発明に係る時間測定用のプログラムを読み込んでＣＰＵ１３が実行することにより、本発明に係る時間測定装置１０１における、導出手段１０１ｂ、補正手段１０１ｃ、及び出力手段１０１ｄを含む、各手段を構成し、これらの各手段を用いることにより、発振周波数が高いＲＣ発振器２のクロック数をシステムクロックとして高速な処理動作を行うコンピュータ装置におけるタイマによる時間測定動作の高精度化を低コストに実現することが可能となり、本例のマイクロコントローラ１〜１ｃ，１００では、本発明に係る時間測定装置１０１の機能を設けたことにより、従来技術の問題点を解決することができる。
【０１５９】
例えば、本例のマイクロコントローラ１〜１ｃ，１００は、高周波数のＲＣ発振器２のクロック周期を測定するのに高周波数で高価な水晶振動子を用いる必要がなく、ＲＣ発振回路２による低コスト化のメリットが失われてしまうことはない。
【０１６０】
また、本例のマイクロコントローラ１〜１ｃ，１００においては、ＲＣ発振器２は、水晶発振器４よりも高周波数のクロックを発生することができるものであり、特許文献１のように高周波数の水晶発振器を使用する必要がなくなり、コスト高を回避することができる。
【０１６１】
さらに、特許文献１の技術のように、ＲＣ発振器が水晶発振器よりも低周波数である必要はなく、ＲＣ発振器に対する正確な補正係数を求める場合にも、高周波数のＲＣ発振器を用いることで良く、ＲＣ発振器に対する分周器を新たに設けて分周する必要はない。
【０１６２】
これにより、特許文献１のように分周器を使用した場合にＲＣ発振器の１周期が長くなるため、補正係数を求める際に行う、ＲＣ発振器１クロックの間に発生する水晶発振器のクロックを計数する処理の時間が増加してしまうとの問題も解消される。
【０１６３】
また、本例のマイクロコントローラ１ｂ，１ｃにおいては、基準となる発振器（水晶発振器４）のクロック（第２の基本クロック）の先頭と終端の検索と、タイマ補正係数を用いてポート出力する技術を、ポーリングすることなく、割り込み要求処理で実現することができる。これにより、ＣＰＵ１３が常に動作している必要はなく、ＣＰＵ１３を省電力モードに切り替えることも、また、割込み待機中に、ＣＰＵ１３に他の処理を実行させることもできる。
【０１６４】
また、本例のマイクロコントローラ１ｂでは、補正係数を求める際に発生するタイマ８におけるオーバーフローの回数をカウントし、当該カウント値を補正係数の導出に用いており、ＲＣ発振器２と水晶発振器４の速度差が大きい場合にタイマ８の計数値がオーバーフローしても対応可能である。
【０１６５】
尚、本発明は、図１〜図１４を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、ＲＯＭ１４，１４ａ，１４ｂに格納された本発明に係る時間測定用のプログラムを読み込んでＣＰＵ１３が実行することにより、本発明に係る時間測定装置における、導出手段１０１ｂ、補正手段１０１ｃ、及び出力手段１０１ｄを含む、各手段を構成しているが、このように、各構成要素の機能の一部もしくは全てを、プログラムされたコンピュータ処理により実現することでも良く、あるいは論理素子回路からなるハードウェア構成で実現することでも良い。
【０１６６】
また、本発明における補正係数の求め方に関しても、本例では、図３で説明したように、ステップＳ７の処理で実際に読み取った実クロック数Ａと、予め水晶発振器４からの第２の基本クロック５の１周期における基準となるＲＣ発振器２からの第１の基本クロック３のクロック数である基準クロック数Ｂとを用いて、補正係数Ｃを、「補正係数Ｃ＝実クロック数Ａ／基準クロック数Ｂ」の式で求めているが、例えば、「補正係数Ｃ＝基準クロック数Ｂ／実クロック数Ａ」の式で求めることでも良い。この場合、図５におけるステップＳ１１で求める補正後のタイマの期待値の式、すなわち、「補正後のタイマの期待値＝所望のタイマの期待値×タイマ補正係数」との式を、「補正後のタイマの期待値＝所望のタイマの期待値／タイマ補正係数」とすれば良い。
【０１６７】
また、本例では、マイクロコントローラ１において、タイマ８に、入力された第２の基本クロック信号の１周期における第１の基本クロック信号のクロック数を計数させているが、第２の基本クロック信号の１周期に限らず、予め定められた周期（所定周期）における第１の基本クロック信号のクロック数を計数させることでも良い。
【符号の説明】
【０１６８】
１，１ａ，１ｂ，１ｃ，１００  マイクロコントローラ
２  ＲＣ発振器
２ａ  ＰＬＬ発振回路
３  基本クロック（第１の基本クロック）
４  水晶発振器
５  基本クロック（第２の基本クロック）
６  基本クロック選択器
７  システムクロック
８  タイマ（計数手段）
９  割込み要求レジスタ（同期信号生成手段）
１０  割込み要求信号
１１  バス
１２  ポート
１３  ＣＰＵ
１４，１４ａ，１４ｂ  ＲＯＭ
１５  クロック波形
１６  時間
１７  クロック波形
１８  時間
１９  補正時間
２０  割込みコントローラ
２１  タイマ
２２  分周器
１００  マイクロコントローラ
１０１  時間測定装置
１０１ａ  計数手段
１０１ｂ  導出手段
１０１ｃ  補正手段
１０１ｄ  出力手段
１０１ｅ  期待計数値
【図１】
0005886015.tif 000002
【図２】
0005886015.tif 000003
【図３】
0005886015.tif 000004
【図４】
0005886015.tif 000005
【図５】
0005886015.tif 000006
【図６】
0005886015.tif 000007
【図７】
0005886015.tif 000008
【図８】
0005886015.tif 000009
【図９】
0005886015.tif 000010
【図１０】
0005886015.tif 000011
【図１１】
0005886015.tif 000012
【図１２】
0005886015.tif 000013
【図１３】
0005886015.tif 000014
【図１４】
0005886015.tif 000015
【図１５】
0005886015.tif 000016