割り込みにおけるレベルセンスとエッジセンスの違い:Q&Aで学ぶマイコン講座(68)(3/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「割り込みにおけるレベルセンスとエッジセンスの違い」についてです。
エッジセンス
割り込み信号がハイレベルからローレベルに変化した場合を「立ち下がりエッジ」、ローレベルからハイレベルに変化した場合を「立ち上がりエッジ」と呼びます。
割り込みイベントが発生した際に、割り込み信号に立ち下がりエッジを発生させたり、立ち上がりエッジを発生させたりすることで、割り込みなどのイベントを判断します。
立ち上がりエッジ/立ち下がりエッジの規定も、マイコンのデータシートなど、電気的特性を規定しているドキュメントに記載されています。
STM32F405マイコンの立ち上がりエッジ/立ち下がりエッジの規定も、データシートに記載されています(図4)
立ち上がりエッジは、信号のピーク電圧の10%の電圧レベルから90%の電圧レベルになった場合を指します。その逆に、立ち下がりエッジは、90%の電圧レベルから10%の電圧レベルに変わった場合を指します。(立ち下がりエッジの図中の数字は、10%と90%の表記が立ち上がりエッジと逆になっていますが、それぞれピーク電圧から「10%下がったレベル」と「90%下がったレベル」を意味しています)
使用上の注意点
(1)ノイズの影響
エッジセンスでは、急峻なノイズが入ると、ノイズのエッジを検出してしまい、誤動作を起こす可能性があります。また、レベルセンスでも、ノイズの電圧レベルが論理しきい値を超えると、誤動作を起こす可能性があります。
そのため、いずれの場合も、ノイズをフィルタリングする仕組みがマイコンに内蔵されています。
STM32F405マイコンの場合、ノイズフィルターが内蔵されており、データシートに「EXTIコントローラーによって検出される外部信号のパルス幅」として規定されています(図5)。10ナノ秒(ns)以下の短いパルス幅はノイズとして見なされて、除外されます。
これは、エッジセンス/レベルセンスどちらにも適用されます。そのため、ユーザーは、明確な割り込み信号として10nsを超える幅の信号を使わなくてはなりません。
(2)割り込みフラグの処理
マイコンの仕様にも依存しますが、レベルセンスの場合、割り込み信号が論理しきい値を超えると、マイコンが割り込みを受け付けて、割り込みフラグが自動的に立ちます。ユーザーは、割り込み処理(割り込みサービスルーティンなど)のなかで、割り込みフラグをクリアし、次の割り込みに備えます。しかし、割り込みフラグをクリアした後でも、割り込み信号の論理しきい値を超えた電圧レベルが保持されていると、再び同じ割り込みを受け付けてしまいます。エッジセンスの場合、エッジ発生の後に、信号の電圧レベルが変わっていなければ割り込みは受け付けませんが、レベルセンスの場合は、受け付けてしまいます。
ユーザーは、この点に十分注意をして、同じ割り込みを何度も受け付けないような割り込み処理のプログラムを作らなくてはなりません。
エッジセンスを使ってレベルセンスと同じ機能を実現する方法
エッジセンスのみサポートしているマイコンで、レベルセンスを疑似的に実現する方法を解説します。
例えば、ローレベルのエッジセンス割り込みを実現したい場合は、まず、立ち下がりエッジで割り込みを受けて、割り込みサービスルーティンへ飛びます。このサービスルーティンの中で信号レベルをチェックします。もし、ローレベルが維持されている場合は、ローレベルの割り込みを受け付けたと判断し、割り込み処理を行います。信号レベルをチェックするには、汎用IOとして端子のレベルを読み込みます。少し手間がかかりますが、割り込みサービスルーティンの中で信号のレベルをチェックすることにより、レベルセンスと同じ機能を疑似的に実現できます。信号レベルをチェックするタイミングは、ユーザーがソフトウェアで自由に選択可能です。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- BCD(2進化10進数)って何?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「BCD(2進化10進数)って何?」についてです。 - CCR(Condition Code Register:条件コードレジスタ)の役割
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、超初級者の方からよく質問される「CCR(Condition Code Register: 条件コードレジスタ)の役割」についてです。 - シングルバンクとデュアルバンクの違い
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「シングルバンクとデュアルバンクの違い」についてです。 - HAL(ハードウェア抽象化レイヤー)って何?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「HAL(ハードウェア抽象化レイヤー)って何?」についてです。 - マイコンにおけるメモリ外付け(メモリ増設)方法
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。59問目は、初級者の方からよく質問される「マイコンにおけるメモリ外付け(メモリ増設)方法」についてです。