忍者ブログ

Fグループ電子工作講座

秋月電子SH7125ボードで始めるマイコン開発

割り込み処理とは

マイコンの機能を使い切るうえで知らなければならない概念の一つ。

割り込み処理の考え方

これまでに作成したプログラムは各処理の順番が決まっていました。

処理1の次は処理2、処理2の次は処理3、処理3の次は処理1。
割り込み処理はこの処理の順番とは独立して動作する処理です。

イメージとしてはウェブブラウザでインターネットをしながらメールを受信しつつ時刻設定したアラームが自動的に鳴るようなものです。
ウェブブラウザメインの処理で、自動受信するメールブラウザタイマー動作のアラーム割り込みの処理に相当します。

メールが来たという外的要因により動作するのが外部割込み、タイマーで設定した時刻になったという内的要因により動作するのが内部割込みです。
※メール受信も本当はタイマー動作ですが、メールが来たら自動的に動作することにしておきます。

マイコンでの動作ではスイッチ入力があるとメイン処理とは独立して処理をしたり、タイマーで一定時間おきにLEDの点灯処理を行うような感じです。


なぜ割り込みが必要となるのか

この様に書くと割り込みを使わなくても処理できそうに思えます。
例えば処理1にスイッチ入力に対する処理を書いておき、処理3には例えば30回毎に何かを実行する等タイマー処理に相当する処理を書いておけばこれらが処理できそうです。

ただ、必ずしも思った通りの動作にはなりません。
たとえば処理2に100msほど時間がかかるとします。
スイッチ入力されたタイミングを1ms単位で知りたい場合、入力を確認する間隔は最短でも100msとなるので十分な精度が得られません。
タイマーを使って実行したい間隔が10msであった場合もやはり望みの動作をさせることができません。

この様な状況では処理1~処理3の様なメイン処理にスイッチ入力やタイマー処理を組み込むことはできません。
メイン処理とは独立して動作している必要があり、処理1~処理3のどの処理を行っている時でもスイッチ入力やタイマーなどの条件を満たした時点で対応する処理を実行しなければなりません。


割り込み処理の実行動作

実際にはマイコンで1度に実行できる処理は一度に1つのみで、並列処理を行うことはできません。メイン処理を実行中に特定の条件を満たしたときにメイン処理を一時中断して専用の処理を実行し、メイン処理に復帰しなければいけません。

メイン処理から見れば専用処理が割り込んできた状態と言えます。
このため、メイン処理に対して条件を満たした時点で優先して処理する機能割り込み処理と呼びます。

複数の割り込み処理が混在する時、割り込み処理中割り込み処理が発生することがあります。

しかし、急いで実行する必要がある処理中に別の処理に割り込まれると望みの動作にならないことが予期されます。これらの割り込み処理についてどの処理を優先して処理すべきかを決める必要があります。どの処理が優先すべき急ぎの処理なのか設定する値が優先度です。ある割り込み処理中にそれより優先度の低い割り込み条件が発生したときは先に最初の割り込み処理を実行したのちに優先度の低い割り込み処理が実行されます。

関連:当ブログで扱うSH7125の特殊機能一覧
PR

コメント

プロフィール

HN:
ぼんどF博士
性別:
男性

最新コメント