シンプルな割り込みシミュレーション
この例は、タイマ割り込みのシミュレーション方法を示します。 ただし、他のタイプの割り込みも同じ手順でシミュレーションできます。
このシンプルなアプリケーションには、システムタイマ割り込みを処理する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"); }割り込みサービルルーチンをアプリケーションソースコードに追加して、そのファイルをプロジェクトに追加します。
プロジェクトをビルドして、シミュレータを起動します。
[シミュレータ]>[割り込み設定]を選択して、[割り込み設定]ウィンドウを開きます。ウィンドウで右クリックして、コンテキストメニューの[割り込みシミュレータを有効化]を選択します。タイマの例については、以下の設定を確認してください。
オプション
設定
割り込み
IRQ
初回割り込み
4000
繰返し間隔
2000
保持時間
10
確率(%)
100
ばらつき (%)
0
表26 タイマ割り込み設定OK をクリックします。
アプリケーションを実行します。アプリケーションソースコードで正常に割り込みが有効になっている場合、C-SPYは以下を実行します。
サイクルカウンタが4000を超えると割込みを生成
その後は約2000サイクルごとに周期割込みを生成
動作中の割り込みをモニタするには、[シミュレータ]>[割り込みログ]を選択して[割り込みログ]ウィンドウを開きます。
[割り込みログ]ウィンドウのコンテキストメニューから、[有効化]を選択してロギングを有効にします。プログラムの実行を再開する場合は、割り込みの入口と出口のステータス情報が[割り込みログ]ウィンドウに表示されます。
時間軸に沿って割り込みをグラフィック表示する方法については、タイムラインウィンドウ—割り込みログ グラフを参照してください。