Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Palm OS Programmer's Companion Volume I/11-8

← 7 節に戻る ↑11 章トップへ 9 節に進む →


11-8 時刻

 
Palm ハンドヘルドは 68328 プロセッサの一部として実時間クロックとプログラマブルタイマーを持っています。実時間クロックはシステムがスリープモード(オフ)の状態でも現在時刻を維持します。このクロックはユーザーが設定したアラームによって割込みを発生させ、ハンドヘルドをウェイクアップさせることができます。プログラマブルタイマーは、システムの休止・動作モード中にシステムクロック(秒あたり100回)の回数を指定した割込みの生成に使用されます。システムクロックの割込みは、ディジタイザにおけるユーザー入力のポーリングやキーのデバウンスなどで必要となります。

日付と時刻のマネージャ(この章ではタイムマネージャと呼びます)は、Palm ハンドヘルドの秒単位および 0.01 秒単位両方のタイミングリソースへのアクセスを提供します。

  • 秒単位のタイマーは実時間クロック(日付と時刻)を維持します。これはスリープモード中でも機能します。
  • システムクロックとしても参照される 0.01 秒単位のタイマーは、より精緻なタイミング制御が必要なタスクにも使用できます。このタイマーはスリープモード中は更新されず、デバイスがリセットされるたびに 0 にリセットされます。

タイムマネージャの基本的な API は、実時間クロックの秒単位での設定・取得とシステムクロックの現在値の取得をサポートします(システムクロックの設定はできません)。システムマネージャは定期的な処理や指定クロック数経過後に実行されるタイマータスクをセットアップするためのより高度な機能を提供しています。

このセクションでは以下のトピックを説明します。

  • 実時間クロック関数の使用
  • システムクロック関数の使用

 

実時間クロック関数の使用

タイムマネージャの実時間クロック関数には TimSetSeconds と TimGetSeconds が含まれています。Palm ハンドヘルドにおける実時間は、1904 年の1月1日0時からの秒数で計測されます。TimSecondsToDateTime と TimDateTimeToSeconds を使用することで、この秒数と年月日・時分秒を格納する構造体との間の相互変換を行なうことができます。

 

システムクロック関数の使用

Palm ハンドヘルドは、リセットされた時点で 0 から開始されるシステムクロックを維持しています。このクロックは、

  • Palm ハンドヘルド上では1秒あたり100回カウントされます。
  • Macintosh 上で動作するシミュレータでは、1秒あたり 60 回カウントされます。

システムクロックベースでタイミングをとるのであれば、アプリケーションは SysTicksPerSecond マクロを使用すべきです。このマクロはプラットフォームによって異なる値にコンパイルされます。TimGetTicks 関数を使用すれば現在のシステムクロック値を得ることができます。

TimGetTicks 関数は待ち合わせのためのループの実装に使えますが、アプリケーションではそのかわりに SysTaskDelay 関数を使用することをお勧めします。SysTaskDelay 関数は待ち合わせ中にシステムを自動的に省電力モードに移行します。TimGetTicks をループで使用すると、より多くの電力を消費します。

 


← 7 節に戻る ↑11 章トップへ 9 節に進む →