列挙型 | |
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の入力チャンネルを指定するために使用する。
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 |
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.cpp の 109 行で定義されています。
参照先 rxValue.
参照元 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 | ) |
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 |
const int ad7998::chNum = 8 |
const unsigned char ad7998::cmdAD7998Read[cmdLen] = { ad7998::VinSeq } |
const int ad7998::cmdLen = 1 |
const unsigned char ad7998::initAD7998Str[initLen] = { ad7998::CR , 0x0F, 0xF0 | ad7998::fltr } |
const int ad7998::initLen = 3 |
unsigned char ad7998::rxBuffer[chNum *2] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} |
unsigned char ad7998::rxValue[chNum *2] |