EEPROM書き込み装置--ゲーム機のような操作性
更新: 2004年9月15日
作成: 2003年9月13日
ICメモリ方式のタイムレコーダーを作るためには、ひとつひとつのメモリチップが、異なったIDを持っている必要があります。そこで、ゲーム機感覚で操作できる、メモリチップにデータを書き込む装置を作ってみました。
8ピンのメモリは1024ビット
最近では、パソコンに512MB(4ギガビット)ものメモリーを積むことが当然のようになりましたが、私が思うに、それはあまりに過積載です。
今回は、8ピンで1024ビットの容量を持つEEPROM(電気的に書き換え可能で、電源を切っても記憶内容が保持される半導体メモリー)の記憶内容を表示したり書き換えたりできる装置を作りました。
16進数で表示されたダンプデータを、じかに編集できるという、面白いしろものです。これを使えば、1本50円のEEPROMから、タイムレコーダ用のIDが書き込まれた「タイムカード」みたいなものを作ることができます。
使い方
- 5Vのアダプタを差すと、液晶画面に表示が出て、起動します。
- ICメモリを左下のICソケット(写真では既にメモリが載っている)に差し込みます。
- 右側に6つほど見えるボタンを押して、メモリの内容を読み込んだり、編集したり、書き込んだりします。
- 書き込みが終わったら、8ピンのメモリは取り外しておきましょう。
編集の方法
操作ボタンは、なんとなく「上下左右」の十字キーと、Aボタン、Bボタンを思わせる作りになっています。そして、予想通りゲーム機とたいして変わらないユーザインターフェースになっています。
- 左右キー(青)を押すと、カーソルが左右に移動します。1行めと2行めの間でも、カーソルが動きます。
- 上下キー(黒)を押すと、カーソルの位置にある数値を上下させます。
- Aボタン(赤)を押すと、現在表示されている内容を、メモリーに書き込みます。書き込みに成功すれば、1行めに「WROK」と出ます。失敗すると「WERR」と出ます。
- Bボタン(黄)を押すと、メモリーの内容を読み込んで、液晶画面に表示します。読み込みに成功すると、1行めに「REOK」と出ます。失敗すると、「RERR」と出ます。
表示の意味
- 1行めの数値は、編集の対象としているアドレスのうちの、先頭にあたるアドレスを意味します。
- 16ビッド毎にアドレスが1進む使い方(16ビットモードで、アドレスの単位は「ワード」)でアクセスしています。そのため、1024ビットは64ワードとなります。
- 一度に編集できるのは4ワード(64ビット)ずつなので、この値は4ずつ上下させられます。表示は16進数なので、表示される値の範囲は00から3cまでとなります。
- この部分の値を変更すると、アドレスが変更された直後に、メモリーから読み込みが行われて、内容が2行めに表示されます。
- 1行めの「REOK」のような表示は、動作の状態を意味します。
- 「REOK」は、メモリーからライタ装置へ読み込みが行われ、成功したことを意味します。読み込みは、画面に表示できる範囲(4ワード、64bit)単位で行われます。
- 「RERR」は、メモリーからライタ装置への読み込みに失敗した時に表示されます。2行めに表示されている内容は、おそらくは本来メモリーに書き込まれている値とは異なったものです。
- 「WROK」は、ライタ装置の液晶に示されたデータを、メモリーに書き込むことに成功した場合に表示されます。書き込まれる範囲は、液晶画面に表示されている部分(4ワード、64bit)です。
- 「WERR」は、ライタ装置からメモリーへの書き込みに失敗した場合に表示されます。間違ったデータが書き込まれたか、書き込みが行われなかった場合などに表示されます。
- 「*」は、編集により液晶画面に表示された内容が、メモリーから読んだ内容から変更されたことを意味しています。この状態では、編集対象とするアドレス(1行めの値)を変更することができなくなります。
- 2行めに表示されているのは、編集中のメモリの内容です。
- 値は16進数です。1文字あたり4ビットの情報量を持つため、4文字で1ワードぶんの情報となります。
- それぞれの値にカーソルを合わせて値を上下させると、値を変更することができます。変更を加えると、1行めに「*」が表示されます。
- 2文字ごとに値はリンクして管理されています。左から偶数個めの値の繰り上がり、繰り下がりは、その1つ左の桁の値へ影響を与えます。
- 編集した値は、Aボタンを押すことではじめてメモリーに書き込まれます。
- Bボタンを押すことで、編集により加えた変更を取り消して、再びメモリーからデータを読み直すことができます。
回路の仕組み
回路としては、PICマイコンPIC16F84Aを中心として、液晶パネルのSC1602SLBや操作ボタンを管理するTC74HC151AP、EEPROMの93C46をつないでいます。
クロック周波数は、わずか32768Hzです。急がず慌てず、これくらいが誤動作しにくくて使いやすいです。
EEPROMとの接続は、CS(チップセレクト)、SK(クロック)、DI(データイン)、DO(データアウト)の4つの信号線からなります。いわゆる3-wireシリアルEEPROMですが、不思議なことに、実際には4か所をつなぐ必要があったりするわけです。
EEPROMにアクセスする方法は、メーカーが出しているデータシートにたいへん詳しく書かれています。最近では、インターネットでデータシートが無料配付されるのが当たり前になっているので、電子工作を楽しむにはとても便利な時代になりました。
ソフトウエアの仕組み
たくさんあるボタンのどれが押されたかを判断して、押されたボタンに応じて必要な動作をします。
特徴的な所としては、ボタンが押されているかを調べる部分で、キーリピートの管理をそれなりに行っているところです。
- 押されていない状態から、押されている状態への遷移では、押されたという情報を格納してすぐに、処理を実行します。
- 前に押されていて、現在も押されていると判断される場合は、カウンタの値が一定値をこえていれば、少しだけ待ってから、処理の実行へと移ります。カウンタの値が一定未満であれば、カウンタの値を1進めて、再びキーの読み取りルーチンまで戻り、時間かせぎをします。
- キーを離すと、カウンタがリセットされます。
こうすることで、キーを押しっ放しにした場合に、
- まずは、すぐに1回動作する。
- しばらくは、待たされる。
- ずっと押しているとリピートがかかる。
という動作が実現されるわけです。
さて、ソースリストは次のとおりです。マイクロチップテクノロジー社が出している統合開発環境MPLABのバージョン6系で使えるものです。
発振器をLPに設定するとかの、コンフィギュレーションビットの設定を忘れずに行いましょう。
ちなみに、外国から「.HEXファイルがほしい」との反響をいただきましたので、掲載しておきます。
Here is the .HEX file for download.
030913a3.hex.txt
File name should be changed which ends with ".HEX" after the download.
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM.
It is possible to build this .HEX file from the source code using MPLAB version 6. MPLAB is available at http://www.microchip.com/.
(こちらがダウンロードのための.HEXファイルです。ダウンロードがすんだら、ファイル名は、".HEX"で終わるように変えたほうがよいでしょう。このプログラムは、無料でライセンスされるので、保証は一切ありません。MPLABバージョン6があれば、ソースコードから".HEX"ファイルが作れます。MPLABは http://www.microchip.com/ で入手できます。)
やってみましょう
- 一般に、電子工作は危険を伴う遊びです。けがや、やけどをしないように、また、作った品物が火事の原因にならないように、安全には十分気を付けましょう。なお、この記事には間違いがある可能性もありますが、お読みになることにより生じた不都合や事故などに対しては、筆者は責任を負いかねます。ご自身の責任において、お楽しみください。
- 上、下、左、右、AボタンとBボタン、というインターフェースを使って、何か作ってみましょう。
としおの部屋 ->
PICマイコンを楽しむ電子工作 ->
EEPROM書き込み装置--ゲーム機のような操作性
製作・著作:杉原俊雄(すぎはら としお)
(c)2003 Sugihara Toshio. All rights reserved.