割り込みの作り方④

nikemaru オーナー 公式アカウント

完全に側の人間でした。
ログインすると、チェック機能を利用できるようになります。
授業で扱った割り込みはタイマRB割り込みなのでそれについて解説する
タイマRB割り込みにかかわらず、割り込みプログラムを作るには次のステップが必要





今回は最後、いよいよ割り込み関数の実装について解説。
※ちなみに一般的に割り込み要因の準備→割り込みの実装→割り込みの登録の順番に作業をするので
多分順番違ってます。

タイマRBを用いた割り込み制御でよくやるのは など
(イベントの監視とは例えば、ボタンが押されているかを見るなど。)

・時間計測

long long cnt_rb=0;
#pragma interrupt intTRB(vect=24)
void intTRB(void){
cnt_rb++;
}
とするだけで時間が計測できる。
割り込みが許可されてから
(秒)時間が経過したことが分かる。

例えばintTRBの周期が1msでcnt_rbが1000だった場合、1秒経ったというわけである。

これを利用して

void timer(int time){
cnt_rb = 0;
while(cnt_rb < time);
}
とすることができる。cnt_rbはメイン処理とは別にずっと増えていくため、
一定時間後cnt_rb >= time となり終了する。そして、whileが待っている間メイン処理はそれ以外なにも実行されない。
つまりtimer関数は、一定時間メイン処理を停止させる関数となる