まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

ArduinoMEGA

Arduino MEGA直結ROMリーダーのトラブル

※追記 27512(64Kバイト)まで対応のソフトができました → readROM27512.ino Intel HEX対応


 ROMライタTL866CSでは読めないマスクROM(TMM2364P)があったので、Arduino MEGA用のアダプタを作った。秋月電子の片面D基板、ピンヘッダははみ出るので少しけずっている。
IMGP3589

 Vcc-GND間に3.3μFの電解コンデンサと0.1μFのセラミックコンデンサ。
IMGP3590


 ROMの端子とArduino MEGAのピン番号の対応は以下のとおり。27512の場合はROM(1)がA15、ROM(27)がA14、ROM(26)がA13。
あとpin52にタクトスイッチを繋いでGNDに落としている。これはPROMダンプ開始用。
readROM


 さて、こんな単純な配線なのにArduinoスケッチを書いて読み込んでみるとデータが化ける。なぜだ。
IMGP3588

データの読み込みが不安定な時点で以前の経験を思い出すべきだった。
ここでやるべきだったのはアドレスと制御線の見直し、ソフトでの初期化だった。


 解決までの顛末は以下のスレッドにある。

 さて、解決までには間違った道をどんどん進んでいっているのだが以下に整理しておく。

・ハードウェアの絞り込み
PROMの2764/マスクROMのTMM2364P/W27C512で読み込み時のデータ化けが発生する。W27C512に特定のパターンを書き込んだものを調査対象とする。

・Arduino MEGA 2560のバリエーションによるものかどうか
互換品を3つ持っていたのでそれぞれで確認。どれも同様に発生するのでArduino MEGA個別についてまわる問題ではない。1枚を選んで調査対象とする。

・類似例の調査
どこかのだれかが同じようなことをしていないか検索。あった。
これによるとほぼ同等のハードウェア構成で成功している。ブレッドボード上にPROMを載せてジャンパ線でArduino MEGAに繋いでいるので電気的にはより条件が悪いはずだが動いている。

・土台の確認
上記、The Oddbloke geek Blogのコードをこちらのボード向けにピンアサインを変更し、ダンプを5回実行して結果を比較。5回とも問題なし。

ここまででソフトウェアの違いに問題点が隠されているとわかった。前後してデータ化けの発生率が変わるようなコードの変更(主に時間的なタイミング)をいじっては観測を繰り返している。挿入するディレイによって化け方の頻度が変わるなど、ハードウェアのピンが浮いているような指摘を受けている。

・知恵を借りる
デバッグの状況は適時tweetしていた。こまめに書くことで気付くこともあるし、識者からのツッコミもある。このあたりで泥沼にハマっていたら@mkogaxさんよりコードの初期化漏れの指摘が。
PROMのA15についてArduino MEGAからの出力設定はされていても値が設定されていなかった。この状態で確認したらA15はオープンだった。修正し、ダンプを10回とって比較したら全部OK。

以下は23行目に初期化の抜けがあるコード。


 ということで思考の過程を整理してみました。動物が沼にはまってもがいている様子がわかると思います。突っ込んでくれた皆さんどうもありがとうございました。

 ちゃんとしたPROM読みのコードは次回。



Arduino MEGA用ブレッドボードシールド

 はんだ付け不要のかんたんな工作です。

 ブレッドボードの片側の電源ラインを外すとArduino MEGAサイズにぴったりだったのでピンソケットを側面に接着してブレッドボードシールドを作りました。

 ブレッドボードは出っ張り部分をカッターナイフで削り、ピンソケットをセメダインスーパーXなどで接着。ピンソケットは10Px1、8Px5。それだけ。

2019BB1

2019BB2

2019BB3




記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ