KL5C80A12マイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
KL5C80A12はZ80互換の高速高性能8ビットマイクロコントローラです。
残念なことに数年前に生産中止になってしまいました。
しかし当社ではKL5C80A12を使った組込みマイコンボードはまだ健在です。
そのKL5C80A12を使ったND80Z3.5上位互換マイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第13回]
●ハイテク?での解析
前回書きましたように、今回の試作基板ではMMUの設定値として論理メモリアドレス8000〜FFFFを物理メモリの78000〜7FFFFに割り当てるためにベースレジスタに70を与えるとND80Zモードでキー入力できなくなってしまいます。
ところがTK−80モードではちゃんとキー入力できます。
さらにND80ZモードでもMMUに与える設定値をF0にするとちゃんとキー入力を受け付けるようになります。
勿論最初はメモリに問題があるのかと疑ったり、KL5C80A12基板の問題かと思ったりもしたのですが、メモリも正常ならCPUボードも問題がないことはしっかりと確認しました。
そもそも1回目の試作基板ではそんなおかしな現象はおきていません。
最初のうちは混乱の余り、なんだか超常現象でも起きているかのような錯覚に陥ったりしたのですが、落ち着いてよくよく考えてみますとこれはどうやら2回目の試作基板のどこかにおかしなところがあるに違いない、という結論になってきます。
それにしても余りにおかしな異常動作のためにどこからさぐっていけばよいものか、しばし悩んでしまいました。
悩んでいても埒が明きませんから、とりあえずはMMUに与える設定値を70にして、ND80Zモードでどうしてキー入力できないのかを追及してみることにしました。
それがわかれば何か手がかりがつかめるかも、と思ったからです。
ところがそこのところを追求してみると、キー入力ルーチンの手前あたりでいきなり暴走してしまうらしいことがわかりました。
しかもその出方が一様ではなくて時々で異なっているらしいこともわかってきました。
まるででたらめの動きです。
何らかの理由でCPUがROMからプログラムを読み込むのに失敗しているか、あるいはRAMに書いたスタックデータが突然変化してしまうかのような異常な動きです。
そういうことから考えて、ひょっとするとバンクメモリアドレスを指定しているA18〜A15のどこかにハンダ付け不良があって、それでCPUがメモリの読み出しに失敗してしまうのでは、と考えました。
ハンダ付け不良の場合には、ローテクな方法ですが基板回路のあちこちを手でべたべたさわったりすると現象に変化が出て、それでその場所を特定することができたりします。
それも試してみたのですが、目立った結果は起きませんでした。
いや。
後から考えてみると、一度だけハイアドレス(A18〜A8とMEMRD、MEMWR)を配したコネクタの近くをさわったときに、あれっ?というような変化があったのですが、どうもさわり方が中途半端だったらしく、その後はそのあたりをさわっても変化は確認できませんでした。
このときもう少しそのあたりを追求していたら、もっと早く原因を特定できたかもしれません。
しかし今回の場合にはこのローテクな方法もなかなかに難しかったのです。
なにしろ効率よくベタベタさわるためには、基板の裏側をさわらなければなりませんし、現象を確認するためには、基板を立てた状態で片方の手で基板の裏側をさわりつつ、もう片方の手でリセットしたあとキー入力してみなければなりません。
やりにくいったらありません。
なので後から思えばもう少しで核心にせまりながら、結局この方法はあきらめてしまいました。
そういうことになりますと、ローテクはあきらめてやっぱりハイテクでいくか、ということになります。
ハイテク?
ここに至るまでの間時折頭の中でチラチラとしているものがありました。
あれか?
やっぱり。
ロジアナだなあ。
ずっと以前に修理品のMYCPU80の異常動作を追求するために作成したプログラムの解析ツールです(MYCPU80でCP/Mを[第18回])。
しかし。
もう3年以上昔の話です。
カメレオンロジアナにも解析用のプログラムを書き込まなければいけませんし(どうやってやるんだっけ?)、このときはMYCPU80に接続するためにかなり面倒な接続用ケーブルを作成したのでしたが、それも今回用に作り直さなければなりません。
そのようにしたところで、原因が特定できる保証はありません。
なんとなく今回はその方法を使うのは気が進みませんでした。
いえ。
CPUの動作を記録して、キー入力ルーチンの前後でどういう動きをしているのか、そこを明らかにしたいという気持ちはあります。
しかし、その一方で、今回はその線は弱いなあ、という何と言いますか長年の経験からくるカンのようなものが、その線は違うぞ、と言っているように思えます。
それをするよりは。
やっぱり普通のカメレオンロジアナの使い方で、アドレスバス、データバスと制御信号の波形を捉えてみたほうが手っ取り早いような気がします。
リセットをかけてすぐ、最初のキー入力のあたりまでの波形が捉えられれば、波形から何かのサインが読み取れるかもしれないと考えました。
手っ取り早いとはいっても、これもなかなかに面倒な作業ではあります。
なんたって、こーんなことをしなければなりません。
右下に見えているのがカメレオンロジアナです。
うむむ。
これが果たしてハイテクといえるのか?
ハイテクというよりも、むしろムリムリの力技であります。
それはともかくとしまして、やっとのことでここまでの準備をして、カメレオンロジアナで波形を捉えてみましたところ。
意外なことがおきてしまいました。
実はこの写真をよーく見ていただきますと、その意外なことが見えているのです。
さて?
というところで。
次回に続きます。
KL5C80A12マイコンボードの製作[第13回]
2018.2.5upload
前へ
次へ
ホームページトップへ戻る