2022-05-08 22:53 — asano
カテゴリー:
前回正常に読めていないものがあったのでその理由を考えてみます。
- アクセスタイムが間に合っていない
2つだけというのが引っ掛かります。念のためにオシロスコープでも確認してみましたが十分に余裕がありました。 - 正しく読めているのだがエミュレータがうまく扱えていない
GIMPで表示させてみても同様のパターンなのでエミュレータのせいではなさそうです。 - 外したROMなのでピンが汚れている
ピンには(融かしたばかりの)ハンダが付着していて長年放置して錆びているよりはよほど状態は良さそうです。こてを当て直してみたりしましたが特に変化はありません。
ここでデータシートのある記述を思い出しました。
CS, CEについて「Active level defined at mask level.」とあります。これらの信号が正論理なのか負論理なのかはマスクオプションになっていてデータシートではわかりません。日立からNECへの納入仕様書には書かれていたのでしょうが当然そんなものは入手できません。
実際に試してみるしかありません。
4通りの組み合わせから選ぶ機能を追加して再度読んでみます。
ここで一つ誤算だったのはデータ線をプルアップもプルダウンもしていなかったので正しくセレクトしていなくてもそれらしい値が読めてしまうことです。というか、これが無ければ読めていないことにもっと早く気付いていますね。
ROMの電源を切るようにしていた関係でATmegaの内部プルアップを使いたくなかったためです。ROMの電源をOFFしていてもプルアップからROMのデータピンの保護ダイオードを通して電流が流れてしまいます。プルダウンするかROM電源にプルアップすればよいのですが配線が増えるので省略してしまっていました。
論理を切り替えるたびに画像化して確認すればよいのですが、毎回転送してバイナリに変換するのは面倒です。ATmegaの内部プルアップを有効にすると読めていないときはデータが全て0xFFになるので、それを利用して読める組み合わせを探しました。案の定電流が漏れてROM電源のLEDがうっすら点灯してしまいましたが...
その結果CSは C04, C06 では負論理、C05, C07 では正論理になっていました。CEはすべて負論理です。
参考文献・関連図書:
HN61256P,HN61256FPデータシート, Hitachi.
コメントを追加