This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432 NVIC interrupt enableのset/reset [msp432info]

Other Parts Discussed in Thread: MSP-FET
  • NVICのペリフェラル割り込みを codingでenable/disable にする方法と、デバッガーでdisable/ enableにする方法を説明します。
    デバッグするとき、一時的に特定の割り込みを止めるときに役に立ちます。

  • NVICの機能については、下記を見てください。
    ARM-M4 NVICの動作概要

 

1 プログラムでenable/disableにする方法

 

1.1 enable

 

  • NVICのIRQn割り込みをenableにするには、ISER[0]、ISER[1]のIRQn番目のbit(0~31,32~63)をon(set)します。 NVIC内部でenableになります。

  • 具体的な例は、下記のようにします。
       NVIC->ISER[0] = 1 << ((TA0_0_IRQn) & 31);                //TA0_0_IRQn=8

  • Port6は40なのでISER[1]にsetしますが、私は間違え防止のため下記を使っています。
       if (PORT6_IRQn >= 32) NVIC->ISER[1] = 1 << ((PORT6_IRQn-32) & 31);       //PORT6_IRQn=40
       else                   NVIC->ISER[0] = 1 << ((PORT6_IRQn) & 31);
       __enable_interrupts();

 

1.2 disable

 

  • NVICのIRQn割り込みをdisableにするには、ICER[0]、ICER[1]のIRQn番目のbit(0~31,32~63)をon(clear)します。 NVIC内部でdisableになります。

  • 具体的な例は、下記のようにします。
       NVIC->ICER[0] = 1 << ((TA0_0_IRQn) & 31);
       if (PORT6_IRQn >= 32)   NVIC->ICER[1] = 1 << ((PORT6_IRQn-32) & 31);
       else                   NVIC->ICER[0] = 1 << ((PORT6_IRQn) & 31);

     

2 デバッガーでenable/disableにする方法

 

2.1 NVIC registerの表示

 

  • デバッガーで下記のようにレジスタを表示します。ISERxのビットon(1)がenableを示します。
    TA0_0_IRQn=8がonになっている例です。

 

2.2 disable

 

  • disableにするには、上記のICERxの該当bit(1を表示している)を上書きで 1 enter するとISERxの該当bitが0(clear)されます。 変化しないときはstep実行するとclearされます。
  • ICERx: 0xFFFFFFFF enter すれば、全ての割り込みがdisable ISERx:00000000 となります。
  • 割り込み済みのpending割り込みがあると、これはISRで処理されますが、それ以降の割り込みは入らなくなります。

 

2.2 enable

 

  • enableに戻すには、上記のISERxの該当bit(0を表示している)に 1 enter で書き込むと、ISERxの該当bitが1(set)されます。 変化しないときはstep実行するとsetされます。
  • この後は、割り込みが入るようになります。

 

 

  • 3 MSP-FETを使い、step debugをするときの留意事項

     

     現在、MSP-FETステップデバッグをするときに、割り込みがdisableになっていません。 このため、step実行をすると、ISRに飛んでしまいます。 XDS110/XDS100v2ではdisableになっていますので、この現象は起こりません。

     

     USでもこのMSP-FETトラブルの質問が出ています。

      e2e.ti.com/.../2088851

     

    回避策は、step実行時には前記の2項NVICの割り込みenable/disable bit off/onをします。 ステップデバッグを多用する場合は、XDS110を使用するほうが向いています。