dfcmx200さん、ありがとうございます。 川島です。 ①から⑤はメイン側の処理で割り込み処理ではありません。 また、割り込み処理に入れば、許可にしないかぎりシステムが割り込み 禁止のまま(NMIを除く)だと思うのですが・・・・ 割り込み処理では、 Ⅰ.送信バッファ空フラグ(TDRE)が1なら、リングバッファよりデータをとりだし て、 送信バッファ(TDR)にセットし、TDREに0をセットする。 Ⅱ.送信するデータがなければ、送信バッファ空割り込みを禁止(TIE=0)にする。 送信するデータがまだあれば、送信バッファ空割り込みは許可のまま。 CPUがどこへいってらっしゃるのかわかればいのですがICEがないもので・・・ > > ③送信バッファ空割り込み許可(TIE=1)にする > > その割り込み処理の中で > TIE=0にして割り込み要因をリセットしないと、 > その割り込みがかかり続けているー>暴走に見える > > ・・・じゃないでしょうか? > > dfcmx200 > > "Hiroaki KAWASHIMA" <SGP01434@xxxxxxxxx> wrote: > > > 澤口さま、どうもありがとうございます。 > > 川島です。 > > > > > > Hiroaki KAWASHIMAさんの<000701c5c0c6$61a79f40$3b01a8c0@nec350>から > > > >・どうも割り込み処理にとんだ時点で暴走しているよう > > > まず、これを確定するのが先ですね。 > > > 実際に割り込み処理に入っているのかいないのか。 > > > 割り込み処理内容を「何もせずに戻る」にすれば暴走しなくなる > > > のですか? > > > > > > > ご指摘の通りとんだ時点というのがあいまいで、よく調べました。 > > プログラムの流れはこんな感じです。 > > ①CPUの割り込みを禁止する > > ②リングバッファにデータをセットする > > ③送信バッファ空割り込み許可(TIE=1)にする > > ④CPUの割り込みを許可する > > ⑤あとは割り込みを待ってそのなかで送信 > > > > で、④をすると同時にどこに飛んだかわからなくなります。 > > 普通に考えると、送信バッファ空割り込み処理にはいるはずですが > > 実際は呼ばれていないようです。 > > > > わかりづらい文になってしまいましたがよろしくお願いします。 > >