English
PROGRAMMER'S GUIDE割込み管理ライブラリ
■   | 進む
割込み管理ライブラリ

1.ガイド


1.1 目的

割り込みを管理することです。

1.2 概要

 割り込みレジスタアクセス管理、割り込み処理ルーチンの登録、参照を行います。

1.3 機能概要

 [割り込みレジスタアクセス管理]
 割り込みマスクレジスタはライトオンリであるため、その値を読むことができません。そのため、割り込みマスクレジスタに書き込んだ値は、ライブラリで保持しています。具体的には以下のような方式です。

  1. 割り込みマスクレジスタといつも同じ内容を持つメモリ(以下、マスク保存用メモリ)を用意する。

  2. 割り込みマスクレジスタへの書き込みがある場合は、必ずマスク保存用メモリにも同じ内容を書き込む。

  3. 割り込みマスクレジスタを読み込むときには、マスク保存用メモリの内容を読み込むようにする。

 [割り込み処理ルーチンの登録、参照]
 割り込み関数やSCU関数を割り込みベクタテーブルへ登録したり、現在の割り込みベクタの登録内容を参照したりすることができます。
 SCU割り込みベクタテーブルには、初期値としてSCU割り込み関数を登録しています。SCU割り込み関数には、登録されたSCU関数をサブルーチンコールする機能があります。登録されたSCU関数は、SCU割り込み関数が実行されるたびに実行されます。
 初期値として割り込み関数には、ダミー関数(リターン処理のみ実行)、SCU割り込み関数にはSCUダミー関数(リターン処理のみ実行)を登録しています。

1.4 使用条件

 [割り込みレジスタアクセス管理]
 ライブラリでは割り込みマスクレジスタの値を保持しているため、割り込みマスクレジスタへの書き込みは、ライブラリの提供する関数を使用してください。直接書き込みを行うと、マスク保存メモリと割り込みマスクレジスタの整合が取れなくなり、正しい処理ができなくなります。

1.5 コーリングシーケンス

 [割り込みレジスタアクセス管理]
void sysInit()
{
     INT_SetMsk((INT_MSK_HBLK_IN | INT_MSK_VBLK_OUT),
                                         (INT_MSK_SPR | INT_MSK_DMA1));
               /* "H-ブランク-IN"と"V-ブランク-OUT"をイネーブル設定       */
               /* "スプライト描画終了"と"レベル0-DMA"をディセーブル設定          */
     ...
}
void anyPrg()
{
     Uint32 status_bit;
     status_bit = INT_GET_STAT();          /* ステータスの取得          */
     if(INT_JudgeStat(status_bit,INT_ST_VBLK_OUT,INT_ST_VBLK_IN) == TRUE){
                                   /* V-ブランク-OUTの割り込みが発生し、         */
                                   /*     V-ブランク-INの割り込みが未発生の時    */
     ...
     }
}

 [割り込み処理ルーチンの登録、参照]
 ファイルA
#pragma interrupt (vblkIn)     /* vblkIn関数を割り込み関数とします     */

void vblkIn(void)
{
     ...
}

 ファイルB
void systemInit(void)
{
     INT_SetFunc(INT_SCU_VBLK_IN, vblkIn);
                              /* vblkIn割り込み関数をV-ブランク-IN割込みベク     */
                              /*     タテーブルに登録します。           */
     INT_SetScuFunc(INT_SCU_VBLK_OUT, vblkOut);
                              /* vblkOut関数をV-ブランク-OUT割り込みベクタの     */
                              /*     SCU割り込み関数に登録します。               */
     ...
}

void vblkOut(void)
{
     ...
}


■   | 進む
PROGRAMMER'S GUIDE割込み管理ライブラリ
Copyright SEGA ENTERPRISES, LTD., 1997