(57)【要約】【課題】タイマとチッカとを分離し、タイマをチッカに動的に登録することで、必要最小限のタイマだけを扱うことを可能にし、ＣＰＵのメモリ使用量を大きく低減する。【解決手段】アプリケーションApplicationは、タイマTimerに対して目標時間を指定して時間計測の開始を指令する。タイマTimerは、目標カウント値を設定して自身をチッカTickerに登録する。チッカTickerは、タイマTimerを自身に登録する。タイマフレームワークTimerFrameworkは、チッカTickerに対してタイマTimerを進める指令を実行する。チッカTickerは、自チッカTickerに登録されているタイマTimerを進める。タイマTimerが、チッカTickerからのチック数を演算することにより目標カウント値に達したときに、チッカTickerから自身の登録を抹消して、アプリケーションApplicationに対して目標時間を計測したことを通知する。【選択図】  図１
2006178822.tif 000002
【特許請求の範囲】
【請求項１】
自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
アプリケーションから時間計測の開始の指令を受けたときに目標時間をセットし、目標時間に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、
タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、
基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
を備えることを特徴とするマイクロコンピュータ。
【請求項２】
自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
アプリケーションから時間計測の開始の指令を受けたときに自身をチッカに登録することを指令し、目標時間に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、
タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、
基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
を備えることを特徴とするマイクロコンピュータ。
【請求項３】
前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項１または請求項２記載のマイクロコンピュータ。
【請求項４】
自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、
タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、
基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
を備えることを特徴とするマイクロコンピュータ。
【請求項５】
自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定して自身を該チッカに登録することを指令し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、
タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、
基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
を備えることを特徴とするマイクロコンピュータ。
【請求項６】
前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項４または請求項５記載のマイクロコンピュータ。
【請求項７】
ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、
自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
アプリケーションから時間計測の開始の指令を受けたときに目標時間をセットし、目標時間に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、
タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、
基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
を備えることを特徴とするマイクロコンピュータ。
【請求項８】
ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、
自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
アプリケーションから時間計測の開始の指令を受けたときに自身をチッカに登録することを指令し、目標時間に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、
タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、
基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
を備えることを特徴とするマイクロコンピュータ。
【請求項９】
前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項７または請求項８記載のマイクロコンピュータ。
【請求項１０】
ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、
自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、
タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、
基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
を備えることを特徴とするマイクロコンピュータ。
【請求項１１】
ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、
自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、
アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定して自身を該チッカに登録することを指令し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、
タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、
基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークと
を備えることを特徴とするマイクロコンピュータ。
【請求項１２】
前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項１０または請求項１１記載のマイクロコンピュータ。
【請求項１３】
前記チッカが、現在時刻と前回更新時刻との差である経過時間をチック間隔で割った商であるチック数を時間計測中のタイマの目標カウント値までの残りのカウント値を演算させることにより、低消費電力モードでもウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めることを特徴とする請求項７ないし請求項１２のいずれかに記載のマイクロコンピュータ。
【請求項１４】
前記タイマフレームワークが、チック間隔が短いチッカに関連付けられたタイマのうち１つでも時間を計測しているときには動作停止命令を発行しないようにすることにより、ＣＰＵのスリープを禁止することを特徴とする請求項１ないし請求項１３のいずれかに記載のマイクロコンピュータ。
【請求項１５】
マイクロコンピュータの時間計測方法において、
アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
アプリケーションから時間計測の開始を指令されたときにタイマが目標時間をセットする工程と、
タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、
タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程と
を含むことを特徴とする時間計測方法。
【請求項１６】
マイクロコンピュータの時間計測方法において、
アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
アプリケーションから時間計測の開始を指令されたときにタイマが自身を登録することを該チッカに指令する工程と、
タイマから登録を指令されたときにチッカがタイマを登録する工程と、
タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、
タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程と
を含むことを特徴とする時間計測方法。
【請求項１７】
前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項１５または請求項１６記載の時間計測方法。
【請求項１８】
マイクロコンピュータの時間計測方法において、
アプリケーションが、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
アプリケーションから時間計測の開始の指令を受けたときに、タイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定する工程と、
タイマフレームワークが、チッカに対してタイマを進めることを指令する工程と、
タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、
タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、アプリケーションに対して目標時間を計測したことを通知する工程と
を含むことを特徴とする時間計測方法。
【請求項１９】
マイクロコンピュータの時間計測方法において、
アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
アプリケーションから時間計測の開始を指令されたときにタイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定するとともに自身を登録することを該チッカに指令する工程と、
タイマから登録を指令されたときにチッカがタイマを登録する工程と、
タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、
タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、チッカから自身の登録を抹消して、アプリケーションに対して目標時間を計測したことを通知する工程と
を含むことを特徴とする時間計測方法。
【請求項２０】
前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項１８または請求項１９記載の時間計測方法。
【請求項２１】
ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、
アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
アプリケーションから時間計測の開始を指令されたときにタイマが目標時間をセットする工程と、
タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、
タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程と
を含むことを特徴とする時間計測方法。
【請求項２２】
ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、
アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
アプリケーションから時間計測の開始を指令されたときにタイマが自身を登録することを該チッカに指令する工程と、
タイマから登録を指令されたときにチッカがタイマを登録する工程と、
タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、
タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程と
を含むことを特徴とする時間計測方法。
【請求項２３】
前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項２１または請求項２２記載の時間計測方法。
【請求項２４】
ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、
アプリケーションが、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
アプリケーションから時間計測の開始の指令を受けたときに、タイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定することを該チッカに指令する工程と、
タイマフレームワークが、チッカに対してタイマを進めることを指令する工程と、
タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、
タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、アプリケーションに対して目標時間を計測したことを通知する工程と
を含むことを特徴とする時間計測方法。
【請求項２５】
ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、
アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、
アプリケーションから時間計測の開始を指令されたときにタイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定するとともに自身を登録することを該チッカに指令する工程と、
タイマから登録を指令されたときにチッカがタイマを登録する工程と、
タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、
タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、
タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、チッカから自身の登録を抹消して、アプリケーションに対して目標時間を計測したことを通知する工程と
を含むことを特徴とする時間計測方法。
【請求項２６】
前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする請求項２４または請求項２５記載の時間計測方法。
【請求項２７】
前記チッカがタイマを進める工程においては、現在時刻と前回更新時刻との差である経過時間をチック間隔で割った商であるチック数を時間計測中のタイマの目標カウント値に対して演算させることにより、低消費電力モードでもウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めることを特徴とする請求項２１ないし請求項２６のいずれかに記載の時間計測方法。
【請求項２８】
前記タイマフレームワークがチッカに対してタイマを進めることを指令する工程においては、チック間隔が短いチッカに関連付けられたタイマのうち１つでも時間を計測しているときには動作停止命令を発行しないようにすることにより、ＣＰＵのスリープを禁止することを特徴とする請求項１５ないし請求項２７のいずれかに記載の時間計測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロコンピュータおよび時間計測方法に関し、詳しくは電子制御装置（ＥＣＵ；Electronic Control Unit）等の組み込みシステムで用いられるマイクロコンピュータおよびその時間計測方法に関する。
【背景技術】
【０００２】
従来、車両等のＥＣＵで用いられるマイクロコンピュータは、ＣＰＵ（Central Processing Unit）と、ＣＰＵを動作させるためのメインクロックを生成する発振回路と、低周波数のサブクロックを受けてＣＰＵおよび発振回路を間欠的に動作させるための制御を行う間欠動作制御部および発振制御部とを備え、サブクロックを受けて動作して、ＣＰＵが停止している実際の間欠時間を自動的に計測するタイマブロックが設けられていた。このようなマイクロコンピュータでは、時間を計測する際に、ＣＰＵが、間欠動作するとともに、スリープ状態からウェイクアップする毎に、今回ウェイクアップするまでの間欠時間をタイマブロックから読み取り、また、今回ウェイクアップしてからのＣＰＵの動作時間を自らソフトウェア処理で計測し、さらにそれまでの間欠時間および動作時間の累積加算値を求めるようにして、極長い目標時間でも非常に少ない消費電力で計測可能となるようにしていた（例えば、特許文献１参照）。このように低消費電力で長時間の時間計測を可能にするようにしていたのは、車両等の長期間にわたる不使用でも、バッテリが上がる等の不具合が生じることがないようにするためである。
【特許文献１】特開２００２−２０２８３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、従来から、車両等のＥＣＵで用いられるマイクロコンピュータでは、ＣＰＵで動作する制御プログラムにおいて、数十という時間計測処理が必要とされており、このため、各時間計測に使用する変数領域と処理ロジックを確保していて、メモリの使用量が増大するという課題があった。
【０００４】
また、何十というタイマにおいて計測される時間は、その長さがまちまちであり、計測する時間が長くなる程、クロック（単位時間）を数多くカウントしなければならなかったので、時間計測に使用する変数領域のメモリ量が増大するとともに、時間計測を扱う個所が多いためにＣＰＵの処理負荷が大きいという課題があった。
【０００５】
さらに、計測する時間の長さが違うと共通のロジックで時間計測を処理できなかったので、タイマのカウントをそれぞれ別のロジックで実行するためにＣＰＵのメモリ使用量が増大するという課題があった。
【０００６】
さらにまた、各アプリケーションで必要なタイマのカウントおよびチェックを行っており、その時点でカウントを行っていないタイマについてもチェックを行う必要があったので、このためにＣＰＵの処理負荷が増大するという課題があった。
【０００７】
加えて、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいては、時間計測中にＣＰＵをスリープさせないように開発者が注意して設計しなければならない、あるいはスリープ中に時間計測する場合にはスリープによって時間が延びることに注意して設計しなければならなかったので、開発者の負担が大きいという課題があった。
【０００８】
また、ＣＰＵが通常動作モードと低消費電力モードとをとるマイクロコンピュータにおいては、ＣＰＵが頻繁にスリープ／ウェイクアップを繰り返すことによって電力消費が増大するという課題があった。
【０００９】
そこで、本発明の第１の目的は、時間計測ロジック（タイマ：変数領域の管理）と、時間更新ロジック（チッカ）とを分離し、タイマをチッカに動的に登録することにより、必要最小限のタイマだけを扱うことを可能にし、ＣＰＵのメモリ使用量を大きく低減できるようにしたマイクロコンピュータを提供することにある。
【００１０】
また、本発明の第２の目的は、タイマが同じサイズの変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるようにしたマイクロコンピュータを提供することにある。
【００１１】
さらに、本発明の第３の目的は、ＣＰＵが通常動作モードと低消費電力モードとをとるマイクロコンピュータにおいて、低消費電力モードのスリープ状態でのスリープ時間分の遅れの処理を共通化できるようにしたマイクロコンピュータを提供することにある。
【００１２】
さらにまた、本発明の第４の目的は、ＣＰＵが通常動作モードと低消費電力モードとをとるマイクロコンピュータにおいて、チック間隔が短いチッカに１つでもタイマが登録されているときには、ＣＰＵのスリープを禁止することにより、ＣＰＵが頻繁にスリープ／ウェイクアップを繰り返すことによる電力消費を抑えるようにしたマイクロコンピュータを提供することにある。
【００１３】
一方、本発明の第５の目的は、時間計測工程（変数領域の管理工程）と、時間更新工程（チック工程）とを分離し、タイマをチッカに動的に登録することにより、必要最小限のタイマだけを扱うことを可能にし、ＣＰＵのメモリ使用量を大きく低減できるようにした時間計測方法を提供することにある。
【００１４】
また、本発明の第６の目的は、タイマが同じサイズの変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるようにした時間計測方法を提供することにある。
【００１５】
さらに、本発明の第７の目的は、ＣＰＵが通常動作モードと低消費電力モードとをとるマイクロコンピュータの時間計測方法においては、低消費電力モードのスリープ状態でのスリープ時間分の遅れの処理を共通化できるようにした時間計測方法を提供することにある。
【００１６】
さらにまた、本発明の第８の目的は、ＣＰＵが通常動作モードと低消費電力モードとをとるマイクロコンピュータの時間計測方法においては、チック間隔が短いチッカに１つでもタイマが登録されているときには、ＣＰＵのスリープを禁止することにより、ＣＰＵが頻繁にスリープ／ウェイクアップを繰り返すことによる電力消費を抑えるようにした時間計測方法を提供することにある。
【課題を解決するための手段および発明の効果】
【００１７】
請求項１記載のマイクロコンピュータは、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間をセットし、目標時間に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項１記載のマイクロコンピュータによれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができる。
【００１８】
請求項２記載のマイクロコンピュータは、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに自身をチッカに登録することを指令し、目標時間に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項２記載のマイクロコンピュータによれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。
【００１９】
請求項３記載のマイクロコンピュータは、請求項１または請求項２記載のマイクロコンピュータにおいて、前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項３記載のマイクロコンピュータによれば、タイマが同じサイズの目標時間の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００２０】
請求項４記載のマイクロコンピュータは、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項４記載のマイクロコンピュータによれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。特に、アプリケーションは、目標時間を指定するだけで、チッカの数やチック間隔を事前に知っている必要がないので、その開発がきわめて容易になる。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。
【００２１】
請求項５記載のマイクロコンピュータは、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定して自身を該チッカに登録することを指令し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項５記載のマイクロコンピュータによれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。特に、アプリケーションは、目標時間を指定するだけで、チッカの数やチック間隔を事前に知っている必要がないので、その開発がきわめて容易になる。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。
【００２２】
請求項６記載のマイクロコンピュータは、請求項４または請求項５記載のマイクロコンピュータにおいて、前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項６記載のマイクロコンピュータによれば、タイマが同じサイズの目標カウント値の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００２３】
請求項７記載のマイクロコンピュータは、ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間をセットし、目標時間に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項７記載のマイクロコンピュータによれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。さらに、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００２４】
請求項８記載のマイクロコンピュータは、ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに自身をチッカに登録することを指令し、目標時間に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマを進めるチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項８記載のマイクロコンピュータによれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。さらに、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００２５】
請求項９記載のマイクロコンピュータは、請求項７または請求項８記載のマイクロコンピュータにおいて、前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項９記載のマイクロコンピュータによれば、タイマが同じサイズの目標時間の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００２６】
請求項１０記載のマイクロコンピュータは、ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項１０記載のマイクロコンピュータによれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができる。
【００２７】
請求項１１記載のマイクロコンピュータは、ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、ＣＰＵが通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータにおいて、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令するアプリケーションと、アプリケーションから時間計測の開始の指令を受けたときに目標時間を対応するチッカのチック間隔で割った目標カウント値を設定して自身を該チッカに登録することを指令し、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときにチッカから自身の登録を抹消してアプリケーションに対して目標時間を計測したことを通知するタイマと、タイマからチッカへの登録の指令を受けたときに該タイマを自身に登録し、タイマフレームワークからのタイマを進める指令に基づいて時間計測中のタイマのチック数を求め、該チック数をカウントすることをタイマに指令するチッカと、基準クロック間隔でチッカに対してタイマを進めることを指令するタイマフレームワークとを備えることを特徴とする。請求項１１記載のマイクロコンピュータによれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。
【００２８】
請求項１２記載のマイクロコンピュータは、請求項１０または請求項１１記載のマイクロコンピュータにおいて、前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項１２記載のマイクロコンピュータによれば、タイマが同じサイズの目標カウント値の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００２９】
請求項１３記載のマイクロコンピュータは、請求項７ないし請求項１２のいずれかに記載のマイクロコンピュータにおいて、前記チッカが、現在時刻と前回更新時刻との差である経過時間をチック間隔で割った商であるチック数を時間計測中のタイマの目標カウント値までの残りのカウント値を演算させることにより、低消費電力モードでもウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めることを特徴とする。請求項１３記載のマイクロコンピュータによれば、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。さらに、チッカにタイマが登録されていないときには、マイクロコンピュータは、ＣＰＵのスリープ状態を続けることが可能になり、省電力化に資することができる。
【００３０】
請求項１４記載のマイクロコンピュータは、請求項１ないし請求項１３のいずれかに記載のマイクロコンピュータにおいて、前記タイマフレームワークが、チック間隔が短いチッカに関連付けられたタイマのうち１つでも時間を計測しているときには動作停止命令を発行しないようにすることにより、ＣＰＵのスリープを禁止することを特徴とする。請求項１４記載のマイクロコンピュータによれば、チック間隔が短いチッカでは時間計測中にＣＰＵをスリープさせないようにできる。この結果、ＣＰＵが頻繁にスリープ／ウェイクアップを繰り返すことが防止されるので、電力消費を抑えることができる。また、スリープ可否は計測する時間の長さで一意に決まるので、開発者はスリープを注意深く考えて設計していたことから解放されるという効果がある。
【００３１】
請求項１５記載の時間計測方法は、マイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが目標時間をセットする工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程とを含むことを特徴とする。請求項１５記載の時間計測方法によれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができる。
【００３２】
請求項１６記載の時間計測方法は、マイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが自身を登録することを該チッカに指令する工程と、タイマから登録を指令されたときにチッカがタイマを登録する工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程とを含むことを特徴とする。請求項１６記載の時間計測方法によれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。
【００３３】
請求項１７記載の時間計測方法は、請求項１５または請求項１６記載の時間計測方法において、前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。タイマが同じサイズの目標時間の変数領域を扱い、チッカのチック間隔を変えることで、請求項１７記載の時間計測方法によれば、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００３４】
請求項１８記載の時間計測方法は、マイクロコンピュータの時間計測方法において、アプリケーションが、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始の指令を受けたときに、タイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定する工程と、タイマフレームワークが、チッカに対してタイマを進めることを指令する工程と、タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、アプリケーションに対して目標時間を計測したことを通知する工程とを含むことを特徴とする。請求項１８記載の時間計測方法によれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。特に、アプリケーションは、目標時間を指定するだけで、チッカの数やチック間隔を事前に知っている必要がないので、その開発がきわめて容易になる。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。
【００３５】
請求項１９記載の時間計測方法は、マイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定するとともに自身を登録することを該チッカに指令する工程と、タイマから登録を指令されたときにチッカがタイマを登録する工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、チッカから自身の登録を抹消して、アプリケーションに対して目標時間を計測したことを通知する工程とを含むことを特徴とする。請求項１９記載の時間計測方法によれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。特に、アプリケーションは、目標時間を指定するだけで、チッカの数やチック間隔を事前に知っている必要がないので、その開発がきわめて容易になる。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。
【００３６】
請求項２０記載の時間計測方法は、請求項１８または請求項１９記載の時間計測方法において、前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項２０記載の時間計測方法によれば、タイマが同じサイズの目標カウント値の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００３７】
請求項２１記載の時間計測方法は、ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが目標時間をセットする工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程とを含むことを特徴とする。請求項２１記載の時間計測方法によれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。さらに、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００３８】
請求項２２記載の時間計測方法は、ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが自身を登録することを該チッカに指令する工程と、タイマから登録を指令されたときにチッカがタイマを登録する工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからタイマを進めることを指令されたときにチッカが時間計測中のタイマを進める工程と、タイマが目標時間に達したときにアプリケーションに対して時間計測の終了を通知する工程とを含むことを特徴とする。請求項２２記載の時間計測方法によれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。さらに、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００３９】
請求項２３記載の時間計測方法は、請求項２１または請求項２２記載の時間計測方法において、前記タイマが前記目標時間の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項２３記載の時間計測方法によれば、タイマが同じサイズの目標時間の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００４０】
請求項２４記載の時間計測方法は、ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、アプリケーションが、自身が保有するタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始の指令を受けたときに、タイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定する工程と、タイマフレームワークが、チッカに対してタイマを進めることを指令する工程と、タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、アプリケーションに対して目標時間を計測したことを通知する工程とを含むことを特徴とする。請求項２４記載の時間計測方法によれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができる。
【００４１】
請求項２５記載の時間計測方法は、ＣＰＵ，タイマブロックおよび間欠動作制御部を備え、通常動作モードと、スリープ状態にあって間欠的にウェイクアップ状態を繰り返す低消費電力モードとをとるマイクロコンピュータの時間計測方法において、アプリケーションがタイマに対して目標時間を指定して時間計測の開始を指令する工程と、アプリケーションから時間計測の開始を指令されたときにタイマが、目標時間を対応するチッカのチック間隔で割った目標カウント値を設定するとともに自身を登録することを該チッカに指令する工程と、タイマから登録を指令されたときにチッカがタイマを登録する工程と、タイマフレームワークがチッカに対してタイマを進めることを指令する工程と、タイマフレームワークからのタイマを進める指令に基づいて、チッカが、時間計測中のタイマに対してチック数をカウントするように指令する工程と、タイマが、チッカからのチック数をカウントする指令に基づいて目標までの残りのカウント値を演算し、目標カウント値に達したときに、チッカから自身の登録を抹消して、アプリケーションに対して目標時間を計測したことを通知する工程とを含むことを特徴とする。請求項２５記載の時間計測方法によれば、時間計測のための共通ロジック（タイマ，チッカおよびタイマフレームワーク）を使うことができるので、アプリケーションの開発が容易になるという効果がある。また、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減することができるとともに、ＣＰＵの処理負荷を低減できる。
【００４２】
請求項２６記載の時間計測方法は、請求項２４または請求項２５記載の時間計測方法において、前記タイマが前記目標カウント値の変数領域として全て同一サイズの領域を確保し、複数の前記チッカが互いに異なるチック間隔を持つことを特徴とする。請求項２６記載の時間計測方法によれば、タイマが同じサイズの目標カウント値の変数領域を扱い、チッカのチック間隔を変えることで、計測できる時間の長さを変えることにより、計測する時間の長短にかかわらず、共通のロジックで時間計測を行うことができるという効果がある。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。
【００４３】
請求項２７記載の時間計測方法は、請求項２１ないし請求項２６のいずれかに記載の時間計測方法において、前記チッカがタイマを進める工程においては、現在時刻と前回更新時刻との差である経過時間をチック間隔で割った商であるチック数を時間計測中のタイマの目標カウント値に対して演算させることにより、低消費電力モードでもウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めることを特徴とする。請求項２７記載の時間計測方法によれば、低消費電力モードではウェイクアップ状態の間欠動作時にスリープ状態でのスリープ時間分だけタイマを進めるので、個々のアプリケーションでスリープ状態におけるタイマの遅れを考慮する必要がなくなり、チッカで一括してスリープ状態によるタイマの遅れを補正することができる。この結果、アプリケーションの開発が容易になり、開発者の負担が軽減するとともに、アプリケーションにおけるバグの発生も抑えることができる。さらに、チッカにタイマが登録されていないときには、マイクロコンピュータは、ＣＰＵのスリープ状態を続けることが可能になり、省電力化に資することができる。
【００４４】
請求項２８記載の時間計測方法は、請求項１５ないし請求項２７のいずれかに記載の時間計測方法において、前記タイマフレームワークがチッカに対してタイマを進めることを指令する工程においては、チック間隔が短いチッカに関連付けられたタイマのうち１つでも時間を計測しているときには動作停止命令を発行しないようにすることにより、ＣＰＵのスリープを禁止することを特徴とする。請求項２８記載の時間計測方法によれば、チック間隔が短いチッカでは時間計測中にＣＰＵをスリープさせないようにできる。この結果、ＣＰＵが頻繁にスリープ／ウェイクアップを繰り返すことが防止されるので、電力消費を抑えることができる。また、スリープ可否は計測する時間の長さで一意に決まるので、開発者はスリープを注意深く考えて設計していたことから解放されるという効果がある。
【発明を実施するための最良の形態】
【００４５】
時間計測（変数領域の管理）側のタイマと、時間更新（チック）側のチッカとを分離して、共通ロジックを用いることにより、個々のアプリケーションに時間計測のロジックを組み込む場合に比べて、ＣＰＵが使用するメモリ容量を低減するとともに、ＣＰＵの処理負荷を軽減した。
【００４６】
以下、本発明の実施例について図面を参照しながら詳細に説明する。
【実施例１】
【００４７】
図３は、本発明の実施例１に係る時間計測方法が適用されるマイクロコンピュータ１の一例を示す回路ブロック図である。このマイクロコンピュータ１は、制御プログラムに従い動作するＣＰＵ３と、制御プログラムや固定データが予め格納されるＲＯＭ５と、ＣＰＵ３による演算結果を一時記憶するためのＲＡＭ７と、マイクロコンピュータ１の外部に設けられる発振素子８と協働してＣＰＵ３の動作クロックであるメインクロック（本実施例１では数ＭＨｚ〜数十ＭＨｚ）を生成するメイン発振回路９およびメイン発振回路９を制御する発振制御部１１からなるメインクロック発生部１３と、発振制御部１１と協働してＣＰＵ３を間欠的に動作（間欠動作）させるための制御を行う間欠動作制御部１５と、ＣＰＵ３の間欠時間（すなわち、ＣＰＵ３が間欠動作している際にスリープ状態である期間）を計測するタイマブロック１７と、マイクロコンピュータ１の外部に設けられる発振素子１８と協働してメインクロックよりも周波数が低いサブクロック（本実施例１では数十ＫＨｚ）を生成するサブ発振回路１９とを備えて構成されている。
【００４８】
本実施例１に係るマイクロコンピュータ１において、発振制御部１１と、間欠動作制御部１５と、タイマブロック１７との各々は、サブ発振回路１９で常時生成されるサブクロックを受けて動作する。
【００４９】
ＣＰＵ３は、特定の動作停止命令を実行することによって自己の動作を停止することができる。そして、ＣＰＵ３は、自ら動作を停止する時に（つまり、動作停止命令の実行時に）、間欠動作制御部１５へ停止指令を出力するようになっている。
【００５０】
一方、間欠動作制御部１５は、計測すべき目標時間がＣＰＵ３によってセットされる（書き込まれる）レジスタ１５ａを備えている。そして、間欠動作制御部１５は、通常時には、メインクロック発生部１３の発振制御部１１に動作指令を与えて、発振制御部１１にメイン発振回路９を動作させているが、ＣＰＵ３からの停止指令を受けると（すなわち、ＣＰＵ３が動作を停止すると）、発振制御部１１に停止指令を出力して、発振制御部１１にメイン発振回路９の動作を停止させるとともに、レジスタ１５ａにセットされている目標時間の計測を開始し、その目標時間が経過すると、発振制御部１１に再び動作指令を出力して、発振制御部１１にメイン発振回路９の動作を再開させる。さらに、間欠動作制御部１５は、ＣＰＵ３から停止指令を受けて、発振制御部１１へ停止指令を出力した時に、タイマブロック１７へ、ＣＰＵ３の動作が停止したことを示す停止報知信号を出力する。
【００５１】
なお、目標時間は、サブクロックの数（すなわち、周期数）に基づいて計測される。また、本実施例１において、停止報知信号は、極短いパルス幅のワンショットパルス信号である。さらに、メインクロック発生部１３の発振制御部１１は、間欠動作制御部１５からの動作指令と停止指令とに応じて、メイン発振回路９の動作と非動作とを切り替えるが、特に、間欠動作制御部１５からの動作指令を受けてメイン発振回路９の動作を開始させた際には、その時点からメインクロックの周波数が安定すると見なされる所定の発振安定待ち時間が経過した時に、ＣＰＵ３へ、該ＣＰＵ３をスリープ状態からウェイクアップ状態へとウェイクアップさせるためのＲＵＮ信号を出力する。
【００５２】
また、発振安定待ち時間は、メインクロックの周波数が確実に安定してからＣＰＵ３をウェイクアップさせるために設けられており、サブクロックの数に基づいて計測される。そして、発振制御部１１は、発振安定待ち時間がＣＰＵ３によってセットされる（書き込まれる）レジスタ１１ａを備えている。また、本実施例１において、発振制御部１１は、ＲＵＮ信号を、間欠動作制御部１５から次に停止指令を受けるまで（つまり、メイン発振回路９の動作を次に停止させる時まで）継続して出力するようになっている。そして、そのＲＵＮ信号は、タイマブロック１７にも供給されるようになっている。
【００５３】
タイマブロック１７は、ＣＰＵ３のスリープ状態／ウェイクアップ状態にかかわらず、間欠動作と連動してＣＰＵ３の間欠時間を自動的に計測する基本動作モードとしての第１の動作モードと、タイマブロック１７（図３参照）から取得したカウント値である現在時刻を継続して計測するフリーランの第２の動作モードとの、２つの動作モードを有している。そして、タイマブロック１７は、ＣＰＵ３からの動作モード切替指令によって、動作モードが２つの動作モードの内のいずれかに設定されるとともに、時間の計測値がＣＰＵ３によって読み取り可能に構成されている。
【００５４】
さらに、タイマブロック１７は、動作モードが第１の動作モードに設定されている場合には、間欠動作制御部１５からの停止報知信号によって計測値が０にクリアされるとともに、発振制御部１１からＲＵＮ信号が出力されている間は、計測動作を停止して計測値を保持するように構成されている。
【００５５】
また、タイマブロック１７は、ＣＰＵ３からのクリア指令によって、計測値のクリアが行われるとともに、ＣＰＵ３からのカウント停止指令によって、計測動作の停止および計測値の保持が行われるように構成されている。具体的に説明すると、図４に示すように、タイマブロック１７は、時間を計測する手段として、サブクロックを受けてカウントアップ動作するとともに、そのカウント値（時間の計測値に相当）が、ＣＰＵ３に読み取られるカウンタ２１を備えている。そして、カウンタ２１は、リセット端子２１ａにハイレベルの信号が供給されると、カウント値が０にクリアされ、また、動作停止端子２１ｂにハイレベルの信号が供給されている間、計測動作に相当するカウントアップ動作を停止してカウント値を保持するように構成されている。
【００５６】
さらに、タイマブロック１７は、ＣＰＵ３からの動作モード切替指令に該当する信号（以下、動作モード切替信号という）と間欠動作制御部１５からの停止報知信号との論理積信号を出力するアンド回路２３と、ＣＰＵ３からの動作モード切替信号と発振制御部１１からのＲＵＮ信号との論理積信号を出力するアンド回路２５と、アンド回路２３の出力とＣＰＵ３からのクリア指令に該当する信号（以下、クリア信号という）との論理和信号を、カウンタ２１のリセット端子２１ａに供給するオア回路２７と、アンド回路２５の出力とＣＰＵ３からのカウント停止指令に該当する信号（以下、カウント停止信号という）との論理和信号を、カウンタ２１の動作停止端子２１ｂに供給するオア回路２９とを備えている。
【００５７】
なお、タイマブロック１７に入力される各信号は、ハイレベルがアクティブレベルである。また、ＣＰＵ３からオア回路２７へのクリア信号は、間欠動作制御部１５からの停止報知信号と同様に、極短いパルス幅のワンショットパルス信号である。
【００５８】
このようなタイマブロック１７では、ＣＰＵ３からの動作モード切替信号がハイレベル（＝論理１）の場合に、間欠動作制御部１５からの停止報知信号が、アンド回路２３およびオア回路２７を介してカウンタ２１のリセット端子２１ａに供給されるとともに、発振制御部１１からのＲＵＮ信号が、アンド回路２５およびオア回路２９を介してカウンタ２１の動作停止端子２１ｂに供給されるため、タイマブロック１７の動作モードが第１の動作モードに設定される。
【００５９】
つまり、この場合には、図５（Ａ）に示すように、ＣＰＵ３の動作が停止して間欠動作制御部１５から停止報知信号が出力されると、カウンタ２１のカウント値が０にクリアされてカウンタ２１のカウント動作が最初から開始され、その後、発振制御部１１からＲＵＮ信号が出力されてＣＰＵ３が動作を再開すると、再びＣＰＵ３の動作が停止して間欠動作制御部１５から停止報知信号が出力されるまで、カウンタ２１のカウント動作が停止してカウント値が保持される、という動作が繰り返されることとなる。
【００６０】
逆に、ＣＰＵ３からの動作モード切替信号がローレベル（＝論理０）の場合には、間欠動作制御部１５からの停止報知信号がカウンタ２１のリセット端子２１ａに供給されることと、発振制御部１１からのＲＵＮ信号がカウンタ２１の動作停止端子２１ｂに供給されることとが、アンド回路２３，２５によって防止されるため、当該タイマブロック１７の動作モードが第２の動作モードに設定される。
【００６１】
この場合には、間欠動作制御部１５からの停止報知信号と、発振制御部１１からのＲＵＮ信号とにかかわらず、カウンタ２１は、フリーランの状態でカウントアップ動作を行うからである。さらに、タイマブロック１７では、動作モードが上記２つの動作モードのいずれに設定されている場合でも、ＣＰＵ３からクリア信号が出力されると、カウンタ２１のカウント値が０にクリアされ、また、ＣＰＵ３からカウント停止信号が出力されている間は、カウンタ２１のカウント動作が停止してカウンタ２１のカウント値が保持される。
【００６２】
以上のようなマイクロコンピュータ１では、ＣＰＵ３が、間欠動作制御部１５のレジスタ１５ａへ任意の時間をセットするとともに、実行すべき処理がなくて動作を停止してもよいと判断すると、動作停止命令を実行して、自己の動作を停止するとともに間欠動作制御部１５へ停止指令を出力する、といった具合に制御プログラムを設定すれば、図５（Ａ），（Ｂ）の上段に示すようなＣＰＵ３の間欠動作が実現されることとなる。
【００６３】
すなわち、ＣＰＵ３が、動作を停止してもよいと判断して、自らの動作を停止するとともに間欠動作制御部１５へ停止指令を出力すると、間欠動作制御部１５が、発振制御部１１に停止指令を出力してメイン発振回路９の動作を停止させるとともに、レジスタ１５ａにセットされている目標時間の計測を開始し、その目標時間が経過すると、発振制御部１１に再び動作指令を出力してメイン発振回路９の動作を再開させる。そして、その時点から、発振安定待ち時間が経過すると、発振制御部１１からＣＰＵ３へＲＵＮ信号が出力されて、ＣＰＵ３がスリープ状態からウェイクアップ状態へとウェイクアップすることとなり、以後は、こうした動作が繰り返されることとにより、ＣＰＵ３の間欠動作が実施される。
【００６４】
マイクロコンピュータ１では、サブクロックを受けて動作するタイマブロック１７が設けられており、タイマブロック１７は、動作モードがＣＰＵ３によって第１の動作モードに設定されている場合には、図５（Ａ）を用いて説明したように、ＣＰＵ３の実際の間欠時間（すなわち、ＣＰＵ３が動作を停止して間欠動作制御部１５が停止報知信号を出力した時点から、発振制御部１１がＣＰＵ３へＲＵＮ信号を出力するまでの時間）を自動的に計測する。
【００６５】
よって、マイクロコンピュータ１によれば、ＣＰＵ３がタイマブロック１７の動作モードを第１の動作モードに設定して下記の如く動作するように、制御プログラムを設定すれば、たとえ数十時間や数日間といった非常に長い目標時間でも計測することができるとともに、その時間計測機能（タイマ機能）を、非常に少ない消費電力で実現することができる。
【００６６】
すなわち、図５（Ａ）に示すように、ＣＰＵ３は、時間を計測する際に、間欠動作するとともに、スリープ状態からウェイクアップして一時動作する毎に、今回ウェイクアップするまでの間欠時間Ｔａに相当するカウント値をタイマブロック１７のカウンタ２１から読み取って、そのカウント値に基づき今回の実際の間欠時間Ｔａを算出し、また、今回ウェイクアップしてからの動作時間（すなわち、当該ＣＰＵ３がウェイクアップ状態となっている時間）Ｔｂを自らソフトウェア処理で計測する。
【００６７】
このようなマイクロコンピュータ１によれば、ＣＰＵ３だけでなくＣＰＵ３の動作クロックである高周波数のメインクロックが停止した状態で、時間の計測が遂行されるため、予定の動作を目標時間が経過してから実施する、というタイマ機能を、より少ない消費電力で実現することができ、しかも、計測すべき目標時間が数十時間や数日間といった具合に非常に長くても、確実に対応することができる。
【００６８】
また、マイクロコンピュータ１によれば、経過したことを判断する目標時間をソフトウェアによって自由に設定することができ、汎用性を損なうこともない。さらに、図５（Ａ）に示したように、ＣＰＵ３を定期的に動作させながら、継続して長い目標時間を計測することができるため、時間の計測中に処理を適宜変更することも可能になる。例えば、目標時間の計測を開始してから状況が変化して、実施予定の動作が不要になった場合には、そのことを検知して他の処理を実行することができ、また、定期的にＲＡＭ７内のデータ等をチェックして当該マイクロコンピュータ１の動作の安定性を確認することができ、動作の信頼性を向上させることができる。
【００６９】
図１は、本発明の実施例１に係る時間計測方法を実現するソフトウェア構成を表すＵＭＬ（Unified Modeling Language）によるクラス図である。このソフトウェア構成は、クラスTimerと、クラスTickerと、クラスTimerFrameworkと、クラスApplicationと、インターフェースAlarmとから、その主要部が構成されている。
【００７０】
クラスTimerは、属性count，およびalarmTimeを持つ。属性countは、後述するカウント値count（図９参照）に相当するものであり、可視性がprivateであり、タイプはU2である。属性alarmTimeは、後述する目標カウント値alarmTime（図９参照）に相当するものであり、可視性がprivateであり、タイプはU2である。
【００７１】
また、クラスTimerは、操作start()，stop()，pause()，resume()，isActive()，およびaddCount()を持つ。各操作start()，stop()，pause()，resume()，isActive()，およびaddCount()の可視性はpublicである。また、登録先のクラスTickerへの関連を持っている。
【００７２】
クラスTickerは、属性lastUpdateTime，tickTime，およびisDosyを持つ。属性lastUpdateTimeは、後述する前回更新時刻lastUpdateTime（図１２参照）に相当するものであり、可視性がprivateであり、タイプはU2である。属性tickTimeは、後述するチック間隔tickTime（図９参照）に相当するものであり、可視性がprivateであり、タイプはU2である。属性isDosyは、後述するチック間隔が短いチッカであるかどうか、すなわちスリープが可能なチッカであるかどうかを表すフラグisDozy（図６参照）であり、可視性がprivateであり、タイプは_Boolである。なお、本実施例１では、チッカTickerA，TickerBはチック間隔が短いチッカ、すなわちＣＰＵ３のスリープが禁止されたチッカであるものとする（図６参照）。
【００７３】
また、クラスTickerは、操作addTimer()，removeTimer()，hasTimer()，goForward()，isAwaken()，およびinitialize()を持つ。操作addTimer()は、可視性がpublicであり、タイプTimerのパラメータtimerがある。操作removeTimer()は、可視性がpublicであり、タイプTimerのパラメータtimerがある。操作hasTimer()は、可視性がpublicであり、タイプは_Boolである。操作goForward()は、可視性がpublic、タイプがVDであり、タイプU2のパラメータforwardTimeがある。操作isAwaken()は、可視性がpublicであり、タイプは_Boolである。操作initialize()は、可視性がpublic、タイプがVDであり、タイプU2のパラメータinitialTimeがある。
【００７４】
クラスTimerFrameworkは、ステレオタイプ<<Singleton>>として定義され、操作main()，initialize()，wakeup()，およびsetSLNG()を持つ。各操作main()，initialize()，wakeup()，およびsetSLNG()は、可視性がpublicである。
【００７５】
また、クラスTimerFrameworkは、チッカの集合tickersを持つ。
【００７６】
クラスApplicationは、１つのクラスTimerを持ち、インターフェースAlarmを実現する。クラスApplicationが保有するクラスTimerがそのインターフェースに対して時間経過を通知する。
【００７７】
インターフェースAlarmは、操作alarm()およびticked()を持つ。各操作alarm()およびticked()の可視性は、publicである。
【００７８】
図２は、図１に示したクラスのインスタンスと操作との関係を具体的に示す図である。クラスApplicationのインスタンスとして、アプリケーションApplicationA1，ApplicationA2，およびApplicationDが生成されている。クラスTimerのインスタンスとして、タイマApplicationA1Timer，ApplicationA2Timer，およびApplicationDTimerが生成されている。クラスTickerのインスタンスとして、４つのチッカTickerA，TickerB，TickerC，およびTickerDが生成されている．
【００７９】
図６は、クラスTickerのチッカTickerA，TickerB，TickerC，およびTickerDのチック間隔tickTime，最大計測時間およびスリープ可否isDosyを示す表である。チッカTickerAのチック間隔tickTimeＡ（下付のAは、チッカTickerAのチック間隔であることを示す）は５ｍｓであり、所定サイズ２バイトの変数領域で最大５分２７秒を計測することができる。チッカTickerBのチック間隔tickTimeＢ（下付のBは、チッカTickerBのチック間隔であることを示す）は２０ｍｓであり、所定サイズ２バイトの変数領域で最大２１分５０秒を計測することができる。チッカTickerCのチック間隔tickTimeＣ（下付のCは、チッカTickerCのチック間隔であることを示す）は１００ｍｓであり、所定サイズ２バイトの変数領域で最大１時間４９分を計測することができる。チッカTickerDのチック間隔tickTimeＤ（下付のDは、チッカTickerDのチック間隔であることを示す）は１分であり、所定サイズ２バイトの変数領域で最大４５日１２時間を計測することができる。
【００８０】
図７（Ａ）は、スリープすることを考慮せずに設計した場合に時間の進みが実時間に対して遅れてしまうことを説明するタイミングチャート、図７（Ｂ）は、本実施例１に係る時間計測方法によりチッカTickerA，TickerB，TickerC，およびTickerDがカウントするタイミングを制御して時間の進みを実時間と同等とすることを説明するタイミングチャートである。図７（Ａ）に示すように、スリープすることを考慮せずに設計すると、時間の進みが実時間に対して遅れてしまう。そうならないように、従来は、各アプリケーション開発者がタイマをカウントしていた。しかし、本実施例１の時間計測方法によって、チッカTickerA，TickerB，TickerC，およびTickerDがカウントするタイミングを制御できるので、全てのタイマを図７（Ｂ）のように扱うことができる。
【００８１】
図８は、タイマApplicationA1Timer，ApplicationA2Timer，ApplicationA3Timer，ApplicationA4Timerが登録されるチェッカTickerAのスタックの遷移を例示する図である。タイマApplicationA1Timer，ApplicationA2Timer，ApplicationA3Timernがすでに登録されているスタックにタイマApplicationA4Timerを追加する場合には、タイマApplicationA1Timer，ApplicationA2Timer，ApplicationA3Timernのポインタ&A1Timer，&A2Timer，&A3Timerが積まれているスタックの次のスタック位置に該タイマApplicationA4Timerのポインタ&A4Timerを積む。次に、スタックからタイマApplicationA2Timerが抹消される場合には、タイマApplicationA2Timerのポインタ&A2Timerが積まれていたスタック位置にダミーのポインタが一旦格納された後に、ダミーのポインタが除去されて、タイマApplicationA3Timer，ApplicationA4Timerが順次詰められる。なお、空いたスタック位置には、ＮＵＬＬポインタが格納される。
【００８２】
図９は、タイマApplicationA1Timer，ApplicationA2Timer，ApplicationDTimerが目標時間ｔの計測を開始する処理を示すフローチャートである。
【００８３】
図１０は、図９中の操作addTimer()のより詳細な処理を示すフローチャートである。
【００８４】
図１１は、タイマフレームワークTimerFrameworkの処理を示すフローチャートである。
【００８５】
図１２は、図１１中の操作goForward()のより詳細な処理を示すフローチャートである。
【００８６】
図１３は、図１２中の操作addCount()のより詳細な処理を示すフローチャートである。
【００８７】
図１４は、図１３中の操作removeTimer()のより詳細な処理を示すフローチャートである。
【００８８】
次に、このように構成された実施例１に係るマイクロコンピュータ１の動作について、図２に示す一例に基づいて説明する。
【００８９】
例えば、クラスTickerのインスタンスとして、４つのチッカTickerA，TickerB，TickerC，TickerDを生成したとする（図６参照）。チッカTickerAは、５ｍｓのチック間隔tickTimeＡを持つチッカである。チッカTickerBは、２０ｍｓのチック間隔tickTimeＢを持つチッカである。チッカTickerCは、１００ｍｓのチック間隔tickTimeＣを持つチッカである。チッカTickerDは、１ｍｉｎのチック間隔tickTimeＤを持つチッカである。
【００９０】
（１）  アプリケーションApplicationA1によるタイマApplicationA1Timerに対する操作start(100ms)の実行
【００９１】
いま、クラスApplicationのインスタンスであるアプリケーションApplicationA1が１００ｍｓの目標時間ｔＡ１（下付のA1は、アプリケーションApplicationA1の目標時間であることを示す）を計測するアプリケーションである場合、アプリケーションApplicationA1は、クラスTimerのインスタンスであるタイマApplicationA1Timerを保有する。タイマApplicationA1Timerは、所定サイズ２バイトの変数領域を有し、５ｍｓのチック間隔tickTimeＡを持つチッカTickerAに関連付けられる。
【００９２】
アプリケーションApplicationA1は、目標時間ｔＡ１（＝１００ｍｓ）を計測するタイミングになると、自身が保有するタイマApplicationA1Timerに対して操作start(100ms)を実行する。
【００９３】
（２）  タイマApplicationA1TimerによるチッカTickerAに対する操作addTimer()の実行
【００９４】
アプリケーションApplicationA1から操作start(100ms)の実行を受けると、タイマApplicationA1Timerは、目標時間ｔＡ１（＝１００ｍｓ）の計測を開始するために、カウント値countＡ１を０に初期化するとともに、目標時間ｔＡ１（＝１００ｍｓ）をチック間隔tickTimeＡ（＝５ｍｓ）で割った値２０を目標カウント値alarmTimeＡ１（下付のA1は、アプリケーションApplicationA1の目標カウント値であることを示す）に設定する（図９のステップＳ１０１）。次に、タイマApplicationA1Timerは、タイマApplicationA1Timer自身をチッカTickerAに登録するために操作addTimer()をチッカTickerAに対して実行する（図９のステップＳ１０２）。
【００９５】
タイマApplicationA1Timerから操作addTimer()の実行を受けると、チッカTickerAは、チッカTickerAのスタック（図８参照）にタイマApplicationA1Timerがすでに登録済みかどうかを判定し（図１０のステップＳ２０１）、すでに登録済みでなければ、スタックが一杯かどうかを判定する（図１０のステップＳ２０２）。スタックが一杯でなければ、チッカTickerAは、スタックの末尾にタイマApplicationA1Timerへのポインタを格納し（図１０のステップＳ２０３）、末尾を１つ進め（図１０のステップＳ２０４）、末尾にＮＵＬＬポインタを格納する（図１０のステップＳ２０５）。
【００９６】
（３）  アプリケーションApplicationA2によるタイマApplicationA2Timerに対する操作start(200ms)の実行
【００９７】
クラスApplicationのインスタンスであるアプリケーションApplicationA2が２００ｍｓの目標時間ｔＡ２（下付のA2は、アプリケーションApplicationA2の目標時間であることを示す）を計測するアプリケーションである場合、アプリケーションApplicationA2は、クラスTimerのインスタンスであるタイマApplicationA2Timerを保有する。タイマApplicationA2Timerは、所定サイズ２バイトの変数領域を有し、５ｍｓのチック間隔tickTimeＡを持つチッカTickerAに関連付けられる。
【００９８】
アプリケーションApplicationA2は、目標時間ｔＡ２（＝２００ｍｓ）を計測するタイミングになると、自身が保有するタイマApplicationA2Timerに対して操作start(200ms)を実行する。
【００９９】
（４）  タイマApplicationA2TimerによるチッカTickerAに対する操作addTimer()の実行
【０１００】
アプリケーションApplicationA2から操作start(200ms)の実行を受けると、タイマApplicationA2Timerは、目標時間ｔＡ２（＝２００ｍｓ）の計測を開始するために、カウント値countＡ２を０に初期化するとともに、目標時間ｔＡ２（＝２００ｍｓ）をチック間隔tickTimeＡ（＝５ｍｓ）で割った値４０を目標カウント値alarmTimeＡ２（下付のA2は、アプリケーションApplicationA2の目標カウント値であることを示す）に設定する（図９のステップＳ１０１）。次に、タイマApplicationA2Timerは、タイマApplicationA2Timer自身をチッカTickerAに登録するために操作addTimer()をチッカTickerAに対して実行する（図９のステップＳ１０２）。
【０１０１】
タイマApplicationA2Timerから操作addTimer()の実行を受けると、チッカTickerAは、チッカTickerAのスタック（図８参照）にタイマApplicationA2Timerがすでに登録済みかどうかを判定し（図１０のステップＳ２０１）、すでに登録済みでなければ、スタックが一杯かどうかを判定する（図１０のステップＳ２０２）。スタックが一杯でなければ、チッカTickerAは、スタックの末尾にタイマApplicationA2Timerへのポインタを格納し（図１０のステップＳ２０３）、末尾を１つ進め（図１０のステップＳ２０４）、末尾にＮＵＬＬポインタを格納する（図１０のステップＳ２０５）。
【０１０２】
このように、１つのチッカTickerAに対して、複数のタイマApplicationA1Timer，ApplicationA2Timerが存在できる。また、複数存在するタイマApplicationA1Timer，ApplicationA2Timerは、同じロジック（クラスTimer）を共有している。
【０１０３】
（５）  タイマフレームワークTimerFrameworkによる全てのチッカTickerA，TickerB，TickerC，TickerDに対する操作goForward()の実行
【０１０４】
タイマフレームワークTimerFrameworkは、基準クロック間隔δ（＝５ｍｓ）で全てのチッカTickerA，TickerB，TickerC，TickerDに対して操作goForward()を実行する（図１１のステップＳ３０１，Ｓ３０２）。まず、チッカTickerAに対して操作goForward()を実行する。
【０１０５】
タイマフレームワークTimerFrameworkから操作goForward()の実行を受けると、チッカTickerAは、チェッカTickerAに登録されているタイマApplicationA1Timer，ApplicationA2Timerをチック間隔tickTimeＡ（＝５ｍｓ）でチックするために、タイマブロック１７（図３参照）から取得したカウント値である現在時刻から前回更新時刻lastUpdateTimeＡを引いた値を経過時間ｅｔに設定するとともにチック数ｆｔを０クリアし（図１２のステップＳ２１１）、経過時間ｅｔがチック間隔tickTimeＡ（＝５ｍｓ）以上であるかどうかを判定する（図１２のステップＳ２１２）。経過時間ｅｔがチック間隔tickTimeＡ（＝５ｍｓ）以上であれば、チッカTickerAは、経過時間ｅｔからチック間隔tickTimeＡ（＝５ｍｓ）を引いた値を経過時間ｅｔに設定するとともにチック数ｆｔを１つインクリメントしてから（図１２のステップＳ２１３）、ステップＳ２１２に制御を戻す。経過時間ｅｔがチック間隔tickTimeＡ（＝５ｍｓ）未満であれば、チッカTickerAは、チック数ｆｔが０より大きいかどうかを判定し（図１２のステップＳ２１４）、チック数ｆｔが０以下であればステップＳ２１８に制御を移す。チック数ｆｔが０より大きければ、チッカTickerAは、チック数ｆｔだけタイマApplicationA1Timer，ApplicationA2Timerを進めるために操作addCount()を、チッカTickerAに登録されている全てのタイマApplicationA1Timer，ApplicationA2Timerに対して繰り返す（図１２のステップＳ２１５，Ｓ２１６）。次に、チッカTickerAは、前回更新時刻lastUpdateTimeＡにチック数ｆｔとチック間隔tickTimeＡ（＝５ｍｓ）との積を加えた値を前回更新時刻lastUpdateTimeＡに設定する（図１２のステップＳ２１７）。続いて、チッカTickerAは、登録を抹消されたタイマがあれば、スタックから取り除く（図１２のステップＳ２１８）。
【０１０６】
次に、チッカTickerB，TickerC，TickerDに対しても操作goForward()が実行されるが、この時点でいずれのチッカTickerB，TickerC，TickerDにも登録されているタイマがないので、なにも行われない。
【０１０７】
全てのチッカTickerA，TickerB，TickerC，TickerDに対する操作goFoward()の実行完了後（図１１のステップＳ３０１，Ｓ３０２）、タイマフレームワークTimerFrameworkは、チック間隔tickTimeＡ（＝５ｍｓ），tickTimeＢ（＝２０ｍｓ）が短いチッカTickerA，TickerBに対してタイマが登録されているかどうかを判定し（図１１のステップＳ３０３，Ｓ３０４）、チッカTickerAにタイマApplicationA1Timer，ApplicationA2Timerが登録されているので、スリープ禁止フラグをセットする（図１１のステップＳ３０５）。これにより、以降はＣＰＵ３はスリープしない通常動作モードとなる。
【０１０８】
（６）  チッカTickerAによるタイマApplicationA1Timerに対する操作addCount()の実行
【０１０９】
チッカTickerAから操作addCount()の実行を受けると、タイマApplicationA1Timerは、カウント値countＡ１とチック数ｆｔとの和が目標カウント値alarmTimeＡ１（＝２０）以上であるかどうかを判定し（図１３のステップＳ１１１）、カウント値countＡ１とチック数ｆｔとの和が目標カウント値alarmTimeＡ１（＝２０）未満であれば、カウント値countＡ１とチック数ｆｔとの和をカウント値countＡ１に設定する（図１３のステップＳ１１２）。一方、カウント値countＡ１とチック数ｆｔとの和が目標カウント値alarmTimeＡ１（＝２０）以上であれば、タイマApplicationA1Timerは、操作removeTimer()をチェッカTickerAに対して実行することにより、チッカTickerAからタイマApplicationA1Timerの登録を抹消する（図１３のステップＳ１１３）。
【０１１０】
操作removeTimer()の実行完了後（図１３のステップＳ１１３）、タイマApplicationA1Timerは、カウント値countＡ１を０に初期化するとともに目標カウント値alarmTimeＡ１（＝２０）を０に初期化し（図１３のステップＳ１１４）、目標時間ｔＡ１（＝１００ｍｓ）を計測したことをアプリケーションApplicationA1に対して操作alarm()を実行することによりアプリケーションApplicationA1に通知する（図１３のステップＳ１１５）。
【０１１１】
なお、操作addCount()は、チッカTickerAに登録されているタイマApplicationA2Timerに対しても実行されるが、目標カウント値alarmTimeＡ２が４０のタイマApplicationA2Timerでは、カウント値countＡ２とチック数ｆｔとの和がカウント値countＡ２に設定されるだけである（図１３のステップＳ１１２）。
【０１１２】
（７）  タイマApplicationA1TimerによるチッカTickerAに対する操作removeTimer()の実行
【０１１３】
チック間隔tickTimeＡ（＝５ｍｓ）毎のカウント値countＡ１のカウントアップによりカウント値countＡ１とチック数ｆｔとの和が目標カウント値alarmTimeＡ1（＝２０）以上になると（図１３のステップＳ１１１）、タイマApplicationA1Timerは、操作removeTimer()をチッカTickerAに対して実行する（図１３のステップＳ１１３）。
【０１１４】
タイマApplicationA1Timerから操作removeTimer()の実行を受けると、チッカTickerAは、タイマApplicationA1Timerがすでに登録済みかどうかを判定し（図１４のステップＳ２２１）、登録済みであるので、タイマApplicationA1TimerをチッカTickerAから抹消するために、タイマApplicationA1Timerへのポインタをダミーに置き換える（図１４のステップＳ２２２）。
【０１１５】
（８）  タイマApplicationA1TimerによるアプリケーションApplicationA1に対する操作alarm()の実行
【０１１６】
操作removeTimer()の実行完了後（図１３のステップＳ１１３）、タイマApplicationA1Timerは、カウント値countＡ１を０に初期化するとともに目標カウント値alarmTimeＡ１（＝２０）を０に初期化し（図１３のステップＳ１１４）、目標時間ｔＡ１（＝１００ｍｓ）を計測したことをアプリケーションApplicationA1に対して操作alarm()を実行することによりアプリケーションApplicationA1に通知する（図１３のステップＳ１１５）。
【０１１７】
（９）  タイマフレームワークTimerFrameworkによる全てのチッカTickerA，TickerB，TickerC，TickerDに対する操作goForward()の実行
【０１１８】
タイマフレームワークTimerFrameworkは、基準クロック間隔δ（＝５ｍｓ）で全てのチッカTickerA，TickerB，TickerC，TickerDに対して操作goForward()を実行する（図１１のステップＳ３０１，Ｓ３０２）。まず、チッカTickerAに対して操作goForward()を実行する。
【０１１９】
タイマフレームワークTimerFrameworkから操作goForward()の実行を受けると、チッカTickerAは、チェッカTickerAにこの時点で登録されているタイマApplicationA2Timerをチック間隔tickTimeＡ（＝５ｍｓ）でチックするために、タイマブロック１７（図３参照）から取得したカウント値である現在時刻から前回更新時刻lastUpdateTimeＡを引いた値を経過時間ｅｔに設定するとともにチック数ｆｔを０クリアし（図１２のステップＳ２１１）、経過時間ｅｔがチック間隔tickTimeＡ（＝５ｍｓ）以上であるかどうかを判定する（図１２のステップＳ２１２）。経過時間ｅｔがチック間隔tickTimeＡ（＝５ｍｓ）以上であれば、チッカTickerAは、経過時間ｅｔからチック間隔tickTimeＡ（＝５ｍｓ）を引いた値を経過時間ｅｔに設定するとともにチック数ｆｔを１つインクリメントしてから（図１２のステップＳ２１３）、ステップＳ２１２に制御を戻す。経過時間ｅｔがチック間隔tickTimeＡ（＝５ｍｓ）未満であれば、チッカTickerAは、チック数ｆｔが０より大きいかどうかを判定し（図１２のステップＳ２１４）、チック数ｆｔが０以下であればステップＳ２１８に制御を移す。チック数ｆｔが０より大きければ、チッカTickerAは、チック数ｆｔだけタイマApplicationA2Timerを進めるために操作addCount()を登録されている全てのタイマApplicationA2Timerに対して繰り返す（図１２のステップＳ２１５，Ｓ２１６）。次に、チッカTickerAは、前回更新時刻lastUpdateTimeＡにチック数ｆｔとチック間隔tickTimeＡ（＝５ｍｓ）との積を加えた値を前回更新時刻lastUpdateTimeＡに設定する（図１２のステップＳ２１７）。続いて、チッカTickerAは、登録を抹消されたタイマがあれば、スタックから取り除く（図１２のステップＳ２１８）。
【０１２０】
次に、チッカTickerB，TickerC，TickerDに対しても操作goForward()が実行されるが、この時点ではいずれのチッカTickerB，TickerC，TickerDにも登録されているタイマがないので、なにも行われない。
【０１２１】
全てのチッカTickerA，TickerB，TickerC，TickerDに対する操作goForward()の実行完了後（図１１のステップＳ３０１，Ｓ３０２）、タイマフレームワークTimerFrameworkは、チック間隔tickTimeＡ（＝５ｍｓ），tickTimeＢ（＝２０ｍｓ）が短いチッカTickerA，TickerBに対してタイマが登録されているかどうかを判定し（図１１のステップＳ３０３，Ｓ３０４）、チッカTickerAにタイマApplicationA2Timerが登録されているので、スリープ禁止フラグをセットする（図１１のステップＳ３０５）。これにより、以降はＣＰＵ３はスリープしない通常動作モードとなる。
【０１２２】
（１０）  チッカTickerAによるタイマApplicationA2Timerに対する操作addCount()の実行
【０１２３】
チッカTickerAから操作addCount()の実行を受けると（図１２のステップＳ２１６）、タイマApplicationA2Timerは、カウント値countＡ２とチック数ｆｔとの和が目標カウント値alarmTimeＡ２（＝４０）以上であるかどうかを判定し（図１３のステップＳ１１１）、カウント値countＡ２とチック数ｆｔとの和が目標カウント値alarmTimeＡ２（＝４０）未満であれば、カウント値countＡ２とチック数ｆｔとの和をカウント値countＡ２に設定する（図１３のステップＳ１１２）。一方、カウント値countＡ２とチック数ｆｔとの和が目標カウント値alarmTimeＡ２（＝４０）以上であれば、タイマApplicationA2Timerは、操作removeTimer()をチェッカTickerAに対して実行することにより、チッカTickerAからタイマApplicationA2Timerの登録を抹消する（図１３のステップＳ１１３）。
【０１２４】
操作removeTimer()の実行完了後（図１３のステップＳ１１３）、タイマApplicationA2Timerは、カウント値countＡ２を０に初期化するとともに目標カウント値alarmTimeＡ２（＝４０）を０に初期化し（図１３のステップＳ１１４）、目標時間ｔＡ２（＝２００ｍｓ）を計測したことをアプリケーションApplicationA2に対して操作alarm()を実行することによりアプリケーションApplicationA2に通知する（図１３のステップＳ１１５）。
【０１２５】
（１１）  タイマApplicationA2TimerによるチッカTickerAに対する操作removeTimer()の実行
【０１２６】
チック間隔tickTimeＡ（＝５ｍｓ）毎のカウント値countＡ２のカウントアップによりカウント値countＡ２とチック数ｆｔとの和が目標カウント値alarmTimeＡ２（＝４０）以上になると（図１３のステップＳ１１１）、タイマApplicationA2Timerは、操作removeTimer()をチッカTickerAに対して実行する（図１３のステップＳ１１３）。
【０１２７】
タイマApplicationA2Timerから操作removeTimer()の実行を受けると、チッカTickerAは、タイマApplicationA2Timerがすでに登録済みかどうかを判定し（図１４のステップＳ２２１）、登録済みであるので、タイマApplicationA2TimerをチッカTickerAから抹消するために、タイマApplicationA2Timerへのポインタをダミーに置き換える（図１４のステップＳ２２２）。
【０１２８】
（１２）  タイマApplicationA2TimerによるアプリケーションApplicationA2に対する操作alarm()の実行
【０１２９】
操作removeTimer()の実行完了後（図１３のステップＳ１１３）、タイマApplicationA2Timerは、カウント値countＡ２を０に初期化するとともに目標カウント値alarmTimeＡ２（＝４０）を０に初期化し（図１３のステップＳ１１４）、目標時間ｔＡ２（＝２００ｍｓ）を計測したことをアプリケーションApplicationA2に対して操作alarm()を実行することによりアプリケーションApplicationA2に通知する（図１３のステップＳ１１５）。
【０１３０】
（１３）  アプリケーションApplicationDによるタイマApplicationDTimerに対する操作start(7days)の実行
【０１３１】
クラスApplicationのインスタンスであるアプリケーションApplicationDが７日間の目標時間ｔＤ（下付のDは、アプリケーションApplicationDの目標時間であることを示す）を計測する場合、アプリケーションApplicationDは、クラスTimerのインスタンスである７日間を計測するタイマApplicationDTimerを保有する。タイマApplicationDTimerは、所定サイズ２バイトの変数領域を有し、１ｍｉｎのチック間隔tickTimeＤ（下付のDは、アプリケーションApplicationDのチック間隔であることを示す）を持つチッカTickerDに関連付けられる。
【０１３２】
アプリケーションApplicationDは、目標時間ｔＤ（＝７ｄａｙｓ）を計測するタイミングになると、自身が保有するタイマApplicationDTimerに対して操作start(7days)を実行する。
【０１３３】
（１４）  タイマApplicationDTimerによるチッカTickerDに対する操作addTimer()の実行
【０１３４】
アプリケーションApplicationDから操作start(7days)の実行を受けると、タイマApplicationDTimerは、目標時間ｔＤ（＝７ｄａｙｓ）の計測を開始するために、カウント値countＤを０に初期化するとともに、目標時間ｔＤ（＝７ｄａｙｓ）をチック間隔tickTimeＤ（＝１ｍｉｎ）で割った値１００８０を目標カウント値alarmTimeＤ（下付のDは、アプリケーションApplicationDの目標カウント値であることを示す）に設定する（図９のステップＳ１０１）。次に、タイマApplicationDTimerは、タイマApplicationDTimer自身をチッカTickerDに登録するために操作addTimer()をチッカTickerDに対して実行する（図９のステップＳ１０２）。
【０１３５】
タイマApplicationDTimerから操作addTimer()の実行を受けると、チッカTickerDは、チッカTickerDのスタック（図８参照）にタイマApplicationDTimerがすでに登録済みかどうかを判定し（図１２のステップＳ２１１）、すでに登録済みでなければ、スタックが一杯かどうかを判定する（図１２のステップＳ２１２）。スタックが一杯でなければ、チッカTickerDは、スタックの末尾にタイマApplicationDTimerへのポインタを格納し（図１２のステップＳ２１３）、末尾を１つ進め（図１２のステップＳ２１４）、末尾にＮＵＬＬポインタを格納する（図１２のステップＳ２１５）。
【０１３６】
タイマApplicationA1Timer，ApplicationA2TimerとタイマApplicationDTimerとではチック間隔tickTimeＡ（＝５ｍｓ）とチック間隔tickTimeＤ（＝１ｍｉｎ）とが違うが、チック間隔tickTimeＡ（＝５ｍｓ）とチック間隔tickTimeＤ（＝１ｍｉｎ）とは関連付けるチッカTickerAとチッカTickerDとを変えるだけでよいので、同じロジック（クラスTimer）を使用することができる。
【０１３７】
（１５）  タイマフレームワークTimerFrameworkによる全てのチッカTickerA，TickerB，TickerC，TickerDに対する操作goForward()の実行
【０１３８】
タイマフレームワークTimerFrameworkは、基準クロック間隔δ（＝５ｍｓ）で操作goForward()を全てのチッカTickerA，TickerB，TickerC，TickerDに対して実行する（図１１のステップＳ３０１，Ｓ３０２）。しかし、チッカTickerA，TickerB，TickerCについては、この時点で登録されているタイマがないので、なにも行われない。
【０１３９】
一方、タイマフレームワークTimerFrameworkからチッカTickerDに対して操作goForward()が実行されると、チッカTickerDは、チェッカTickerDに登録されているタイマApplicationDTimerをチック間隔tickTimeＤ（＝１ｍｉｎ）でチックするために、タイマブロック１７（図３参照）から取得したカウント値である現在時刻から前回更新時刻lastUpdateTimeＤを引いた値を経過時間ｅｔに設定するとともにチック数ｆｔを０クリアし（図１２のステップＳ２１１）、経過時間ｅｔがチック間隔tickTimeＤ（＝１ｍｉｎ）以上であるかどうかを判定する（図１２のステップＳ２１２）。経過時間ｅｔがチック間隔tickTimeＤ（＝１ｍｉｎ）以上であれば、チッカTickerDは、経過時間ｅｔからチック間隔tickTimeＤ（＝１ｍｉｎ）を引いた値を経過時間ｅｔに設定するとともにチック数ｆｔを１つインクリメントしてから（図１２のステップＳ２１３）、ステップＳ２１２に制御を戻す。経過時間ｅｔがチック間隔tickTimeＤ（＝１ｍｉｎ）未満であれば、チッカTickerDは、チック数ｆｔが０より大きいかどうかを判定し（図１２のステップＳ２１４）、チック数ｆｔが０以下であればステップＳ２１８に制御を移す。チック数ｆｔが０より大きければ、チッカTickerDは、チック数ｆｔだけタイマApplicationDTimer
を進めるために操作addCount()をチッカTickerDに登録されている全てのタイマApplicationDTimerに対して繰り返す（図１２のステップＳ２１５，Ｓ２１６）。次に、チッカTickerDは、前回更新時刻lastUpdateTimeＤにチック数ｆｔとチック間隔tickTimeＤ（＝１ｍｉｎ）との積を加えた値を前回更新時刻lastUpdateTimeＤに設定する（図１２のステップＳ２１７）。続いて、チッカTickerDは、登録を抹消されたタイマがあれば、スタックから取り除く（図１２のステップＳ２１８）。
【０１４０】
全てのチッカTickerA，TickerB，TickerC，TickerDに対する操作goForward()の実行完了後（図１１のステップＳ３０１，Ｓ３０２）、タイマフレームワークTimerFrameworkは、チック間隔が短いチッカTickerA，TickerBに対してタイマが登録されているかどうかを判定し（図１１のステップＳ３０４）、この時点でチッカTickerA，TickerBにタイマが登録されていないので、スリープ禁止フラグをクリアする（図１１のステップＳ３０６）。これにより、以降はＣＰＵ３はスリープし得る低消費電力モードになる。
【０１４１】
（１６）  チッカTickerDによるタイマApplicationDTimerに対する操作addCount()の実行
【０１４２】
チッカTickerDから操作addCount()の実行を受けると、タイマApplicationDTimerは、カウント値countＤとチック数ｆｔとの和が目標カウント値alarmTimeＤ（＝１００８０）以上であるかどうかを判定し（図１３のステップＳ１１１）、カウント値countＤとチック数ｆｔとの和が目標カウント値alarmTimeＤ（＝１００８０）未満であれば、カウント値countＤとチック数ｆｔとの和をカウント値countＤに設定する（図１３のステップＳ１１２）。一方、カウント値countＤとチック数ｆｔとの和が目標カウント値alarmTimeＤ（＝１００８０）以上であれば、タイマApplicationDTimerは、操作removeTimer()をチェッカTickerDに対して実行することにより、チッカTickerDからタイマApplicationDTimerの登録を抹消する（図１３のステップＳ１１３）。
【０１４３】
操作removeTimer()の実行完了後（図１３のステップＳ１１３）、タイマApplicationDTimerは、カウント値countＤを０に初期化するとともに目標カウント値alarmTimeＤ（＝１００８０）を０に初期化し（図１３のステップＳ１１４）、目標時間ｔＤ（＝７ｄａｙｓ）を計測したことをアプリケーションApplicationDに対して操作alarm()を実行することによりアプリケーションApplicationDに通知する（図１３のステップＳ１１５）。
【０１４４】
（１７）  タイマApplicationDTimerによるチッカTickerDに対する操作removeTimer()の実行
【０１４５】
チック間隔tickTimeＤ（＝１ｍｉｎ）毎のカウント値countＤのカウントアップによりカウント値countＤとチック数ｆｔとの和が目標カウント値alarmTimeＤ（＝１００８０）以上になると（図１３のステップＳ１１１）、タイマApplicationDTimerは、チッカTickerDから自身の登録を抹消するために、チッカTickerDに対して操作removeTimer()を実行する（図１３のステップＳ１１３）。
【０１４６】
タイマApplicationDTimerから操作removeTimer()の実行を受けると、チッカTickerDは、タイマApplicationDTimerがすでに登録済みかどうかを判定し（図１４のステップＳ２２１）、登録済みであるので、タイマApplicationA1Timerへのポインタをダミーに置き換えることにより抹消する（図１４のステップＳ２２２）。
【０１４７】
（１８）  タイマApplicationDTimerによるアプリケーションApplicationDに対する操作alarm()の実行
【０１４８】
操作removeTimer()の実行完了後（図１３のステップＳ１１３）、タイマApplicationDTimerは、カウント値countＤを０に初期化するとともに目標カウント値alarmTimeＤ（＝１００８０）を０に初期化し（図１３のステップＳ１１４）、目標時間ｔＤ（＝７ｄａｙｓ）を計測したことをアプリケーションApplicationDに対して操作alarm()を実行することによりアプリケーションApplicationDに通知する（図１３のステップＳ１１５）。
【０１４９】
本実施例１によれば、チッカTickerAにタイマApplicationA1Timer，ApplicationA2Timerが動的に登録され、チッカTickerDにタイマApplicationDTimerが動的に登録されるので、ＣＰＵ３の処理負荷を低減できる。
【０１５０】
詳しくは、あらかじめタイマApplicationA1Timer，ApplicationA2TimerがチッカTickerAに登録され、タイマApplicationDTimerがチッカTickerDに登録されているならば（静的に登録されているならば）、タイマフレームワークTimerFrameworkが時間を進めるようとするたびに、チッカTickerA，TickerDは登録されている全てのタイマに対して、目標時間を計測中であるかどうかをチェックして、タイマをカウントアップしてよいかどうかを判断しなければならない。
【０１５１】
これに対して、タイマApplicationA1Timer，ApplicationA2TimerをチッカTickerAに動的に登録し、タイマApplicationDTimerをチッカTickerDに動的に登録する場合は、チッカTickerA，TickerDは、登録されているタイマApplicationA1Timer，ApplicationA2TimerおよびタイマApplicationDTimerを無条件でカウントアップするだけでよい。全てのタイマが同時に動作することはほとんどないので、扱うタイマの数も、非常に少なくなる。もし、いかなるタイマも動作していなければ、チッカには何も登録されていないので、何もしなくてすむ。アプリケーションApplicationA1Timerだけが動作していれば、チッカTickerAは、アプリケーションApplicationA1Timerをカウントアップするだけでよい。
【０１５２】
なお、上記実施例１の動作の説明では、図２に示す一例に基づいて説明したが、動作は生成するタイマの数やチッカの数に応じて異なってくる。詳細な説明は省略するが、タイマの数やチッカの数が異なる場合にも、動作が容易に類推可能なことはいうまでもない。
【０１５３】
また、タイマをチッカに動的に登録するようにしたが、タイマをチッカにあらかじめ静的に関連付けておき、タイマからの目標カウント値がセットされていなければ、タイマを進めないようにすることにより、同様の時間計測を実現することができる。
【０１５４】
さらに、タイマがチッカからのチック数をカウント値に加算し、カウント値が目標カウント値を越えたときにアプリケーションに対して目標時間を計測したことを通知するようにしたが、逆にチッカからのチック数で目標カウント値を減算し、目標カウント値がゼロ以下になったときにアプリケーションに対して目標時間を計測したことを通知するようにしてもよい。つまり、目標時間の計測をどのような演算によって判断するかは適宜選択可能である。
【０１５５】
以上、本発明の実施例を説明したが、これはあくまでも例示にすぎず、本発明はこれに限定されるものではなく、特許請求の範囲の趣旨を逸脱しない限りにおいて、当業者の知識に基づく種々の変更が可能である。特に、図３ないし図５を用いて説明したマイクロコンピュータ１は、単なる一例であって、本発明の時間計測方法が適用されるマイクロコンピュータの構成がこれに限られるわけでないことはいうまでもない。
【図面の簡単な説明】
【０１５６】
【図１】本発明の実施例１に係る時間計測方法を実現するソフトウェア構成を表すＵＭＬによるクラス図。
【図２】図１に示したクラスのインスタンスと操作との関係を具体的に示す図。
【図３】本実施例１に係る時間計測方法が適用されるマイクロコンピュータの一例を示す回路ブロック図。
【図４】図３中のタイマブロックの構成を説明するブロック図。
【図５】図３のマイクロコンピュータの使用方法および作用を説明するタイミングチャート。
【図６】図２中のチッカのチック間隔，最大計測時間およびスリープ可否を表すテーブル。
【図７】（Ａ）は、スリープすることを考慮せずに設計した場合に時間の進みが実時間に対して遅れてしまうことを説明するタイミングチャート、（Ｂ）は、本実施例１によりチッカがカウントするタイミングを制御して時間の進みを実時間と同等とすることを説明するタイミングチャート。
【図８】図２中のタイマが登録されるチェッカのスタックの遷移を例示する図。
【図９】図２中のタイマが目標時間の計測を開始する処理を示すフローチャート。
【図１０】図９中の操作addTimer()のより詳細な処理を示すフローチャート。
【図１１】図２中のタイマフレームワークの処理を示すフローチャート。
【図１２】図１１中の操作goForward()のより詳細な処理を示すフローチャート。
【図１３】図１２中の操作addCount()のより詳細な処理を示すフローチャート。
【図１４】図１３中の操作removeTimer()のより詳細な処理を示すフローチャート。
【符号の説明】
【０１５７】
１  マイクロコンピュータ
３  ＣＰＵ
５  ＲＯＭ
７  ＲＡＭ
８，１８  発振素子
９  メイン発振回路
１１  発振制御部
１３  メインクロック発生部
１５  間欠動作制御部
１１ａ，１５ａ  レジスタ
１７  タイマブロック
１９  サブ発振回路
２１  カウンタ
２１ａ  リセット端子
２１ｂ  動作停止端子
２３，２５  アンド回路
２７，２９  オア回路
Alarm  アラームのクラス
Application  アプリケーションのクラス
ApplicationA1，ApplicationA2，ApplicationD  アプリケーション
ApplicationA1Timer，ApplicationA2Timer，ApplicationDTimer  タイマ
Ticker  チッカのクラス
TickerA，TickerB，TickerC，TickerD  チッカ
Timer  タイマのクラス
TimerFramework  タイマフレームワークのクラス
【図１】
2006178822.tif 000003
【図２】
2006178822.tif 000004
【図３】
2006178822.tif 000005
【図４】
2006178822.tif 000006
【図５】
2006178822.tif 000007
【図６】
2006178822.tif 000008
【図７】
2006178822.tif 000009
【図８】
2006178822.tif 000010
【図９】
2006178822.tif 000011
【図１０】
2006178822.tif 000012
【図１１】
2006178822.tif 000013
【図１２】
2006178822.tif 000014
【図１３】
2006178822.tif 000015
【図１４】
2006178822.tif 000016