📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

499行目: 499行目:
各ポートには、割り込み制御用の3つのレジスタがある。<br>
各ポートには、割り込み制御用の3つのレジスタがある。<br>
<br>
<br>
PxIE (Port x Interrupt Enable) レジスタ<br>
<center>
* 各ピンの割り込みを個別に有効化する
{| class="wikitable"
* ビット = 0
|+ 割り込みレジスタ
*: 割り込み無効
|-
* ビット = 1
! レジスタ名 !! 説明
*: 割り込み有効
|-
<br>
| PxIE<br>(Port x Interrupt Enable)
PxIES (Port x Interrupt Edge Select) レジスタ<br>
| 各ピンの割り込みを個別に有効化する<br><br>ビット = 0: 割り込み無効<br>ビット = 1: 割り込み有効
* 割り込みをトリガするエッジを選択する
|-
* ビット = 0
| PxIES<br>(Port x Interrupt Edge Select)
*: 立ち上がりエッジ (Low -> High) で割り込み
| 割り込みをトリガするエッジを選択する<br><br>ビット = 0: 立ち上がりエッジ (Low -> High) で割り込み<br>ビット = 1: 立ち下がりエッジ (High -> Low) で割り込み
* ビット = 1
|-
*: 立ち下がりエッジ (High -> Low) で割り込み
| PxIFG<br>(Port x Interrupt Flag)
<br>
| 各ピンの割り込みフラグ<br>選択したエッジが検出されると自動的にセットされる<br><br>ビット = 0: 割り込み保留なし<br>ビット = 1: 割り込み保留中<br><br>ソフトウェアでクリアする必要がある<br>ソフトウェアでセットすることも可能 (ソフトウェア割り込み)
PxIFG (Port x Interrupt Flag) レジスタ<br>
|}
* 各ピンの割り込みフラグ
</center>
* 選択したエッジが検出されると自動的にセットされる
* ビット = 0
*: 割り込み保留なし
* ビット = 1
*: 割り込み保留中
* ソフトウェアでクリアする必要がある
* ソフトウェアでセットすることも可能 (ソフトウェア割り込み)
<br>
<br>
==== 割り込みの動作 ====
==== 割り込みの動作 ====
528行目: 521行目:
静的なレベルではなく、遷移のみが割り込みを引き起こす。<br>
静的なレベルではなく、遷移のみが割り込みを引き起こす。<br>
したがって、ピンが既にHighまたはLowの状態で割り込みを有効にしても、割り込みは発生しない。<br>
したがって、ピンが既にHighまたはLowの状態で割り込みを有効にしても、割り込みは発生しない。<br>
<br>
割り込みを発生させるには、ピンの状態が変化する必要がある。<br>
割り込みを発生させるには、ピンの状態が変化する必要がある。<br>
<br>
<br>
536行目: 530行目:
ピンがペリフェラル機能の入力として選択されている場合、ペリフェラルへの入力信号はデバイスピンの信号をラッチした表現である。<br>
ピンがペリフェラル機能の入力として選択されている場合、ペリフェラルへの入力信号はデバイスピンの信号をラッチした表現である。<br>
PxSEL = 1の間、内部入力信号はピンの信号に従う。<br>
PxSEL = 1の間、内部入力信号はピンの信号に従う。<br>
<br>
ただし、PxSEL = 0にリセットされると、ペリフェラルへの入力は、PxSELビットがリセットされる前のデバイスピンの入力信号の値を保持する。<br>
ただし、PxSEL = 0にリセットされると、ペリフェラルへの入力は、PxSELビットがリセットされる前のデバイスピンの入力信号の値を保持する。<br>
<br>
<br>
558行目: 553行目:
  __interrupt void Port_1(void)
  __interrupt void Port_1(void)
  {
  {
    if (P1IFG & BIT3)
    if (P1IFG & BIT3)
    {
    {
        // P1.3の割り込み処理
      // P1.3の割り込み処理
        // 何らかの処理を実行
      // 何らかの処理を実行
       
        P1IFG &= ~BIT3;  // P1.3の割り込みフラグをクリア
      P1IFG &= ~BIT3;  // P1.3の割り込みフラグをクリア
    }
    }
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
外部信号が割り込みフラグをセットするための最小パルス幅は、データシートに記載されている。<br>
外部信号が割り込みフラグをセットするための最小パルス幅は、データシートに記載されている。<br>
MSP430F2013では、典型的に20ns以上のパルス幅が必要である。<br>
MSP430F2013では、20[ns]以上のパルス幅が必要である。<br>
<br>
最小割り込みパルス幅が満たされると、外部信号は毎回割り込みフラグをセットする。<br>
最小割り込みパルス幅が満たされると、外部信号は毎回割り込みフラグをセットする。<br>
割り込みパルス幅より短いトリガ信号でもフラグがセットされる可能性がある。<br>
<br>
また、割り込みパルス幅より短いトリガ信号でもフラグがセットされる可能性がある。<br>
<br><br>
<br><br>