- メインページ
- ネームスペース
- クラス
- ファイル

- ネームスペース一覧
- ネームスペースメンバ

# ネームスペース ad7998

## 説明

AD7998 ADコンバーター用ネームスーペース AD7998, AD7997のレジスタアドレスとコマンドを定義する

## 列挙型
enum | adcChannel { Vin1 = 0, Vin2, Vin3, Vin4, Vin5, Vin6, Vin7, Vin8 }
| AD7998 ADCチャンネル指定型 AD7998, AD7997の入力チャンネルを指定するために使用する。 [詳細]
## 関数
void | callBack (bool rcv)
| コールバック関数
void | init (void)
| AD7998 初期化
void | start (void)
| AD7998 変換開始
shortfract | getValue (adcChannel vin)
| AD7998から取得したデータを獲得
## 変数
const unsigned int | CRR = 0
| Conversion Result Register (Read)
const unsigned int | ASR = 1
| Alert Status Register (Read/Write)
const unsigned int | CR = 2
| Configuration Register (Read/Write)
const unsigned int | CTR = 3
| Cycle Timer Register (Read/Write)
const unsigned int | DLR1 = 4
| DATALOW Reg CH1 (Read/Write)
const unsigned int | DHR1 = 5
| DATAHIGH Reg CH1 (Read/Write)
const unsigned int | HR1 = 6
| Hysteresis Reg CH1 (Read/Write)
const unsigned int | DLR2 = 7
| DATALOW Reg CH2 (Read/Write)
const unsigned int | DHR2 = 8
| DATAHIGH Reg CH2 (Read/Write)
const unsigned int | HR2 = 9
| Hysteresis Reg CH2 (Read/Write)
const unsigned int | DLR3 = 10
| DATALOW Reg CH3 (Read/Write)
const unsigned int | DHR3 = 11
| DATAHIGH Reg CH3 (Read/Write)
const unsigned int | HR3 = 12
| Hysteresis Reg CH3 (Read/Write)
const unsigned int | DLR4 = 13
| DATALOW Reg CH4 (Read/Write)
const unsigned int | DHR4 = 14
| DATAHIGH Reg CH4 (Read/Write)
const unsigned int | HR4 = 15
| Hysteresis Reg CH4 (Read/Write)
const unsigned int | ch1 = 0x0010
| ad7998::CRのチャンネル指定用。Vin1
const unsigned int | ch2 = 0x0020
| ad7998::CRのチャンネル指定用。Vin2
const unsigned int | ch3 = 0x0040
| ad7998::CRのチャンネル指定用。Vin3
const unsigned int | ch4 = 0x0080
| ad7998::CRのチャンネル指定用。Vin4
const unsigned int | ch5 = 0x0100
| ad7998::CRのチャンネル指定用。Vin5
const unsigned int | ch6 = 0x0200
| ad7998::CRのチャンネル指定用。Vin6
const unsigned int | ch7 = 0x0400
| ad7998::CRのチャンネル指定用。Vin7
const unsigned int | ch8 = 0x0800
| ad7998::CRのチャンネル指定用。Vin8
const unsigned int | fltr = 0x0008
| ad7998::CRの設定用。フィルタを使う
const unsigned int | VinSeq = 0x70
| Mode2コマンド。 ad7998::CRで指定した入力からデータを連続取得
const int | AD7998 = 0x20
| AD7997デバイスアドレス
const int | initLen = 3
| 初期化文字列の長さ
const int | cmdLen = 1
| コマンド文字列の長さ
const unsigned char | initAD7998Str [initLen] = { ad7998::CR , 0x0F, 0xF0 | ad7998::fltr }
| AD7998初期化文字列
const unsigned char | cmdAD7998Read [cmdLen] = { ad7998::VinSeq }
| AD7998コマンド文字列
const int | chNum = 8
| ADCチャンネル数
unsigned char | rxBuffer [chNum *2] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
| データ受信バッファ
unsigned char | rxValue [chNum *2]
| データ受信バッファ

## 列挙型

enum ad7998::adcChannel

AD7998 ADCチャンネル指定型 AD7998, AD7997の入力チャンネルを指定するために使用する。

列挙型の値:

  Vin1 | Mode2コマンド。Vin1からの入力を取得
  Vin2 | Mode2コマンド。Vin2からの入力を取得
  Vin3 | Mode2コマンド。Vin3からの入力を取得
  Vin4 | Mode2コマンド。Vin4からの入力を取得
  Vin5 | Mode2コマンド。Vin5からの入力を取得
  Vin6 | Mode2コマンド。Vin6からの入力を取得
  Vin7 | Mode2コマンド。Vin7からの入力を取得
  Vin8 | Mode2コマンド。Vin8からの入力を取得

ad7998.h の 13 行で定義されています。

    00013                     {
    00014         Vin1 = 0, ///< Mode2コマンド。Vin1からの入力を取得
    00015         Vin2,     ///< Mode2コマンド。Vin2からの入力を取得
    00016         Vin3,     ///< Mode2コマンド。Vin3からの入力を取得
    00017         Vin4,     ///< Mode2コマンド。Vin4からの入力を取得
    00018         Vin5,     ///< Mode2コマンド。Vin5からの入力を取得
    00019         Vin6,     ///< Mode2コマンド。Vin6からの入力を取得
    00020         Vin7,     ///< Mode2コマンド。Vin7からの入力を取得
    00021         Vin8      ///< Mode2コマンド。Vin8からの入力を取得
    00022     };

## 関数

void ad7998::callBack | ( | bool | rcv | ) |

コールバック関数

引数:

  | rcv | 受信コールバックなら1

twi::writeReadAsync() 関数に渡すコールバック。AD7998の変換データ読み込み完了を をトリガにして、受信データの取得を行う。

ad7998.cpp の 134 行で定義されています。

参照先 AD7998, chNum, cmdAD7998Read, cmdLen, rxBuffer, rxValue, と twi::writeReadAsync().

参照元 start().

    00135     {
    00136         unsigned int imask;
    00137
    00138         imask = cli();  // 割込み禁止
    00139
    00140         for ( int i= 0; i<chNum*2; i++ )
    00141             rxValue[i] = rxBuffer[i];          // 受信データをコピーしてくる。
    00142
    00143         sti(imask);     // 割込み禁止解除
    00144
    00145         twi::writeReadAsync(
    00146                 AD7998,             // I2Cデバイス・アドレス（送信）
    00147                 cmdAD7998Read,      // Mode2転送を指定するコマンド
    00148                 cmdLen,             // コマンド長
    00149                 AD7998,             // I2Cデバイス・アドレス（受信）
    00150                 rxBuffer,           // データ受信バッファ
    00151                 chNum*2,            // データ受信バイト数
    00152                 ad7998::callBack    // コールバック関数
    00153             );     // Mode2読み出し設定
    00154
    00155     }

shortfract ad7998::getValue | ( | adcChannel | vin | ) |

AD7998から取得したデータを獲得

引数:

  | vin | AD7997のアナログ入力チャンネル番号。1..8の値を指定する。

AD7998から取得したデータを取り出す。vinはピン名である。返り値は 0..1.0の値をとる。

ad7998.cpp の 109 行で定義されています。

参照先 rxValue, と afw::temp.

参照元 afw::processData().

    00110     {
    00111         unsigned int imask;
    00112         shortfract val;
    00113         short temp;
    00114         int index;
    00115
    00116         imask = cli();                              // 割込み禁止
    00117
    00118         index = (int)vin*2;                         // チャンネル番号をバイト・インデックスに変換
    00119         temp = ( rxValue[index]<<8 ) + rxValue[index+1];     // ビッグ・エンディアンの値を取り出す
    00120         temp &= 0x0FFF;                             // チャンネル番号をマクス・オフ
    00121         val.v = temp << 3;                          // 12bit値を15bit値(符号付16bitの正の部分)に変換
    00122
    00123         sti(imask);                                 // 割込み禁止解除
    00124
    00125         return val;
    00126     }

void ad7998::init | ( | void |  | ) |

AD7998 初期化

TWI上のAD7998を初期化する。

ad7998.cpp の 95 行で定義されています。

参照元 main().

    00096     {
    00097     }

void ad7998::start | ( | void |  | ) |

AD7998 変換開始

TWI上のAD7998でのMode2での変換を開始する。変換は連続的に行われる。 変換結果は 7998getValueによって取得できる。

ad7998.cpp の 99 行で定義されています。

参照先 AD7998, callBack(), initAD7998Str, initLen, と twi::writeAsync().

参照元 main().

    00100     {
    00101         twi::writeAsync(    // コントロールレジスタの設定
    00102                     AD7998,             // デバイスアドレス
    00103                     initAD7998Str,      // AD7998初期化ストリング
    00104                     initLen,            // 初期化ストリング長
    00105                     ad7998::callBack    // 終わったらcallBack関数を呼ぶ
    00106                   );
    00107     }

## 変数

const int ad7998::AD7998 = 0x20

AD7997デバイスアドレス

AD7998のI2Cアドレス。

ad7998.cpp の 47 行で定義されています。

参照元 callBack(), と start().

const int ad7998::chNum = 8

ADCチャンネル数

AD7998のチャンネル数。

ad7998.cpp の 76 行で定義されています。

参照元 callBack().

const unsigned char ad7998::cmdAD7998Read[cmdLen] = { ad7998::VinSeq }

AD7998コマンド文字列

AD7998のモード2転送で用いるコマンド文字列。

ad7998.cpp の 70 行で定義されています。

参照元 callBack().

const int ad7998::cmdLen = 1

コマンド文字列の長さ

AD7998に送るコマンド文字列の長さ。

ad7998.cpp の 59 行で定義されています。

参照元 callBack().

const unsigned char ad7998::initAD7998Str[initLen] = { ad7998::CR , 0x0F, 0xF0 | ad7998::fltr }

AD7998初期化文字列

コントロール・レジスタのアドレス1バイトと、その内容2バイトからなる。

ad7998.cpp の 65 行で定義されています。

参照元 start().

const int ad7998::initLen = 3

初期化文字列の長さ

AD7998に送る初期化文字列の長さ。

ad7998.cpp の 53 行で定義されています。

参照元 start().

unsigned char ad7998::rxBuffer[chNum *2] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

データ受信バッファ

TWI用の受信バッファ。AD7998の変換結果を受け取る。

ad7998.cpp の 83 行で定義されています。

参照元 callBack().

unsigned char ad7998::rxValue[chNum *2]

データ受信バッファ

ad7998::rxBufferの値を移しておく。

ad7998.cpp の 90 行で定義されています。

参照元 callBack(), と getValue().