例えば、通信が終了した割り込み要求と時計機能の割り込み要求が同時に発生した場合を考えます。通信機能はアプリケーションのレスポンスに影響を与えます。一方、時計機能は時間の表示だけです。時計用カウンターの値は、正確なクロックでカウントを続けていて、割り込みのレスポンスで影響を受けるのは表示だけです。すなわち時計機能の割り込みは、アプリケーションの本質の機能に影響を与えません。そのため、通信終了割り込みが時計機能割り込みよりも優先されて、先に実行されなくてはなりません。
また、タイマーを数多く使うアプリケーションでも、各タイマーの割り込み優先度を明確にしておく必要があります。さらに通信機能の送信タイミングや受信タイミング、A-Dコンバーターの変換終了タイミングなど、多くの割り込みの優先度を考慮し、明確にしておかないと、重要な割り込みのタイミングを逸して、システムの誤動作を引き起こす恐れがあります。
割り込み優先度は、ベクタテーブルでデフォルトが決まっていますが、システムの特性から、状況によってその順位を変更する必要性が出てきます。
図2にSTM32L4に搭載されているArm Cortex-Mプロセッサの割り込みの種類とベクタテーブルを示します。
図2(a)中の「優先度」が割り込みレベルを表します。「優先度の設定」で「可能」となっている割り込みの優先レベルの変更が可能です。
No.16(外部割込み#0)〜256(外部割込み#240)がマイコンメーカー用の割り込みです。マイコンメーカーは、これらの割り込みNo.に周辺機器などの割り込みを割り当てます。これらの割り込みの優先度は、全て設定可能になっています。図2(b)がそれらに対応するベクタテーブルです。
Arm Cortex-Mプロセッサでは、各割り込みの優先度をユーザーが変更でき、フルスペックなら256段階で設定することが可能です。さらに、2段階に分けて設定できます。まず「横取り優先度(グループ優先度)」という優先度で大きく優先度をつけて、さらにその中で、優先度を設定することが可能です。これを「サブ優先度」と呼びます。横取り優先度とサブ優先度との組み合わせが、全体の優先度になります。この場合、0に割り当てた割り込みの優先度が最も高くなり、255に割り当てた割り込みの優先度が最も低くなります。
Copyright © ITmedia, Inc. All Rights Reserved.