スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2008-3-25 0:25 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3095 |
ロジアナでリセット直後の動作を見てみた ようやく32本分のポッドグラバを作成したので、せっかくだからロジアナでHP3456Aのリセット直後の動作を観測してみることに。
ちょっとクリップが隣のピンとショートしたりしてセッティングに手間取ったものの、なんとかアドレスとデータそれに重要な制御信号を取り込めることを確認。 さっそく電源投入直後のリセットスタート後の動作を見てみることに、CPUのリセット信号の立ち上がりでトリガをかけるようにしたら電源を入れると同時にトリガがかかりうまくとれた。 みてみるとさっそく驚愕の事実が明らかに。 リセット時に$FFFE,FFFFにあるリセットベクタを読み出しにいきその内容は$D8A3でROMの内容と一致している。$D8A3にはインデックスレジスタへの即値ロード命令(LDX #00FF)があり、それも正常に読み出され、次ぎにインデックスレジスタのストア命令(STX @0101)が読み出され実行されている。ここで最初のRAMへの書き込みが行われている。書き込まれた内容は先ほどインデックスレジスタにロードした#00FFの16ビット値であることも確認。続いて実行されるのがスタックポインタへのメモリ参照格納命令(STX @0101)、直前にRAMに格納したインデックスレジスタの内容を今度はスタックポインタにロードしている、しかし、RAMアドレス$0101が読み出されているが、データバス上にはどう見ても直前に書き込んだはずの#00FFが出て来ていない。 これではスタックがめちゃくちゃになってしまう。 リセットスタートルーチンの命令シーケンスは以下の通り、 $D8A3: LDX #00FF ; set stack pointer to $00FF $D8A6: STX @0101 ; $D8A9: LDS @0101 ; $D8AC: CLR @3800 ; initialize $3800 $D8AF: LDA #01 ; set $0107 to 1 $D8B1: STA @0107 ; $D8B4: CLR @0197 ; initialize $0197 $D8B7: JSR @D3BC ; call $D3BC ここで最初のスタックへの戻りPC($D8BA)のセーブが行われるが、先にスタックポインタが意図したアドレスを指していないので意図しないRAM領域に戻りPCを書き込んでサブルーチンへ制御が渡る $D3BC: JSR @A841 ; call $A841 更にサブルーチンがネストしてスタックに戻りアドレスがセーブされる($D3BF) $A841: LDA #0F ; set #0F to $A843: STA @01EE ; $01EE $A846: STA @01D8 ; $01D8 $A849: STA @01D7 ; $01D7 $A84C: STA @01D6 ; $01D6 $A84F: STA @01D5 ; $01D5 $A852: STA @01D4 ; $01D4 $A855: STA @01D3 ; $01D3 $A858: STA @01D2 ; $01D2 $A85B: STA @01D1 ; $01D1 $A85E: CLR @01F4 ; $01F4=0 $A861: CLR @01F3 ; $01F3=0 $A864: RTS ; return to caller ここでスタックに格納された戻りアドレスを読み出すが、書き込まれて居るはずの値($D3BF)とは異なる$367Fが読み出され、$D3BFではなく$367Fへ制御が渡って暴走。 明らかにRAMへの書き込みが正常に行われていないか、RAMからの読み出しが正常に出来ていないのいずれかであろう。 RAMが悪いのかその制御回路が悪いのか切り分ける必要がありそう。 P.S 後で良く考えたら、HP3456AのRAMは$0000〜07FFまでの2KBしかないので、最初にスタックポインタをセットする$0101に書いた00FFがその後正常に読み出されない時点でおかしい。たまたま読み出されてサンプルされた値は既にRAMアドレス空間ではなく周辺I/Oの空間なので結果はお察しの通り。ROMプログラムは$A000〜FFFFまでなのでこれ意外のアドレスを走行していればそれは暴走にほかならない。 |
webadm | 投稿日時: 2008-3-10 5:56 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3095 |
SRAMの代替品 予めSRAMを交換することを想定して代替品を探しておくことにする。
HP3456Aには古いMOSTEKの8Kbit SRAM MK4118が2個使用されている。 同じ容量の互換品も既に入手困難。 唯一ピンコンパチの上位版16Kbit SRAMが流通在庫で手に入る。 SHARPが製造していたLH5116というのが秋葉原で手にはいる。8Kbit品ではラッチイネーブル信号だったのが拡張アドレスA10に変更になっている。ここはHP3456Aではプルアップされているので問題無い。そのまま換装するだけで良い。 とりあえず2個は確保しておかないと。 もうだいたいSRAMに山を張って交換してしまってもいいのだろうけど。どうせ交換するなら。 一応シグネチャアナライザでROMに問題が無いことは確認しないと。それとロジアナでRAMアクセスの挙動を見て書いたのが正しく読み出されているかそうでないのか見てみないと。 |
webadm | 投稿日時: 2008-3-10 4:18 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3095 |
マニュアルリセット時の挙動 HP3456Aはハードウェアマニュアルリセット回路が無い。
フロントパネルにあるRESETキーは他のキーと同じで割り込みを発生させCPUのソフトウェアがそれを認識するだけでハードウェアのリセット信号とは無関係である。 パワーオン時のリセット信号生成はもちろん回路があり、電源投入直後+5V電源の出力が安定するとアサートされるPower on ready信号生成回路が電源基板上にあり、その信号を使用してCPUへのリセット信号を生成している。 電源回路のPower on ready信号生成回路は出力がオープンコレクタで、内部に弱いプルアップが施されているクロック生成ICのパワーオンリセット信号入力ピンに接続されている。従ってこのPower on ready信号をGNDに落としてやればCPUへのリセットがアサートされる。 実際にPower on ready信号をGNDに落とすとCPUのリセット信号がアサートされた。 これを利用して好きなだけ任意のタイミングでCPUをリセットスタートさせることが出来る。そうすればロジアナでリセット直後からのメモリアクセス挙動を調べることができる。 実際にやってみると、リセットを繰り返しかけると毎回の挙動が電源リサイクルと比べ変化が乏しく同じ状況を繰り返すか、微妙に異なる挙動を起こすだけにとどまることが判明した。 電源を切らないのでRAMの状態が以前とほとんど変わらないためだと思われる。 電源リサイクルの時は、かなり入れ直す度に挙動が大きく変化することが多いのに対してリセットだけの繰り返しはメモリの内容に変化が生じないためか大きく挙動が変わるということは期待できない。 すると挙動を大きく変化させているのは電源リサイクルによるSRAMの初期状態の著しい変化がもたらしているのかもしれない。 それとオリジナルのジャンパーJ10の機能が判明した。回路図を見ると最後のROM(最も高いアドレスにあるリセットベクタ等を保持する)の内容から、J10をSAに切り替えた場合、リセットベクタが本来のFFFE,FFFFではなくA3が0となったFFF6,FFF7となることが判明した。ROMは自作基板で3つのROMを1個の27C256に換装してしまったので、そのままではJ10が意図した通り機能しない。 そこで同様の機能をROM基板上の回路に追加してSAを用いたチェックができるようにしておく必要がある。 FFF6,FFF7にはA000が格納されている。これはA000(最初のROMの先頭)から実行せよという意味である。おそらくそこにRAMやペリフェラルの読み書き処理が置かれているのだろうけど。 とりあえず今のROM基板ではそれに対応するにはもうひとつぐらい標準TTL ICを増設する必要があるので後回し。 その前にロジアナでマニュアルリセットスタート直後のCPUの動作を追ってみよう。 |
webadm | 投稿日時: 2008-3-10 3:46 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3095 |
Keyboardの動作は正常 サービスマニュアルを見ると、フロントパネルのキーを押すたびにCPUに割り込みが発生する回路になっているらしい。
故障診断でもこの割り込みが発生するかどうかひとつひとつキーをチェックしていけとある。 やってみたら、すべてのキーで割り込みがトグルされることを確認した。 しかし電源を入れた時の状態によっては最初のキーを押したとたん/IRQがアサートされデアサートされないという現象が起きる。これは回路からみるとキーボードクリアストローブ信号がCPUによってアサートされない場合にそうなる。 割り込み発生と同時にどっか吹っ飛んでしまって本来割り込み処理の延長上で行われるべきキーボードクリアストローブ信号のアサート処理が行われななかったためであろう。 |
webadm | 投稿日時: 2008-3-9 22:03 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3095 |
HP-IBアドレスの表示 仕事が片づきだしたので止めていた趣味のジャンク測定器いじりを少し再開。
時々好きな事をやらないと本業にも支障が出るらしい。 なんかこう頭がぼーっとなるというか脳細胞の神経伝達が悪くなるというか。 きっと脳細胞の遺伝子が活性化されなくなってしまうのだろう。 本題に戻ろう。 実は現在取り組んでいるHP3456Aの修理だが、電源を入れるたびに挙動が変わることは既に書いた通り。 しかしまったく暴走しているわけではなく、時々希にLED表示にまともな表示をして止まる時がある。 これはHP-IBの設定値を表示しているところでうまい具合に止まった時に撮影したもの。 HP3456Aのサービスマニュアルには以下の様に説明されている。 75というのが背面のdipswに設定されているHP-IBアドレスとは違っている。設定は5ビットしかないのでそもそも31を超えた値になるはずがない。おそらくRAM格納した際に正しく書き込まれていないか書き込んだ値が正しく読み返せていないためと思われる。 いろいろロジックチェッカーでアドレスデコーダとかの出力信号の状態を観測しながら電源投入をするとそれに応じてだいたい同じようなところで止まる場所が決まっているように見える。 これはHP3456と綺麗に表示している。マニュアルによると電源投入時にHP-IBアドレスが表示される前に一瞬だけ表示されるとある。 つぎは割とまともにHP-IBアドレスが表示された時のもの。これも常に表示されるとは限らない。 今度は25と表示されているが実際に設定されているのは23である。 やはりSRAMかその周辺ロジックが怪しいか。よくあるらしい。 この表示をすることはROMを換装する前から確認しているので、ROMは問題なかったかもしれないのだ。 シグネチャアナライザをはやいことこしらえてRAMかどうかの切り分けをするか、ロジアナでRAMアクセスだけキャプチャして読み書きが正常に行われているかどうかだけ調べる必要がありそうだ。 |
webadm | 投稿日時: 2008-2-19 9:25 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3095 |
LCDモジュールインタフェース 以前海外のマニュアル販売業者からPDFでHP3457Aのサービスマニュアルを購入したのだが、それには肝心の交換部品表や回路図がまったく無く、校正方法しか載っていんかった。
その後オークションで完全な形のサービスマニュアルを手にいれて、ようやくLCDモジュールのインタフェース信号を確認した。 それを見ると想像したのとはまるで違っていた。 やはり時代が古いので、現在業界標準となっているマイコン内蔵のパラレルインタフェースではなかった。がっくし。 それもそのはず、このLCDは現在主流のドットマトリックスではなくマルチセグメントLCDである。ドットマトリックスは縦と横の格子の交点のセグメントをそれぞれ制御するのでドットを組み合わせて任意のフォントの文字を表示できる。一方これはマルチセグメントLEDと同じで有限数の決められた位置と配置のセグメントで限定された英数字のみ表示できる。なので同時に制御するセグメント数がドットマトリックス型と比べて格段に少ない。 回路図を見た限り、ちょうどそれはラッチを内蔵したLCDドライバーチップとのシリアルインタフェースである。JTAGのようにビットシリアルで各セグメント毎に対応したラッチビットを外部からロードすることによって表示内容を更新する。回路的には外部にラッチ付きのバッファを接続し、マイコンで一定のタイミングで信号を連続的に変化させて各セグメントの制御ビット値をLCDコントローラーにロードする。それを定期的に繰り返せば、表示を更新することができる。 有る意味、同じ個数の16セグメントLEDがあればCPLDとかで同じ動作をするものが作れることができそうである。 |
webadm | 投稿日時: 2008-1-6 22:10 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3095 |
またまたおジャンクなHP3457A 今朝目がつぶれた可哀想な猫が運び込まれてきた
これでHP3457Aは二匹目である。 液晶表示がまるでダメ。 フロントパネルには痛々しい引っ掻き傷があるもののそれを除けば端子も折れたり曲がっていないのでもう一匹よりも良好。 前の持ち主によれば自己診断でエラーが出るということだったが、電源投入時に一瞬ERRのところのマーカーが点くが、セルフテスト機能ではERRは表示されない。たぶん電源投入時に液晶表示がすべてONになるのでそれと勘違いしていたのかも。そういう意味では既に持っているセルフテストでHardware Errorが表示されるもう一匹よりも良好な状態である、液晶部分を除けば。 もう一匹の液晶をこちらに付け替えれば完璧である。 この液晶表示器はよくあるLCDモジュールの様にマイクロコントローラが乗っていて12桁の英数字記号が表示可能な18セグメント表示とマーカーサイン(▼)が表示できる仕様のもの。おそらく18セグメントとマーカーサインが表示できるのはHP特注仕様と思われる。通常よく見かけるのは英数字のみ可能な16(15)セグメント表示のものだ。 液晶表示器をとりはずそうと思って良くみたら取り付けに特殊ネジが使用されていた...orz これ似合うビットのあるドライバを持っているが、ビットのケースがどこにいったか不明。また後日探してやってみよう。 |
webadm | 投稿日時: 2007-12-16 19:58 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3095 |
おジャンクなデジタルマルチメーター 既にデッキトップ型で初期のHPのディジタルマルチメーターTR3468というのを持っているが、同時期に複数箇所を測定するのに一台では観測点をとっかえひっかえ面倒なのでもう一台欲しいと思っていた。
ちょうど外観が損傷していて処分価格で出ていたHP3457Aという古いけど計算機能とかが付いてHPIBでリモート制御できるタイプのものを落札。 出品者の写真では抵抗測定用の端子と液晶パネルが損傷を受けて奥に引っ込んでしまっている以外は動作している雰囲気。 早速届いたので中を開けて液晶表示モジュールの損傷具合を確認。廃棄処分された際にやはり産廃トラックに放り投げられたかしてその時に他の機器と衝突して損傷したくさい。液晶を固定する樹脂部分が欠けて無くなっていた。これならメンディングテープを貼り付けて固定すれば当座は問題無い。液晶の表面のガラスも割れているが幸いなことに表示機能そのものは生きている。 壊れた抵抗測定端子はめったに使わない低抵抗測定用の4wireモード専用なので問題無い。必要であればリアパネルに無傷の同じ端子があるのでそちらが使える。 本当は抵抗測定専用端子のもう片方は少し傾いた状態で生きていたが、直そうとしてひねったら材料が真鍮ではなく銅だったのでぽきりと簡単に折れてしまった。こういうところにちゃんと銅を使っているのはさすがだと思う。強度は弱くなるが導通抵抗は少なくなる。 リアパネルの電源電圧選択スイッチを何気なくみたら、何故か120Vの設定になっていた。100Vの設定があるのでそちらに変えておいた。もともと北米仕様のまま使っていたのだろうか。 測定してみたところ非常に素早い応答で測定値も安定している。周波数帯域も1MHzまであるのでACレベルメーターとしても十分使える。このモデルは後継の3458Aというので大幅に性能向上したのでディスコンになってしまっている。それでも測定レンジが広く電圧は10nV、電流は100pAが最小単位という未だに他社のものより一桁上を行く優れものだ。 大変良い買い物だった。 |
« 1 ... 7 8 9 (10) |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |