割り込み 割り込みとは 通常の関数は、関数呼び出しによって動作し、 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)
© Copyright 2024 ExpyDoc