Chaya様、ありがとうございました。
>・ _ei(); _di(); ---> メインブレーカー
>・ SCI0.SCR.BIT.RIE = 1; /* 受信割込み許可 */ や
> SCI0.SCR.BIT.RIE = 0; /* 受信割込み禁止 */ は、
> ---> 個別ラインブレーカー
メインブレーカーと個別ラインブレーカーの話、
大変よく分かりました。
また、使うタイミングについても、
>一般的には、個別のブレーカーをオンした(周辺個別のInitial関数)後、
>全体のブレーカーをオンして使い始めます。だから、使い方にもよりますが
>メインルーチンのメインループ前にオンします。
とのこと、とりあえず分かりましたが・・・
すみません。これでも少し不安が残りまして、
周辺個別のInitial関数??・・・が、特にない?・・
よく分かっていませんが、・・・
具体的に、個別ラインブレーカーの使う場所は??
理解が悪くてすみません。
ご教授の程、よろしくお願い申し上げます。 (鈴木)
(C言語、マイコン開発は、数ヶ月の初心者です。)
----------------------------------------
私の現状のメイン関数は、
void main(void){
char STR; /*受信文字列*/
int FLG=0; /*割り込みでのデータ受信フラグ*/
sci0_init(); /*シリアルポート0の初期化*/
_ei(); // 割込み全体許可(Chaya様からのご教授)
while(1){ // メインループ
・・・・・
if(FLG){ /*割り込み受信フラグ*/
printf("");/*文字列表示*/
FLG=0;
}
}
}
その他の関数は、
(1)シリアルポート0の初期化関数 [3239]に記述。
(2)割り込み時の動作関数 []
・割込みで1文字受信する関数
char intrxi0(void){
char data;/* 受信データ変数宣言 */
switch(SCI0.SSR.BIT.RDRF)/* 受信状態判定 */
{
case 1:/* RDRF=1 正常受信 */
SCI0.SSR.BIT.RDRF = 0;/* 受信フラグクリア*/
data = SCI0.RDR;/* data 取り出し */
return(data);
default:/* エラー発生時 */
SCI0.SSR.BYTE &= 0xc7;/* エラーフラグクリア */
return(0xff);
}
}
・受信文字列を変数に保存する関数
-- (YelowSoftのProjectに割り込みを登録する関数)--
int str_read(){
int i;
char rx_data;/*受信データ*/
char *p;/*ポインタ変数*/
p = &STR;
do{
rx_data = intrxi0(); /* 1文字受信 */
if(rx_data != 0xff){
*p = rx_data;/* 1文字を文字列に格納 */
p++;/* 次の文字アドレスへ
}while(rx_data != '\0');
FLG = 1;/**/
}
以上です。
----------------------------------------
※予定の動きとしては、
受信割り込みにより、str_read()関数が動作して
変数STRに文字列の全体が取り込まれる。
私設の受信フラグ(FLG変数)を1にする。
FLGが1になったら、printf文で、文字列(STR)を表示する。
----------------------------------------
----
鈴木 tsuzuki@xxxxxxxxxxxxxxxx