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

ページの作成:「== 概要 == MSP430F2013では、ポート1 / ポート2の2つのポートがあり、合計10本のGPIOを持つ。<br> * P1.0からP1.7までの8本のピンがポート1 * P2.6とP2.7の2本のピンがポート2 (クリスタルオシレータ専用ピン) <br> 各ポートピンは入力、出力、特殊機能のいずれかに設定できる。<br> 特殊機能には、Timer_A、USI (SPI/I2C)、SD16_A (16ビットデルタシグマADC) 等がある。<br> <b…」
 
 
(同じ利用者による、間の5版が非表示)
185行目: 185行目:


== ポート1のピン機能詳細 ==
== ポート1のピン機能詳細 ==
MSP430F2013のポート1は8本のピン (P1.0-P1.7) から構成され、各ピンは複数の機能を持つ。<br>
MSP430F2013のポート1は8本のピン (P1.0〜P1.7) から構成され、各ピンは複数の機能を持つ。<br>
各ピンの詳細な機能を以下に示す。<br>
各ピンの詳細な機能を以下に示す。<br>
<br>
<br>
206行目: 206行目:
*: SD16AE.0 = 1 (P1SELは任意)
*: SD16AE.0 = 1 (P1SELは任意)
<br>
<br>
==== P1.1/TA0/A0-/A4+ ====
==== P1.1 / TA0 / A0- / A4+ ====
* P1.1
* P1.1
*: 汎用デジタル入出力
*: 汎用デジタル入出力
* TA0
* TA0
*: Timer_Aチャンネル0のキャプチャ入力 (CCI0A) /コンペア出力 (Out0)
*: Timer_Aチャンネル0のキャプチャ入力 (CCI0A) / コンペア出力 (Out0)
* A0-
* A0-
*: SD16_A チャンネル0の負入力
*: SD16_A チャンネル0の負入力
224行目: 224行目:
*: SD16AE.1 = 1 (P1SELは任意)
*: SD16AE.1 = 1 (P1SELは任意)
<br>
<br>
==== P1.2/TA1/A1+/A4- ====
==== P1.2 / TA1 / A1+ / A4- ====
* P1.2
* P1.2
*: 汎用デジタル入出力
*: 汎用デジタル入出力
* TA1
* TA1
*: Timer_Aチャンネル1のキャプチャ入力 (CCI1A) /コンペア出力 (Out1)
*: Timer_Aチャンネル1のキャプチャ入力 (CCI1A) / コンペア出力 (Out1)
* A1+
* A1+
*: SD16_A チャンネル1の正入力
*: SD16_A チャンネル1の正入力
242行目: 242行目:
*: SD16AE.2 = 1 (P1SELは任意)
*: SD16AE.2 = 1 (P1SELは任意)
<br>
<br>
==== P1.3/VREF/A1- ====
==== P1.3 / VREF / A1- ====
* P1.3
* P1.3
*: 汎用デジタル入出力
*: 汎用デジタル入出力
258行目: 258行目:
*: SD16AE.3 = 1 (P1SELは任意)
*: SD16AE.3 = 1 (P1SELは任意)
<br>
<br>
==== P1.4/SMCLK/A2+/TCK ====
==== P1.4 / SMCLK / A2+ / TCK ====
* P1.4
* P1.4
*: 汎用デジタル入出力
*: 汎用デジタル入出力
278行目: 278行目:
*: JTAGモードで自動設定
*: JTAGモードで自動設定
<br>
<br>
==== P1.5/TA0/SCLK/A2-/TMS ====
==== P1.5 / TA0 / SCLK / A2- / TMS ====
* P1.5
* P1.5
*: 汎用デジタル入出力
*: 汎用デジタル入出力
302行目: 302行目:
*: JTAGモードで自動設定
*: JTAGモードで自動設定
<br>
<br>
==== P1.6/TA1/SDO/SCL/A3+/TDI ====
==== P1.6 / TA1 / SDO / SCL / A3+ / TDI ====
* P1.6
* P1.6
*: 汎用デジタル入出力
*: 汎用デジタル入出力
326行目: 326行目:
*: JTAGモードで自動設定
*: JTAGモードで自動設定
<br>
<br>
==== P1.7/SDI/SDA/A3-/TDO/TDI ====
==== P1.7 / SDI / SDA / A3- / TDO / TDI ====
* P1.7
* P1.7
*: 汎用デジタル入出力
*: 汎用デジタル入出力
348行目: 348行目:


== ポート2のピン機能詳細 ==
== ポート2のピン機能詳細 ==
MSP430F2013のポート2は2本のピン (P2.6とP2.7) から構成される。<br>
MSP430F2013のポート2は2本のピン P2.6 / P2.7 から構成される。<br>
これらのピンは主にクリスタルオシレータ用として設計されている。<br>
これらのピンは、クリスタルオシレータ用として設計されている。<br>
<br>
<br>
==== P2.6/XIN/TA1 ====
==== P2.6/XIN/TA1 ====
363行目: 363行目:
*: P2SEL.6 = 0
*: P2SEL.6 = 0
* XIN
* XIN
*: P2SEL.6 = 1、BCSCTL3.LFXT1Sx = 00/01/10でクリスタルモード
*: P2SEL.6 = 1、BCSCTL3.LFXT1Sx = 00 / 01 / 10でクリスタルモード
* XIN (デジタルクロック入力)
* XIN (デジタルクロック入力)
*: P2SEL.6 = 1、BCSCTL3.LFXT1Sx = 11
*: P2SEL.6 = 1、BCSCTL3.LFXT1Sx = 11
369行目: 369行目:
*: P2SEL.6 = 1、P2DIR.6 = 1、BCSCTL3でLFXT1オフ
*: P2SEL.6 = 1、P2DIR.6 = 1、BCSCTL3でLFXT1オフ
<br>
<br>
注意事項<br>
<u>※注意</u><br>
* 32.768kHzクリスタルを接続する場合は、P2SEL.6とP2SEL.7の両方を1に設定する
* <u>32.768[kHz]の水晶発振器を接続する場合は、P2SEL.6とP2SEL.7の両方を1に設定する。</u>
* クリスタルを使用しない場合でも、P2.6とP2.7を適切に初期化することを推奨
* <u>クリスタルを使用しない場合でも、P2.6とP2.7を適切に初期化することを推奨する。</u>
<br>
<br>
==== P2.7/XOUT ====
==== P2.7 / XOUT ====
* P2.7
* P2.7
*: 汎用デジタル入出力
*: 汎用デジタル入出力
385行目: 385行目:
*: P2SEL.7 = 1、BCSCTL3.LFXT1Sx = 00/01/10でクリスタルモード
*: P2SEL.7 = 1、BCSCTL3.LFXT1Sx = 00/01/10でクリスタルモード
<br>
<br>
注意事項<br>
<u>※注意</u><br>
* リセット後、P2.7/XOUTをデジタル入力として使用する場合、P2SEL.7をクリアするまで余分な電流が流れる可能性がある
* <u>リセット後、P2.7 / XOUTをデジタル入力として使用する場合、P2SEL.7をクリアするまで余分な電流が流れる可能性がある。</u>
* これは、リセット後にオシレータ出力ドライバがこのピンに接続されているためである
* <u>これは、リセット後にオシレータ出力ドライバがこのピンに接続されているためである。</u>
* そのため、リセット後できるだけ早くP2SEL.7を適切に設定することを推奨
* <u>そのため、リセット後できるだけ早くP2SEL.7を適切に設定することを推奨する。</u>
<br><br>
<br><br>


395行目: 395行目:
入力ポートとして使用する場合でも、プルアップ抵抗を使用するためにPxOUTを設定することができる。<br>
入力ポートとして使用する場合でも、プルアップ抵抗を使用するためにPxOUTを設定することができる。<br>
<br>
<br>
PxDIRレジスタ<br>
<center>
* 1
{| class="wikitable"
*: 出力方向
|+ PxDIRレジスタ / PxOUTレジスタの役割
* 0
|-
*: 入力方向
! レジスタ名 !! 説明
<br>
|-
PxOUTレジスタの役割<br>
| PxDIR || 各ピンの入出力方向を設定する<br><br>ビット = 1 : 出力方向<br>ビット = 0 : 入力方向
* 出力時
|-
*: 出力値 (High / Low) の設定
| PxOUT || ピンが出力時 : 出力値 (High / Low) の設定<br>ピンが入力時: プルアップ / プルダウン抵抗の選択
* 入力時
|}
*: プルアップ / プルダウン抵抗の選択
</center>
<br>
<br>
  <syntaxhighlight lang="c">
  <syntaxhighlight lang="c">
  // 例: スイッチ入力の場合の一般的な設定
  // 例 : スイッチ入力の場合の一般的な設定
   
   
  // P1.3を入力ポートに設定
  // P1.3を入力ポートに設定
421行目: 421行目:
<br>
<br>
  <syntaxhighlight lang="c">
  <syntaxhighlight lang="c">
  // 例: LED出力の場合の一般的な設定
  // 例 : LED出力の場合の一般的な設定
   
   
  // P1.0を出力ポートに設定
  // P1.0を出力ポートに設定
438行目: 438行目:
この設定により、内部プルアップ抵抗または内部プルダウン抵抗が有効になる。<br>
この設定により、内部プルアップ抵抗または内部プルダウン抵抗が有効になる。<br>
<br>
<br>
MSP430F2013の内部プルアップ / プルダウン抵抗の抵抗値は、標準的に20kΩから50kΩの範囲である。<br>
MSP430F2013の内部プルアップ / プルダウン抵抗の抵抗値は、標準的に20[kΩ]〜50[kΩ]の範囲である。<br>
<br>
<br>
* PxRENレジスタで内部抵抗の有効 / 無効を設定
<center>
*: ビットに1を書き込むと内部抵抗が有効
{| class="wikitable"
*: ビットに0を書き込むと内部抵抗が無効
|+ PxREN / PxOUTレジスタ
*: <br>
|-
* PxOUTレジスタでプルアップ / プルダウンを設定
! レジスタ名 !! 説明
*: PxRENが1、PxOUTが1の場合 -> プルアップ
|-
*: PxRENが1、PxOUTが0の場合 -> プルダウン
| PxREN<br>(Port x Resistor Enable)
| 内部抵抗の有効 / 無効を設定する<br><br>ビット = 0: 内部抵抗が無効<br>ビット = 1: 内部抵抗が有効
|-
| PxOUT<br>(Port x Output)
| プルアップ / プルダウンを設定する<br><br>PxREN = 1、PxOUT = 1の場合: プルアップ<br>PxREN = 1、PxOUT = 0の場合: プルダウン
|}
</center>
<br>
<br>
  <syntaxhighlight lang="c">
  <syntaxhighlight lang="c">
475行目: 481行目:
なお、PxSELは、デジタルI/Oとして使用する場合は、0に設定する必要がある。<br>
なお、PxSELは、デジタルI/Oとして使用する場合は、0に設定する必要がある。<br>
<br>
<br>
注意事項<br>
<u>※注意</u><br>
<br>
<u>内部プルアップと外部プルアップを同時に使用することは推奨されない。</u><br>
内部プルアップと外部プルアップを同時に使用することは推奨されない。<br>
* 並列抵抗となるため、実効的なプルアップ抵抗値が下がる。
* 並列抵抗となるため、実効的なプルアップ抵抗値が下がる。
* 無駄な電流消費につながる。
* 無駄な電流消費につながる。
* 内部プルアップと外部プルアップで異なる電圧レベルに引っ張られる可能性がある。
* 内部プルアップと外部プルアップで異なる電圧レベルに引っ張られる可能性がある。
<br>
* 高精度や特定の抵抗値が必要な場合は、外部プルアップのみを使用する。
* 高精度や特定の抵抗値が必要な場合は、外部プルアップのみを使用する。
* それ以外の場合は内部プルアップのみを使用する。
* それ以外の場合は内部プルアップのみを使用する。
<br>
<br>
また、ペリフェラル機能選択時 (PxSEL = 1) にPxRENを有効にすることは推奨されない。<br>
<u>また、ペリフェラル機能選択時 (PxSEL = 1) にPxRENを有効にすることは推奨されない。</u><br>
* 一部のデバイスでは、ペリフェラル機能選択中にプルアップ / プルダウン抵抗を有効にすると、論理出力ドライバが無効にならない場合がある。
* 一部のデバイスでは、ペリフェラル機能選択中にプルアップ / プルダウン抵抗を有効にすると、論理出力ドライバが無効にならない場合がある。
* これにより、内部抵抗を通じて不要な電流が流れる可能性がある。
* これにより、内部抵抗を通じて不要な電流が流れる可能性がある。
499行目: 503行目:
各ポートには、割り込み制御用の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行目: 525行目:
静的なレベルではなく、遷移のみが割り込みを引き起こす。<br>
静的なレベルではなく、遷移のみが割り込みを引き起こす。<br>
したがって、ピンが既にHighまたはLowの状態で割り込みを有効にしても、割り込みは発生しない。<br>
したがって、ピンが既にHighまたはLowの状態で割り込みを有効にしても、割り込みは発生しない。<br>
<br>
割り込みを発生させるには、ピンの状態が変化する必要がある。<br>
割り込みを発生させるには、ピンの状態が変化する必要がある。<br>
<br>
<br>
536行目: 534行目:
ピンがペリフェラル機能の入力として選択されている場合、ペリフェラルへの入力信号はデバイスピンの信号をラッチした表現である。<br>
ピンがペリフェラル機能の入力として選択されている場合、ペリフェラルへの入力信号はデバイスピンの信号をラッチした表現である。<br>
PxSEL = 1の間、内部入力信号はピンの信号に従う。<br>
PxSEL = 1の間、内部入力信号はピンの信号に従う。<br>
<br>
ただし、PxSEL = 0にリセットされると、ペリフェラルへの入力は、PxSELビットがリセットされる前のデバイスピンの入力信号の値を保持する。<br>
ただし、PxSEL = 0にリセットされると、ペリフェラルへの入力は、PxSELビットがリセットされる前のデバイスピンの入力信号の値を保持する。<br>
<br>
<br>
558行目: 557行目:
  __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>


643行目: 644行目:
最大フルスケール範囲は ±VFSR であり、VFSRは以下の式で定義される。<br>
最大フルスケール範囲は ±VFSR であり、VFSRは以下の式で定義される。<br>
<br>
<br>
<math>\mbox{VFSR} = \dfrac{\mbox{VREF}}{(2 \times \mbox{GAIN PGA})}</math><br>
<math>\mbox{VFSR} = \dfrac{\mbox{VREF}}{(2 \times \mbox{GAIN PGA})}</math><br>
<br>
<br>
  # 計算例 :
  # 計算例 :
  内蔵1.2[V]基準を使用し、ゲイン = 1の場合、最大フルスケール入力範囲を計算する。
  内蔵1.2[V]基準を使用し、ゲイン = 1の場合、最大フルスケール入力範囲を計算する。
   
   
  <math>\mbox{VFSR} = \pm \dfrac{\dfrac{1.2}{2}}{1} = \pm 0.6 \quad \mbox{[V]}</math>
  <math>\pm \mbox{VFSR} = \pm \dfrac{1.2}{2 \times 1} = \pm 0.6 \, \, \mbox{[V]}</math>
<br>
<br>
各ゲイン設定に対するフルスケール範囲 (バイポーラモード) は以下の通りである。<br>
各ゲイン設定に対するフルスケール範囲 (バイポーラモード) は以下の通りである。<br>
* ゲイン1: ±600mV
* ゲイン1
* ゲイン2: ±300mV
*: ±600[mV]
* ゲイン4: ±150mV
* ゲイン2
* ゲイン8: ±75mV
*: ±300[mV]
* ゲイン16: ±37.5mV
* ゲイン4
* ゲイン32: ±18.75mV
*: ±150[mV]
* ゲイン8
*: ±75[mV]
* ゲイン16
*: ±37.5[mV]
* ゲイン32
*: ±18.75[mV]
<br>
<br>
アナログ入力範囲は、フルスケール範囲の80[%]以下に収めることが推奨されている。<br>
アナログ入力範囲は、フルスケール範囲の80[%]以下に収めることが推奨されている。<br>
<br>
<br>
==== 基準電圧 ====
==== 基準電圧 ====
SD16_Aモジュールは内蔵1.2[V]基準電圧を持ち、SD16REFONビットで有効化される。<br>
SD16_Aモジュールは内蔵1.2[V]基準電圧を持ち、SD16REFONビットで有効化される。<br>