2016-11-13 14 views

答えて

1

msp430マイクロコントローラが割り込みハンドラ機能の実行を開始しようとしているときは、最初に、ステータスレジスタr2のビットであるグローバルな「割り込み許可」フラグを無効にします。これは事実上、デフォルトで割り込みネストを禁止します。

この問題を回避するには、割り込みハンドラ機能の開始時にレジスタフラグを1に戻して割り込みを有効にします。構文を簡素化するために、このためeint指示実際にあります:

asm("eint"); 

は通常、あなたがアセンブリコードを書く避けましょうemnabeためのコンパイラ固有のマクロもあります。これは、GCCとIARの両方で動作するはずです:

__enable_interrupt(); 

(、ネスト割り込み乱用しないでくださいほとんどの場合、それのための必要は全くありません、それのために行くよりも、それはあなたのデザインを変更することがほぼ確実に、より良いアイデアです。 )

関連する問題