[H8-ML(3239)] Re: 割込みによるシリアル通信について
From: tsuzuki@xxxxxxxxxxxxxxxx (鈴木)
Date: 2003年05月24日(土)21時04分58秒
鈴木です。
天池様、ご返事遅くなりましてすみません。
重ねてのご回答ありがとうございました。
また、丸入り数字の件すみませんでした。括弧で書くと良いのでね(^^;

さて、
(1)初期化関数の作り方
  void sci0_init(void){
    SCI0.SCR.BYTE = 0x00;   /* SCI0設定 stop,内部クロック */
    SCI0.SMR.BYTE = 0x01;   /* data8.stop1,pari non Clockφ/4(1) */
    SCI0.BRR = 80;          /* 25MHz Clockφ/4(1) 2400bps */
    #asm nop                /* Wait 1bit transfer time */
    SCI0.SCR.BYTE = 0x70;   /* Tx,Rx有効 ,割込み無効 */
    SCI0.SSR.BYTE &= 0x80;  /* エラーフラグのクリア */
  } 
 と書いて見ましたが、よろしいでしょうか?
  (#asm nopの意味は、理解いたしました。)

(2)割り込みしたときに飛ぶ関数
  [H8-ML(3219)]で 関数の頭にinterruputをつけること
  教えていただき、大変助かっております。
 (・エラー処理関数も、別途記述してみます。)

(3)ベクタテーブルの件
  [H8-ML(3219)]で教えていただきましたとおり、
  YellowSoft特有の話しで、「プロジェクトの設定」の中に
  自動生成機能があること了解いたしました。
  ベクタ番号も日立のハードウエアマニュアルで確認できました。

(4)メインルーチンでは、特に何も記述しない?・・と。
  理解いたしました?。

(5)その他
 <sysio.h>をインクルードすること。
 了解いたしました。

ただ、まだよく分からないのが、

>_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();と同じものなのかどうかも・・、
別物であれば、記述位置(タイミング)は、
メインルーチンの中でよろしいのでしょうか?・・・・
 
基本を、よく知らなくて申し訳ありません。・・
現在、いろいろとやっておりまして、かなり煮詰まってまいりましたので、
もう一手よろしくご指導いただけますよう、
よろしくお願い申し上げます。


イエローソフトの開発環境にある sysio.h の中身を
掲載いたします。
-----------------------------------------
/* SYSIO.H */

#ifndef __SYSIO_H
#define	__SYSIO_H

void WriteCCR(unsigned char data);
unsigned char ReadCCR(void);
void WriteEXR(unsigned char data);
unsigned char ReadEXR(void);
void _ei(void);
void _di(void);
void _trace_ei(void);

#endif
------------------------------------------                

----
鈴木  tsuzuki@xxxxxxxxxxxxxxxx

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


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


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