Skip to main content

IAR Embedded Workbench for Arm 9.70.x

シンプルな割り込みシミュレーション

このセクションの内容:

この例は、タイマ割り込みのシミュレーション方法を示します。 ただし、他のタイプの割り込みも同じ手順でシミュレーションできます。

割り込みをシミュレーションしてデバッグするには、次の手順に従います。
  1. このシンプルなアプリケーションには、システムタイマ割り込みを処理するIRQハンドラルーチンが含まれます。tick変数をインクリメントします。main関数は必要に応じてステータスレジスタを設定します。アプリケーションは、100回割り込みが生成されると終了します。

    /* Enables use of extended keywords */
    #pragma language=extended
    
    #include <intrinsics.h>
    #include <stdio.h>
    
    unsigned int ticks = 0;
    
    /* IRQ handler */
    #if __ARM_PROFILE_M__
    /* Defines an interrupt handler for the Cortex-M UART interrupt. */
    void UART_Handler()
    #else
    /* Defines an interrupt handler for other cores. */
    __irq __arm void IRQ_Handler(void)
    #endif
    
    {
      /* We use only system timer interrupts, so we do not need
         to check the interrupt source. */
      ticks += 1;
      TMOVFR_bit.OVF = 1; /* Clear system timer overflow flag */
    }
    
    int main( void )
    {
      __enable_interrupt();
      /* Timer setup code */
      ILC0_bit.ILR0 = 4;     /* System timer interrupt priority */
      TMRLR_bit.TMRLR = 1E5; /* System timer reload value */
      TMEN_bit.TCEN = 1;     /* Enable system timer */
      while (ticks < 100);
      printf("Done\n");
    }
  2. 割り込みサービルルーチンをアプリケーションソースコードに追加して、そのファイルをプロジェクトに追加します。

  3. プロジェクトをビルドして、シミュレータを起動します。

  4. [シミュレータ]>[割り込み設定]を選択して、[割り込み設定]ウィンドウを開きます。ウィンドウで右クリックして、コンテキストメニューの[割り込みシミュレータを有効化]を選択します。タイマの例については、以下の設定を確認してください。

    オプション

    設定

    割り込み

    IRQ

    初回割り込み

    4000

    繰返し間隔

    2000

    保持時間

    10

    確率(%)

    100

    ばらつき (%)

    0

    表26 タイマ割り込み設定 


    OK をクリックします。

  5. アプリケーションを実行します。アプリケーションソースコードで正常に割り込みが有効になっている場合、C-SPYは以下を実行します。

    • サイクルカウンタが4000を超えると割込みを生成

    • その後は約2000サイクルごとに周期割込みを生成

  6. 動作中の割り込みをモニタするには、[シミュレータ]>[割り込みログ]を選択して[割り込みログ]ウィンドウを開きます。

  7. [割り込みログ]ウィンドウのコンテキストメニューから、[有効化]を選択してロギングを有効にします。プログラムの実行を再開する場合は、割り込みの入口と出口のステータス情報が[割り込みログ]ウィンドウに表示されます。

    時間軸に沿って割り込みをグラフィック表示する方法については、タイムラインウィンドウ—割り込みログ グラフを参照してください。