怪奇現象の原因が判明

怪奇現象が多発して大混乱している件、原因の見当が付かない以上、小さな確認作業をコツコツと積み上げていくしかない。クロックジェネレータ兼リセットのPIC12F1822に手動リセットの働きを追加。7番ピンと隣のGNDを接続するとリセット信号を発生するようにした。これで手動リセットしてみたら何の問題もなく起動。感動する前に呆れる。前回の投稿で電子工作の神様に泣き言を言ったのが効いたのだろうか。

sbc6800_errfix

原因はリセット期間が短すぎたこと。リセットを解除する条件式でwhile(TMR0IF == 0);と書くべきところがwhile(TMR0IF = 0);になっている。怪奇現象の原因なんてだいたいこんなものなのにボクは謙虚さを欠いた。疑ってかかったいろいろなものに謝りたい。USB-シリアル変換はTTL-232R-5Vで何も問題を起こさない。RTSはマニュアル通りの方法でLになる(ということはJBUGのコメントがバグか?)。お詫びして訂正します。

カテゴリー: 6800 | コメントをどうぞ

大混乱が継続中

エントリーポイントの前にサブルーチンをおくと暴走する件、いろいろ試したところ、エントリーポイントの前に何かしらの命令があると多かれ少なかれおかしな動きをすることが分かった。下の画像はさんざん暴走してから正常に起動した例。ただし、NOPやエントリーポイントへの分岐なら大丈夫。どうやらエントリーポイント(FFFEとFFFFにあるアドレス)を正しく取り込まず、いつもROMの先頭(E000)から実行しているらしい。

sbc6800_err1

症状から推測してアドレスのどこかのビットを認識していない。アドレス線のオープンショートを検査したが正常。PIC12F1822のファームウェアを書き換えてリセット期間を8m秒から24m秒に延ばしたりクロックを700kHzまで下げたりしたが改善しない。プロ野球の監督は試合の悪い流れを変えるためによくバッテリー(電池じゃないよ)を交換する。それにならって日立製作所の6800と6850をモトローラのやつに交換。

sbc6800_err2

もちろんこんなことでスッキリ直ったりはしない。しかし、いつの間にか調子がいい時にはUSB-シリアル変換がTTL-232R-5Vでも動くようになっている(キミを疑ってごめんね)。さらにRTSがマニュアル通りの方法でLになる。これはむしろ困りもの。ダメならダメでいてくれないと直しようがない。ああもうとにかくめちゃくちゃ。電子工作の神様がいるなら教えてください。ボクがどんな悪いことをしたのですか。

カテゴリー: 6800 | コメントをどうぞ

怪奇現象が増殖して大混乱中

6803でうまく動いたプログラムをもとに6800のプログラムを作り直したところ、やっぱり端末が反応しない。端末のインタフェースは6803だと内蔵だが6800は6850だから、6850の初期設定を間違えている公算が強い。信号にテスタを当てたら6850のRTSがLを出力していない。原因がわからず、困り果ててモトローラのJBUGを見ると、あらら、マニュアルに「Hを出力する」と書いてある方法でLを出力している。次に掲載する資料は、上がマニュアルの説明、下がJBUGのソース。

MC6800_RTS2

MC6800_RTS1

これっておかしいでしょ? 絶対におかしいよね。で、マニュアルを無視してJBUGにならったところRTSが無事にLを出力。だからといってこれがマニュアルの誤植だとは断定できない。日立製作所のマニュアルも同じ説明をしているし、大昔の本「私だけのマイコン設計&製作」がマニュアル通りの方法でLを出力している(ようだ)。そして、次のような問題が発生。

JBUGにならったプログラムは、いったん正しく動作した。このROMをとっておいて次の段階へ進む。サブルーチンを若いアドレスへ移動し、エントリーポイントを後ろへ下げた。すると、ただそれだけで暴走。とりあえず元へ戻そうと思い、とっておいたROMへ差し替えたのに、これがまた暴走してしまう。この怪奇現象は、いったい何なんだ。これだけ次から次へと襲い掛かる大問題がいつか笑い話になるなんてことがあるのだろうか。

カテゴリー: 6800 | コメントをどうぞ

6803が動いた

紆余曲折を経て6803が動いた。ポートを使ってLEDを点滅させる試みは最初に成功している。引き続き端末から入力した文字をそのまま表示し、さらにそれを割り込みでやって成功させた。目標は6800を動かすことだからプログラムは6800と共通の命令だけを使っている。6800の命令体系は美しいとか言っちゃっている人(ボクも言いました)、だったらリングバッファを書いてごらん。8080のほうがずっときれいに書けるから。

SBC6803_TERM

6803のプリント基板はゆくゆくガーバーデータを公開する予定だが、現状はいくつかの問題がある。このプリント基板は名前がSBC6803 Experimant Baseというのだがシルクは1行目が別のレイヤーへ行ってしまった。シリアルのピンは三角が1番ピンを指していないし、一般的なCH340G搭載USB-シリアル変換アダプタをつなぐと裏返しになってしまう。できることなら、ひとつ前の投稿で述べた怪奇現象の原因を究明し、TTL-232R-5Vでも動くようにしたい。

SBC6803_ECHO

このプリント基板はもともとDRAMを動かすために作ったもの。DRAMのプリント基板も完成しているがタイミングの設計を保留してあって抵抗とコンデンサの値が確定していない。やりたいことはいくらでもあるが、さしあたり6800を完成させておこうと思う。

カテゴリー: 6800 | コメントをどうぞ

USB-シリアル変換の怪奇現象

6800につないだ端末がウンともスンともいわない件、丸3日、デバッグに取り組んで原因がわからない。調子を掴むために別件で作ってあった6803のコンピュータを動かしてみる。6803はシリアルを内蔵しているから端末まわりの設計ミスがあり得ない。はずなのにやっぱり動かないぞ。ポートにつないだLEDはちゃんと点滅する。端末をつなぐと、あれ? LEDが点灯しっぱなし。ピンときてUSB-シリアル変換をTTL-232R-5VからAE-UM232Rに変更したら動いたよ。

SBC6803_TEST

USB-シリアル変換ではときどきこういうことがある。TTL-232R-5Vは8080のコンピュータだと正常動作するのにモトローラはダメ。つないであると電源を切ってもLEDが点灯しっぱなしになる怪奇現象が起きる。どうやらTXDとRXDから電源が供給されるらしい。インテルで大丈夫なのが不思議。その昔、FT232BMとPIC16F88の組み合わせでも同じ経験をした。まあそれはともかく、これで6800のコンピュータに完成のメドがたった。

カテゴリー: 6800 | コメントをどうぞ

6850がわからない

6800シングルボードコンピュータのプリント基板を組み立てて動作確認をしたところ端末がまったく反応しない。どうも6850が怪しい。6850を抜いてLEDインタフェースを取り付け、ICソケットに正しいチップセレクトと正しいデータが来ていることを確認。しばしLEDの点滅を眺めて悦に入る。ああそれどころじゃないんだった。

SBC6800_LED

端末が反応しないのは、たぶん、6850のプログラムの書きかたを間違っているのだと思う。ぼくは生まれて初めて作った6809のコンピュータで6850を動かした経験がある。どうやったんだっけなぁ。それとも、何かとんでもない間違いを犯しているのだろうか。

カテゴリー: 6800 | コメントをどうぞ

荒っぽいぜ! seeed

スイッチサイエンス経由でseeedに注文しているプリント基板がここ何回かひどい。きのう届いたやつは外形にルーターが食い込んだような凹みがある。いっそのこともっと深く食い込んでいてくれれば保証対象なんだけど、「使用上の問題があること」という保証規定だとぎりぎりセーフか。

P112910

昨年末に注文したプリント基板(MCS-85が動いた参照)は感動的に見事な出来栄えだった。最近の仕事はちょっと荒っぽい。というか、いったいどうやればそうなるんだというような形になっている。「10枚2500円ならこんなもの」ではあるが、そう思わなければならないのは残念だ。

カテゴリー: 世間話 | コメントをどうぞ