シリアルEEPROMとの通信テスト

先程の記事で接続を行った EEPROM に、実際にアクセスしてみます。

OBEX の Spinコードのみで作られたEEPROMドライバ を使用します。
ピン番号が決め打ちになっているようなので、DemoBoard 用に書き換えます。
(接続写真の回路では、Data_Pin = 5、Clock_Pin = 4 となります)

以下は、EEPROMに1バイトだけ書いて、その値を再度読み出し、
LED に出力するテストコードです。

CON
  _clkmode = xtal1 + pll16x
  _xinfreq = 5_000_000

OBJ
  rom : "ROMEngine"

PUB main | data
  DIRA[16..23]~~
  rom.writeByte(0, %01010101)
  data := rom.readByte(0)
  repeat
    waitcnt( CNT + CLKFREQ )
    OUTA[16..23] := data
    waitcnt( CNT + CLKFREQ )
    OUTA[16..23]~

このプログラムを実行して、LED が1秒間隔で「1つおき点灯→消灯」を
繰り返せば成功です。LED が点灯しない場合は、回路の接続を確認してください。

次の実行では writeByte をコメントアウトします。
プログラムからのビット指定はなくなりますが、最初の実行で保存された値が
EEPROM から読み出されるため、実行結果は先程と同じになるはずです。

べた実装だとアクセス速度が気になりますが、これで二次記憶が手に入りました!

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。