CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

TMS3631制御(3)

電源系の心配がなくなったところで改めてハードデバッグを再開しました。CE、wck信号の極性を正論理、尚且つPMOSロジックにおける真(=1)をマイナス電位であると仮定してピン制御を書き直しています

メインルーチンでは内部の8チャンネル分のレジスタに全てCEをアクティブにしたまま定数KEYDATをセットしていますがKEYDATと発生音程と関係はまだ不明です。

この状態でKEYDATを色々変えて何度も実行してみると何かのはずみに方形波が出てくることが確かにありますがなかなか安定しません。これは内部レジスタに同一ポートからシーケンシャルにアクセスするとき、それを指すステートカウンタが電源ON直後は不定なんでは?と直感的に気付きました。

たとえば8251をプログラミングするとき電源ON後、内部状態がどうなっていても確実にモード設定できるように0x00を3発ダミーで書くような何らかの方法があるはずですが内部のシーケンス仕様はメーカ資料を当たるしかありません 

TIのデータシートは出てこないのでTMS3631を記事にしているトラ技となるとCQ出版国会図書館へ資料照会となりますが、ただいろいろやっているうちに「CEをネゲートした状態でwckを何回か空打ち」するという初期化を入れてみると、これでなんと百発百中正常起動しました。やり方として合っているのか、はたまた単なるまぐれなのかはこれも全く判りません。

 

ともあれ出力が安定したのでKEYDATと音程の関係を調べていくことにします。以下の出力例はKEYDAT=1の場合で約523Hzの方形波が出力されています。マスタクロックは2MHzなので3824分周されていることになります