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

 
(同じ利用者による、間の7版が非表示)
36行目: 36行目:
<br>
<br>
MSP430G2553の省電力機能と組み合わせることで、バッテリー駆動のセンサアプリケーションに最適な低消費電力システムを構築することができる。<br>
MSP430G2553の省電力機能と組み合わせることで、バッテリー駆動のセンサアプリケーションに最適な低消費電力システムを構築することができる。<br>
<br><br>
== ADC10モジュールの各レジスタ ==
MSP430G2553のADC10モジュールには、制御レジスタ、データ格納レジスタ、DTC (Data Transfer Controller) 関連のレジスタ等、7つの主要なレジスタが存在する。<br>
<br>
[[ファイル:MSP430G2553 ADC10 Registers.png|フレームなし|中央]]
<br>
==== ADC10CTL0 / ADC10CTL1 (制御レジスタ) ====
これらの16ビットレジスタは、ADC10モジュールの心臓部とも言える存在である。<br>
ADC10CTL0レジスタは、リファレンス電圧の選択、サンプリング時間、内蔵リファレンスの制御、モジュールの有効化、割り込み制御を担当する。<br>
ADC10CTL1レジスタは、入力チャンネルの選択、クロックソースと分周比の設定、変換モードの選択を行う。<br>
<br>
例えば、SREF2、SREF1、SREF0という3ビットのフィールドは、リファレンス電圧源を選択する役割を持つ。<br>
<br>
==== ADC10MEM (変換結果格納レジスタ) ====
この16ビットレジスタはデータ格納専用のレジスタであり、実際には10ビットの変換結果を格納する。<br>
ADC10CTL1レジスタのADC10DFビットの設定により、変換結果を上位10ビット (ビット15~6) に格納、または、下位10ビット (ビット0~9) に格納するかを選択できる。<br>
<br>
上位10ビットモードは、変換結果を直接16ビット値として扱う場合に便利である。<br>
例えば、変換結果を0~1023の範囲から0~65472の範囲にスケーリングする場合に活用する。<br>
<br>
下位10ビットモードは、0~1023の範囲でそのまま扱う場合に適している。<br>
<br>
多くのアプリケーションでは、計算の簡便性から下位10ビットモードが使用することが多い。<br>
<br>
==== ADC10AE0 (アナログ入力有効化レジスタ) ====
ADC10AE0レジスタは8ビットのレジスタであり、各ビットが対応するアナログ入力チャンネル (A0~A7) の有効化を制御する。<br>
<u>このレジスタの設定を忘れた場合、ピンがデジタルI/Oモードのままになってしまい、アナログ信号を正常に読み取ることができない。</u><br>
<br>
例えば、チャンネルA0 (P1.0) と A1 (P1.1) をアナログ入力として使用する場合、<code>ADC10AE0 = BIT0 | BIT1;</code> というコードを記述する。<br>
<br>
実務では、このレジスタの設定は必須である。<br>
ADC10CTL0 / ADC10CTL1レジスタを正しく設定していても、ADC10AE0レジスタの設定を忘れた場合、変換結果が常に0 あるいは 不定値を示す原因となる。<br>
<br>
==== ADC10SA (DTC開始アドレスレジスタ) ====
ADC10SAレジスタは16ビットのアドレスレジスタで、DTC (Data Transfer Controller) 機能を使用する場合に重要である。<br>
<br>
DTCは、CPUの介入なしに変換結果を自動的にメモリに転送する便利な機能である。<br>
ADC10SAレジスタには、変換結果を格納するメモリ領域の開始アドレスを設定する。<br>
<br>
例えば、変換結果を配列 <code>unsigned int adc_results[10];</code> に格納する場合、<code>ADC10SA = (unsigned int)adc_results;</code> と指定する。<br>
DTCは、このアドレスから順番に変換結果を書き込む。<br>
この機能を使用することにより、複数チャンネルの連続変換や同じチャンネルの複数回サンプリングを、CPUの負荷をあまり掛けずに実行することができる。<br>
<br>
==== ADC10DTC0 / ADC10DTC1 (DTC制御レジスタ) ====
これら2つは8ビットレジスタであり、DTCの動作を詳細に制御する。<br>
<br>
ADC10DTC0は主にDTCのモード設定を行い、ADC10DTC1は転送回数を指定する。<br>
<br>
ADC10DTC0レジスタには2つの重要なビットがある。<br>
* ADC10CT
** ビット0
**: <u>連続転送モード</u> を制御する。
** ビット1
**: 指定した回数の転送が完了した後も、自動的に最初のアドレスから転送を再開する。
**: これは、センサデータを連続的に収集し続ける場合に便利である。
*: <br>
* ADC10TB
** ビット1
**: <u>2ブロック転送 (Ping-Pongモード)</u> を有効化する。
**: 2つのメモリブロックを交互に使用することにより、一方のブロックにデータを転送している間に、もう一方のブロックのデータをCPUが処理できるようになる。
**: これは、リアルタイム性が要求されるアプリケーションで有用である。
<br>
ADC10DTC1レジスタは、転送回数を8ビット値で指定する。<br>
1〜256回までの任意の転送回数を指定することができる。<br>
* 0x00
*: 256回の転送
* 0x01
*: 1回の転送
* 0x02
*: 2回の転送
* 0xFF
*: 255回の転送
<br><br>
<br><br>


74行目: 147行目:
| A10 || 内部温度センサ || MSP430G2553の内蔵温度センサ
| A10 || 内部温度センサ || MSP430G2553の内蔵温度センサ
|-
|-
| A11 || (VCC - VSS) / 2 || 電源電圧の半分の値
| A11 || <math>\dfrac{\mbox{VCC} - \mbox{VSS}}{2}</math> || 電源電圧の半分の値
|-
|-
| その他 || 内部信号 || デバイス固有の内部信号
| その他 || 内部信号 || デバイス固有の内部信号
289行目: 362行目:
==== ADC10MEM (ADC10 Memory Register) ====
==== ADC10MEM (ADC10 Memory Register) ====
変換結果を格納するレジスタ。<br>
変換結果を格納するレジスタ。<br>
10ビットの変換結果が格納される。(16ビットレジスタの上位10ビット または 下位10ビット)<br>
10ビットの変換結果が格納される。
<br>
(16ビットレジスタの上位10ビット または 下位10ビット)<br>
<br>
<br>
==== ADC10AE0 (ADC10 Analog Enable Register 0) ====
==== ADC10AE0 (ADC10 Analog Enable Register 0) ====
295行目: 370行目:
各ビットが対応するアナログチャンネル (A0~A7) のピンをアナログ機能に設定する。<br>
各ビットが対応するアナログチャンネル (A0~A7) のピンをアナログ機能に設定する。<br>
<br>
<br>
# 使用例
  <syntaxhighlight lang="c">
  <syntaxhighlight lang="c">
// 使用例
  ADC10AE0 = BIT0 | BIT1; // A0とA1を有効化
  ADC10AE0 = BIT0 | BIT1; // A0とA1を有効化
  </syntaxhighlight>
  </syntaxhighlight>
302行目: 377行目:
<center>
<center>
{| class="wikitable"
{| class="wikitable"
|+ ADC10AE0レジスタ
|-
|-
! ビット !! チャンネル !! ポート !! 機能
! ビット !! チャンネル !! ポート !! 機能
334行目: 410行目:
! レジスタ !! アドレス !! ビット幅 !! 機能 !! 詳細説明
! レジスタ !! アドレス !! ビット幅 !! 機能 !! 詳細説明
|-
|-
| ADC10DTC0 || 048h || 8ビット || DTC有効化と<br>転送制御 || ADC10CT(ビット0):連続転送有効化<br>ADC10TB(ビット1):ブロック転送選択<br>その他のビット:転送モード制御
| ADC10DTC0 || 048h || 8ビット || DTC有効化と<br>転送制御 || ADC10CT (ビット0):連続転送有効化<br>ADC10TB (ビット1):ブロック転送選択<br>その他のビット:転送モード制御
|-
|-
| ADC10DTC1 || 049h || 8ビット || 転送回数設定 || 1~256回の転送回数を指定<br>(0x00:256回、0x01:1回、0xFF:255回)
| ADC10DTC1 || 049h || 8ビット || 転送回数設定 || 1~256回の転送回数を指定<br>(0x00:256回、0x01:1回、0xFF:255回)
|}
|}
</center>
<br>
<br>
<center>
<center>
{| class="wikitable"
{| class="wikitable"
|+ <center>
|+ ADC10DTC0レジスタの内容と設定
|-
|-
! ビット !! 名称 !! 機能 !! 説明
! ビット !! 名称 !! 機能 !! 説明
665行目: 742行目:
     ADC10AE0 = BIT1;
     ADC10AE0 = BIT1;
   
   
     // P1.3 を VEREF+ / VEREF- として設定
     // 外部リファレンス電圧の使用について
     // (ハードウェアで P1.3 に外部リファレンス電圧を接続する必要がある)
    // SREF_7の設定により、ハードウェアが自動的にVEREF+とVEREF-ピンをリファレンス入力として使用する
    //
    // ハードウェア接続:
    // - 基準電圧源の正側をVEREF+ピン (P1.3) に接続
     // - 基準電圧源の負側をVEREF-ピン (P1.3) に接続
    //
    // 注意:P1SELやP1SEL2の設定は不要である
   
   
     while(1)
     while(1)