CPU実験室

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

ビット列送出

 
8桁ディスプレイコントローラMAX7219の初期化部分はTLCS90にボードで実績のある設定をそのまま持ってきました。
前述のset_7219()関数で制御レジスタにコードを送ります。
 
イメージ 3
この後、デジットごとに表示データを送ればLEDが点灯するはずなのですが、まずは案の定うんともすうともいいません。
 ちゃんと信号が行っているか、MAX7219に接続される制御線をプローブしてみました。おかしいのに気づいたのが2行目の
         set_7219(0x0C01);
のところです。
波形はこんな感じ。
 
イメージ 1
/LOADをLに落としてからCLKが16発出ます。CLK立ち上がり時のDINのレベルがシフトインされるので
入力データは 0000110000000000 つまり0x0C00 となり何故か最下位の1が消えてなくなってしまっています。
これでは7219をシャットダウンモードにプログラミングしたことになり表示が出ないのは当然です。
 
念のためオール「1」の
 set_7219(0xFFFF);
 
を送ってみると(7219にとっては無効なコードですが)、やはり16クロック目が来る前にDINが0に落ちてしまっています。どうもデータの最下位ビットが無視されてるような動きです。
 
イメージ 2