第13章 ローバッテリ自動検出機能 |
ビジュアルメモリには、電池容量が少なくなるとその旨のメッセージがLCDに表示される、ローバッテリ自動検出機能がシステムBIOSとして実装されています。
フラッシュメモリへのデータの書き込みや、他のビジュアルメモリとの通信を行なうと電池を非常に多く消費するため、ローバッテリ自動検出が誤動作する可能性があります。そこで、これらの処理を行なう場合、あらかじめローバッテリ自動検出機能をOFFにすることで、誤動作を回避できます。
また、この機能を使用するにあたっては、BIOSに処理を渡す前に、追加で処理を行う必要が有るため、ghead.asm の内容を一部、変更しなければなりません。 ghead.asm の内容の変更にあたっては、細心の注意を払って行う必要があります。注意して下さい。
ローバッテリ自動検出を行なうかどうかを指定するのが、ローバッテリ自動検出許可フラグです。アプリケーションは、このフラグを操作することが可能です。
|
アプリケーションで下記の処理を行う場合には、必ずローバッテリ検出フラグを‘0FFH’に設定し、自動検出を一時的に中止してください。下記の処理は、電池を多く消費するため、ローバッテリ自動検出が誤動作する可能性があります。
|
06EH(RAMバンク0) ローバッテリ自動検出フラグ
00Hを指定するとローバッテリ自動検出が行なわれます。0FFHを指定すると自動検出は行なわれません。
|
00Hまたは0FFH以外は指定しないでください。 |
ローバッテリ自動検出機能は、電池の電圧を監視しある値より低下した場合、実行中のプログラムを中断し、ローバッテリを検出してから3秒間後に電池が消耗している旨LCDに表示します。
ローバッテリ自動検出機能は、電圧低下の検出と、電池消耗のメッセージの表示まですべて含んだ機能です。ローバッテリ自動検出許可フラグに00Hを設定している場合、ビジュアルメモリの動作状態に関わらず、一連の動作を自動的に行います。ローバッテリ自動検出許可フラグを0FFHに設定している場合は、ローバッテリの検出機能に関わるすべての動作を停止します。
|
低電圧時にデータをフラッシュメモリに退避させる必要のあるアプリケーションの場合は、ローバッテリ自動検出機能を使わずに、低電圧検出フラグ(PORT7のビット1)を監視する方法で、自前のチェックルーチンを作成するようにしてください。 ローバッテリ自動検出機能を使用した場合は、検知後の処理が完全にBIOSに移行してしまうため、データの待避を行うことが出来ません。 また、自前の低電圧検知ルーチンを作成する場合は、作成基準に準拠した動作をするようプログラムする必要があります。注意して下さい。 |
|
低電圧検出フラグについては「ハードウェア編」の「4.1.3 ポート7」を参照してください。 |
1 timer_ex: 2 push ie 3 clr1 ie,7 ;interrupt prohibition 4 change timer_in 5 timer_ex_exit: 6 pop ie 7 reti変更後:
1 timer_ex: 2 jmp auto_low_batt_chk 3 nop 4 nop 5 nop 6 nop 7 nop 8 nop 9 nop 10 timer_ex_exit: 11 pop ie 12 reti ユーザーアプリケーションのソースに以下を追加 1 auto_low_batt_chk: 2 mov #080h, vccr ; XRAMのアクセスを行うのでVCCRを設定 ( VCCR6 = 0 ) 3 push ie 4 clr1 ie,7 ;interrupt prohibition 5 change timer_in変更前のghead.asmでは、1,2行で割り込み禁止処理を行っているわけですが、
| [←] | [INDEX] | [→] |
(C)SEGA ENTERPRISES, LTD., 1999