2019-12-22 23:08 — asano
カテゴリー:
以前、MN1613のリセット時に何かあるようだと書きましたが、このまま放置するのは気持ち悪いので少し追ってみることにしました。
16チャンネル以上のロジアナでもあれば簡単なのでしょうが残念ながら持っていません。
幸いMN1613のメモリアクセスはハンドシェイクなのでそれを利用してステップ実行を試みることにします。
手っ取り早く追加してみたのがこの回路です。
正確には追加したのはプルアップ・プルダウンの左側のみです。ジャンパを両方切ればBSAVは"H"に、DTAKは"L"とアクティブなままとなって通常動作になります(変更前と同じ)。
もっと簡単にするにはプルアップ・プルダウンをはずしてBSAVとDTAKを直結すればインバータも不要にできます。ただその場合は通常動作に戻しにくくなるのでこのようにしています。
ステップ回路は普通タイミング検討が厄介なのですが、MN1613は幸運なことにバスの使用権と実際のアクセスの2つが交互に出るのでそれを利用して回路を簡略化しました。
- BSRQが出力されて、BSAV待ちになる
- 本回路に"H"を入力してBSAVに"H"を出す ⇒ 先へ
- DTSDが出力されて、DTAK待ちになる
- 2.でDTAKは"H"になっているのでとまる
- この状態でデータバスやアドレスラッチなどの信号を観測可能
- 本回路に"L"を入力してDTAKに"L"を出す ⇒ 先へ
- 1.に戻る
"H"を入れても"L"を入れてもどちらかのポイントで止まるのでタイミングを細かく考える必要がありません。
極端な話トグルスイッチを付けてもいいのですが、チャタリング除去はさすがに必要なので、EMILY Boardのマイコンに頼ることにしました。コマンドを追加して"H"/"L"を出せるようにしておきます。
DTSDにカウンタを繋いで動かすと確かにメモリアクセスごとに止まっているようです。
リセット解除してもCSRQ/RUNはすぐに"L"にはならず、メモリアクセス2回の後"L"になるらしい(STR
, IC
読んでからか)といったことがわかって面白いです。
ところが肝心のアドレス・データを調べ始めたところおかしな現象が出てしまいました。
テスタで1ビットずつチェックしていると突然CPUが走ってしまうことがあるのです。時間はまちまちなので何らかのタイムアウトとは考えにくいのですが、まだよくわかっていません。ハンダ付け不良やコネクタの接触の問題などで意図しないパルスが出てしまっているのかもしれません。
基板のチェックもしつつ、アドレス・データをLED表示するボードを用意してみるつもりです。
コメントを追加