団塊親父のブログ -4ページ目

団塊親父のブログ

自分の趣味・記録用のブログです。

 ついに10回目、暖かくなってきたので、プログラム作りを終わり、ハード工作に移りたい気持ちが。


DIRとDITのインタラプト出力の実験結果を記録しておく。


1 INT出力は、ステータスレジスターを読み取るまで、アクティブなまま。

  よって、INTのアクティブ時間は、

  ・ INT出力によりAVRがレジスターをクリアし、

  ・ それがINT出力に反映されるまでになる。


 上の写真は、DITのEFTC(CSデータ送出)インタラプト出力。

 入力Fs48k、時間軸1mS、電圧軸2V/スケール。

 DITの設定は、以下のとおり。

 Open drain, active low.

  (Requires an external pull-up resistor on the INT pin.)
 Falling edge active.

 (INT pin becomes active on the removal of the interrupt condition.)

 インタラプト出力間にLRクロックが192個なのでブロック毎出力。

 アクティブ時間が約0.5mSなので、これがAVRからDITへのアクセス時間。


2 DIRのINTの動作が結構微妙

  入力信号(SPDIF)の状態を見るのに、ループ動作で常時レジスターにアクセスするのは精神的に気持ち悪い。オーディオはオカルトみたいなもんだし。

  状態が変化したときだけ、インタラプトを受けてLCD表示を変えようと思ったが。 

 入力Fs48k、時間軸10mS、電圧軸100mV×10/スケール。

 ピン設定は前のDITのときと同じ、動作はRising edge active。

 上の画像は、信号投入時のDIRのINT出力。

 

 なお、画像は最新のものだが、見やすいように加工してある。ww 

 ステータスは、読み取りルーチンを作り、LCD表示で得たもの。

 Hレベルが低いのは、チップのGPO0ピンの不良のためで、ノイズが乗っている。この後、GPO1に変更しての測定では規定値だった。

 CS8416は結構繊細で弱い。

 

3 CCHの2連発

  Fs48kで5mS弱の間隔なので、Fs192kでは1mS程度になり、インタラプト処理ルーチンが追いつかない可能性が高い。

  ただ、2連発なので2発目は無視できる、と言うか無視すべき。


4 信号検出はどれで?

  信号切断では、必ずエラー(アンロック)が出る。この時FDSへの反映が間に合ってなく、PCMビットが立ったままなのでFDSは使えない。

 FDSは検出時にINT発生だが、無信号への変化はそのままとデータ・シートにもある。 ただし、デジタル・サイレンスと96k以上を検出するので、何かの役に立つかも。

  信号投入では、前の画像のようにCCHとFCHが出るが、CCHのタイミングが早い。エラー系はV(バリディティ)が出ることもあるが確定ではない。

  

  割込みによって、I2C通信・LCD制御に不具合がおきるので、割込みが発生しそうなタイミングの時は、割込み禁止が必要。 

 


5 結局

  アンロックが起きた時は、割込み禁止にして、通常ルーチンでPLLのロックを待つ。DIRにPLLロックのフラグが欲しかった。


 ・ PLLがロック(アンロック終了)で、信号状態を表示し割込み許可。

 ・ 受信中でのCS変更・フォーマット変更・エラーへは割込みで対応。


 というところで、プログラムのバグ取りへ進む。