• 文字サイズ変更
  • S
  • M
  • L
  • No : 4993
  • 公開日時 : 2020/03/24 16:27
  • 更新日時 : 2020/08/28 15:22
  • 印刷

【TI:マイコン】 MSP430 キャプチャ割り込みとオーバーフロー割り込みを使用したカウント値の算出について

MSP430でタイマを連続運転し、キャプチャ割り込みとオーバーフロー割り込みを使用し、
カウント値(期間)を算出するときに注意する事があったら教えてください。
カテゴリー : 

回答

キャプチャした値とオーバーフロー割り込み処理を実行した回数を用いて下記数式でカウント値(期間)を計算します。
カウント値 = 今キャプチャした値 + タイマのオーバーフロー回数 x 0x10000(フルカウント) - 前回キャプチャした値

オーバーフロー回数は、TAIFGあるいはTBIFGの割り込み要求を実行した回数になります。
ここで、キャプチャ割り込み要求(CCIFG)とタイマのオーバーフロー割り込み要求(TAIFG/TBIFG)が、
同じ(非常に近い)タイミングで発生したときに問題が発生することがあります。
 
2つのケースを考察します。
① キャプチャ割り込み要求(CCIFG)が先に発生し、直後にオーバーフロー割り込み要求(TAIFG/TBIFG)が発生したとき。
 キャプチャした値はフルカウントに近い値となっており、オーバーフローの回数は加算されていません。
 このとき、キャプチャ割り込み処理が先に実行され問題は発生しません。
 
② オーバーフロー割り込み要求(TAIFG/TBIFG)が先に発生し、
 直後(オバーフロー割り込み処理が実行される前)にキャプチャ割り込み要求(CCIFG)が発生したとき。
 キャプチャした値は0に近い値となっています。
 キャプチャ割り込みの方が優先度が高いので、オーバーフロー割り込み要求を保留し、キャプチャ割り込み処理が実行されます。
 オーバーフロー回数が “1” 加算される前に、カウント値を算出してしまうので問題となります。
 

アンケート:ご意見をお聞かせください

ご意見・ご感想をお寄せください お問い合わせを入力されましてもご返信はいたしかねます