割り込み
割り込みとは 通常の関数は、関数呼び出しによって動作し、 return文で値を返して終了(void型ではreturn値 なし) 割り込み関数は、割り込み要因(イベント) が発生したときに動作し、値は返さない 割り込みが発生するとそれまで動作していたプロ グラムは中断し、割り込み処理終了後に再開する
割り込みの種類 ソフトウェア割り込み ハードウェア INT命令など オーバーフローなど ノンマスカブル割り込み(特殊割り込み) 割込みの許可/禁止のみ制御できる(割り込みレベルな し) ウォッチドッグ・タイマなど マスカブル割り込み(周辺機能割り込み) 割込みごとにレベルが設定されており、指定したレベル以 上の割り込みだけが許可される INT外部割込み タイマ割り込みなど
割り込みベクタテーブル 割り込み関数の場所を記述した一覧表 割り込み要因が発生すると、このベクタテーブルを参照して、次の プログラム動作場所を決める 例)INT3外部割込み マイコンのINT3端子(19番ピン)の電圧が立ち下がると割込みが発生 ベクタ番号26のアドレスを参照し 動作中の処理を中断し、割込み処理関数を実行 アドレス メモリ : : main関数 **100番地 割込み処理関数 ベクタ番号 : 26 **100番地 動作中 INT3 動作
INT3割込み(P214) INT3端子(19番ピン)への入力による割込み 関連するレジスタがタイマCモジュールのレジスタ と兼用になっている(INT3端子はTCIN端子と兼用) INT3割込み使用時にはタイマCによる割込みは使 用できない。(逆も同じ) 割込みは、立ち上がりエッジ/立ち下がりエッジ/ 両エッジ、から選択できる 入力にはフィルタを設定できる(チャタリング対策 ができる)
サンプルでのINT3割込み設定(P214参照) (tcc04,tcc03)=(0,1) 赤字はプログラムで設定 (tcc06)=(1) 立ち上がりエッジを選択(スイッチを押したとき) (tcc06)=(1) INT3割込みとして使用(タイマC割込みは使用できない) (tcc11,tcc10)=(1,1) f32フィルタ使用 (20/32)MHzでサンプリングして、3回連続して値が1だった場合に立ちあ がったとして割込みを実行 チャタリング対策 (ilvl2_int3ic, ilvl1_int3ic, ilvl0_int3ic)=(0,0,1) (P208の図19-6参照) int3割込み制御レジスタのILVL0ビットを1にする 割込み優先レベルがレベル1となる このレベル1>IPLの値 であるので割込みできる IPLの値は初期値0(P207の図19-5のフラグレジスタ中のIPL)