シリアルコントローラの初期化ができたので引き続き1文字出力ルーチンを作っていきます。
ステータスレジスタSRAを見るとBIT3に送信バッファ空:TxEMTがあるのでこのフラグをチェックしました
1文字出力ルーチンTXのコーディングはこうなります。出力するキャラクタをプッシュしてTXを呼ぶと送信バッファTXRAにデータが書き込まれます。そのあとステータスレジスタのTxEMTがセットされるまで(送信データが送出完了するまで)ループします。
このルーチンをLEDチカチカプログラムに組み込み、いつものようにインクリメントデータ垂れ流しをやってみました。
リセット解除直後の波形:
ch1:SCN2681チックセレクト/SIOCS、ch2;書込みイネーブル/WR,ch3:送信データTXDA
シリアルコントローラに初期化コマンド列を12回、送信データ0x00を13回目に書き込んだあとTXDAがLowになり0x00を送出し始めています
Low期間が約234uS(1/38400baud×(8bit/char+1stopbit))の間つづいて0x00の送出は完了しますが、何故か次のキャラクタに進みません
最初のキャラクタ送出後はステータスレジスタの読み取りが延々と続いていてTxEMTがセットされるまで待つループから抜けられないようです