[H8-ML(3243)] Re: 割込みによるシリアル通信について
From: Chaya <uuu@xxxxxxxxxxxxxxxx>
Date: 2003年05月24日(土)23時49分25秒
chayaです。

_ei();  _di(); のことですが、たとえが悪いかもしれませんが、

・ _ei(); _di();  ---> メインブレーカー

・ SCI0.SCR.BIT.RIE = 1;   /* 受信割込み許可 */ や
   SCI0.SCR.BIT.RIE = 0;   /* 受信割込み禁止 */ は、
                 ---> 個別ラインブレーカー

と考えて下さい。個別のブレーカーには、  タイマー割込みの許可/禁止など
多数あります。
一般的には、個別のブレーカーをオンした(周辺個別のInitial関数)後、
全体のブレーカーをオンして使い始めます。だから、使い方にもよりますが
メインルーチンのメインループ前にオンします。

私はこんな使い方を良くします。

main(){
    init_SCI();     // SCI初期化 , 受信/送信割込み許可
    init_timer();   // タイマー初期化, 1mS割込み許可
    ・・・・・

    _ei();      // 割込み全体許可
    for(;;){    // メインループ
        ・・・・・
    }
}


> ただ、まだよく分からないのが、
> 
> >_ei();の中身は<sysio.h>を見れば分かりますが、CCRの最上位ビットを0にして
> >いるだけです。つまり全割り込み有効ですね。
> >しかし、これを有効にしても各個機能の割り込みを有効にしないと割り込みは発
> >生しませんので、混同しないように。
> 
> と
> 
> >  4. SCRのRE(受信有効),RIE(受信割り込み有効)を1にする。
> >    (送信もするならTE等も有効に)
> 
> なのです。
> 
>  受信割込み有効 _ei(); と 受信割込み無効  _di();のことが、 
>  YellowScopeのユーザーズマニュアルにも書いてありましたが・・
>  使い方というか?、記述位置というか?、タイミングというか?・・。
> 
> また、
> >  4. SCRのRE(受信有効),RIE(受信割り込み有効)を1にする。
> は、Webによく書かれています、
>     SCI0.SCR.BIT.RIE = 1;   /* 受信割込み許可 */ や
>     SCI0.SCR.BIT.RIE = 0;   /* 受信割込み禁止 */ のことと思いますが、
> _ei(); や_di();と同じものなのかどうかも・・、
> 別物であれば、記述位置(タイミング)は、
> メインルーチンの中でよろしいのでしょうか?・・・・



スレッド概略
[3239(R)](起点)
 └[表示中]
   └[3256(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]