お世話になります、上田様。木村です。
> この行があると、sci2_tx実行時に、TDREが1になっていない
と思います。
削除して動作させてみましたが、変化ありませんでした。
---------------------------------------
ROMに書き込んで動作させていましたが、書き込み回数が
気になりだしため、シミューレータで動作させようと
思います。歩調同期シリアル通信はシミュレータで
対応しているでしょうか?(実際やってみると
データ送信関数内で止まります。止まる原因が
プログラムなのか、シミューレータ未対応なのか
判別できません)
よろしく御願いします。
> こんにちわ
>
> > void init_sci2(void){
> > int i;
> > volatile unsigned char tmp;
> >
> > SCI2.SCR.BYTE = 0x00; // 0000 0000 //
> 設定終わるまで送
> > 受信禁止
> > // スマートカードインタフェースを使用しない
> > SCI2.SCMR.BIT.SMIF = 0;
> > //シリアルモードレジスタ
> > SCI2.SMR.BYTE=0x00; // 0000 0000
> > // シリアルボーレートレートレジスタ
> > //SCI2.BRR=23; // = N(Err rate 0% 19.2kbps)
> > SCI2.BRR = 47; // = N(Err rate 0% 9600kbps)
> >
> > // 1bit以上待つ
> > for(i=0;i<50;i++);
> >
> > // シリアル通信ポート(Aポート)の入出力の設定
> > PA.DDR = 0x0A; // 0000 1010 A1:TX A2:RX A3:LED
> > SCI2.SSR.BIT.TDRE=0; // clear(set 0) only
> writable
> >
> > SCI2.SCR.BYTE = 0x30; // 0011 0000 通信を許可
> >
> > return;
> >
>
> の
> > SCI2.SSR.BIT.TDRE=0; // clear(set 0) only
> writable
> を削除してみてください。
> SCI2.SSR.BIT.TDRE=1になる条件は、SCR(TE)=0を設定すると
きなので、
> この行があると、sci2_tx実行時に、TDREが1になっていない
と思います。
>
> 上田
>
>
>
>
>