下準備ができてやっとAD1847の初期化になりますが、前述の通りバッファにコマンドワードを書き込むと勝手に送信されてしまいます。初期化コマンドチェインinit_cmds[14]を割込みごとに1ワードづつ送るために初期化のためだけの割込みルーチンframe_intの中でインデックスをインクリメントしています
SPORT0の割込みを許可することで初期化が開始され、ループカウンタafが0になるまで繰り返しています
14個のコマンドチェインを書き込んだ後、初期化の完了確認、後始末をしているようです。そして最後に大ワザ・・
SPORT0の割込みベクタに書かれていたJUMP frame_intをJUMP echoに上書きしてしまいます。これでそれ以降のフレーム割込みではechoが実行され入力信号をA/D変換したデータをそのままD/A出力する、という動作を繰り返すことになります
初期化時だけ実行される割込みルーチンと、その後の連続動作で実行される割込みルーチンを切替える巧妙なプログラムです。ただし自己書き換えしてしまってるので、リセット、コールドスタートしても再起動できません。もういちどDLLしてやる必要があります
これでいちおう全体的な流れは把握できました。このボードのプログラミングはこのループバックプログラムを雛型にして細部を修正していけば良さそうです