パラレルEEPROMプログラマ(arduinoで使用)を作成してみた その2

arduinoでパラレルEEPROMリーダ・ライターもどきを作ってみた
 前回(上のリンクから読めます)、ブレッドボード上で作成したEEPROMプログラマ。書き込みが不安定なのと、広範囲をリセットしたり、読み込みをするのによくトラブルが頻発しました。今回作ったのもところどころバグが発生してしまう(書き損じが起こる、途中で止まるなど)症状があるのですが、ブレッドボード上という不安定な環境からユニバーサル基板の上にきちんと組みなおし、本格的な使用用途に耐えられるようにしました。(しかしプログラムがまだ不完全で、大規模なデータ書き込みは非常に手間であります。どうしたものか・・・)
外見はこんな感じです。


 一見シンプルで単純に見えます。確かに構造はびっくりするほどシンプルなので回路図を書かずとも作れるという。しかし相手はパラレル構造なので配線は地獄を見ます。

書き込みにはArduinoのシリアルモニターからコマンド入力で操作します。

■単純につないではいけない?信号判定と電圧降下

 また、今回整流ダイオードの代わりにLEDを使用したんです。そしたら動いてるところもばっちり見えて楽しいだろうなと考えまして。(誤作動していても目で見てわかりますし。)
 そしたら、「電圧降下」というものが発生することを初めて知りました。これ何なのかといいますと、ある一定のものを回路の間に挟むとその挟んだものの抵抗によって電圧がどんどん下がるというもの。ケーブルもその仲間に入るので、取り回しを長くしてしまうとどんどん電圧が下がるわけですね。もちろんLEDだって抵抗はあるので、その現象はばっちり起こります。そのため最初LEDを間に挟んでROMから出力された信号を74HC165で受け取る際にトラブルが起こるわけです。今回のライターでROMからデータを出力すると、大体4V~3.6Vほどの電圧で出力されました。そこでもって74HC165のHIGHと判定する電圧の高さは3.4Vほど。あれ?クリアしてるじゃんと思うのですが、この二つの間にLEDを挟むと2.4Vまで電圧が下がるんですよ。そうなると165側ではLOWと判定されてしまいせっかくのHIGHやLOWの信号はすべてLOWと読み取られてしまうんですね。じゃあLEDをつなぐことはできないのかというとそうではなくて、真ん中に挟むのではなくLEDはLEDで並列につないでやれば見ることはできるようになります。それじゃあ整流ダイオードの代わりになってないじゃんということになりますが、今回は幸いなことに165側にはダイオードを挟む必要はなく、595側に必要で、かつ595はROMより高い電圧を出力できる(ほぼ5V)のでLEDの電圧降下分をカバーできるんです。今度から回路を作るときにはこの電圧降下分をきちんと認識して作らないといけないということを痛感したのでした。

■今回のEEPROMライターについて

 今回のEEPROMライターはATMELのAT28C256というROMを書き込むのに特化した回路になっているので、凡庸が利きにくいところがあります。(と言ってもDIPタイプのROMのピンアサインは似ているものが多いので、読み出しはできるという事実。)
 なので、せめてAT28Cシリーズだけでも使えるように改良する必要があります。(一種類だけではちょっと勝手が悪すぎますよね。)
 それから、この前秋葉原に行ったときにこのようなものを手に入れまして。
ジャンク品扱いでなんと棒一本まるまる11個入り500円ぽっきり。

 UVEPROMなのですが、ピンアサインはかなり似ているものの書き込む際にVppに21V(高くない!?)を印加しないといけないそうでして。このシリーズにも書き込みができるように機能を追加したいと考えています。いや、別で作ったほうがいいのかな…
 これでやっとライターはできたのでz80パソコン作成も次の段階に移れます。またスパゲッティと戦うとなると胃が痛いですけどね(´・ω・`)
 書き込みが容易かつ安定してできるようになって回路が整理でき次第プログラムもろもろ公開する予定です。プリント基板も作成したいですね。(というかプリントじゃないときつすぎます。)

コメント

このブログの人気の投稿

ファミコンの完全自作ROM&カセットを作ろう!!その1~立ちはだかるコンパイラの壁~

ファミコンの完全自作ROM&カセット作ろう!〜cc65で起動ROMをつくる〜

74HC595を使ってarduinoの16ビットパラレル出力に挑んでみた