割り込み

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