Renesas Synergy™

FAQ 104186 : 割込み処理ルーチンの作成手順を教えて下さい。

Q: 質問

割込み処理ルーチンの作成手順を教えて下さい。


A: 回答

割込み処理ルーチン作成時の手順を以下に示します。ISR名は、XYZと仮定します。

  1. OSEK OSコンフィギュレータのISRページで、割込み XYZ の設定をします。
    (1)   ISRsの欄にISR名 XYZ を設定(NEWを選択すると名前を入力できます)
    (2)   Category欄で割込みカテゴリを選択します。
    (カテゴリ1の場合はCategory1、Category2の場合はCategory2を選択します)
    (3)   その他、割込みレベルと使用するスタック数を設定します。
    (4)   Interrupt Sourceは、NMIでなければ、OTHERを選択します。
  2. ベクタテーブルの設定
    サンプルで提供している vcttble.scrを例にして説明します。

    カテゴリ1割込みの場合
    (1)   ファイルの頭で下記コードを記述して下さい
    .import _XYZ ← XYZの前の _ が必要(アセンブラのため)
    (2)   使用するベクタに XYZ を定義してください。
    .data.l _XYZ ← XYZの前の _ が必要(アセンブラのため)
    (1)(2);C言語でベクタ作成の場合は _ は不要です。
    (3)   割込み処理ファンクションの作成
    アプリケーションファイル内に次の形で作成してください。
              void XYZ(void)  
                {  
                  処理内容  
                }  
              もしくは、  
              ISR(XYZ)  
                {  
                  処理内容  
                }  
    これは、void XYZ(void)と同じですが、ISR()の形式を使用する場合は、osekos.hをインクルードする必要があります。

    (マニュアルP46をご参照ください。)


    カテゴリ2割込みの場合

    (1)   vcttble.scrの頭で下記コードを記述して下さい
    .import _XYZ_ISR を記述 ← XYZの前の_と_ISRが必要です
    (2)   ベクタテーブルに、_XYZ_ISRを定義 ← XYZの前の_と_ISRが必要です
    (3)  

    割込みルーチンは、

        void XYZ()  [または  ISR(XYZ)]
          {
          }

    【備 考】
    #pragma interrupt宣言はOSコンフィギュレータが自動的に行いますので不要です。
    #pragma interrupt宣言は、OS構築ファイル「intdecl.h」に定義されます。

 

適用製品

OSEK
他にご質問がございましたら、リクエストを送信してください