2009/08/04

セーブ/ロードのしくみ

外部からGMC-4のメモリを直接読み書きすることはできないので、
セーブ/ロードの機能(のようなもの)を実現するために、
自動的にキーを押したり7セグを読み取ったりしています。
つまり、手動でINCRを押しながらメモリの内容を紙にメモしたり、
メモを見て手動で打ち込んだりするのと同じようなことを、
PICにやらせているわけです。

PICが行うセーブの動作:
  1. RESETを押す
  2. 7セグの表示を読み取ってPICのメモリに保存
  3. INCRを押して100mS待つ
  4. 以下2-3を繰り返し
キーをあんまり速く押しても認識されないので、100mS程度は待つ必要があります。
したがって0x00~0x5Fの96ニブルを保存するのに約10秒ほどかかります。

PICが行うロードの動作:
  1. RESETを押す
  2. PICのメモリからデータを読み出す
  3. 7セグの表示と一致しない場合はデータの値に対応するキーを押して100mS待つ
  4. INCRを押して100mS待つ
  5. 以下2-4を繰り返し
ロードの場合は1ニブルあたり2回ボタンを押すので時間がかかりそうですが、
データを書き換える必要がない所はINCRを押すだけで良いので、
結局ロードにかかる時間は10秒~20秒程度です。

今回使ったPIC16F690の場合、セーブデータの保存に使えるのは、
チップ内にある256バイトのSRAMと256バイトのEEPROMです。
(I/Oの空きがないので外部にEEPROMを付ける余裕もないし、
フラッシュメモリへの書き込みもできないので。)
セーブデータは2ニブルずつまとめて1件あたり48バイトなので、
ぎりぎりまで使っても合計10件が限界です。
しかもSRAMの分は電源を切ったら消えてしまうので、
本体がオフの間もPICだけスリープしてメモリを保持しています。

0 件のコメント:

アーカイブ