/******************************************************************************* * skLPS25H.h - LPS25H(I2C接続)関数ライブラリ用インクルードファイル * * * * ============================================================================ * * VERSION DATE BY CHANGE/COMMENT * * ---------------------------------------------------------------------------- * * 1.00 2015-01-21 きむ茶工房(きむしげ) Create * * ============================================================================ * * * * PIC24F用ライブラリに改修 * * 2016/12/27 N.Ishii * *******************************************************************************/ #define LPS331AP 0xBB // LPS331APのID #define LPS25H 0xBD // LPS25HのID // デバイスのレジスタアドレス #define WHO_AM_I_ADRS 0x0F // デバイスの識別ID格納レジスタアドレス #define RES_CONF_ADRS 0x10 // 圧力分解能のモード設定アドレス #define CTRL_REG1_ADRS 0x20 // 制御レジスタ1の設定レジスタアドレス #define CTRL_REG2_ADRS 0x21 // 制御レジスタ2の設定レジスタアドレス #define CTRL_REG3_ADRS 0x22 // 制御レジスタ3の設定レジスタアドレス #define CTRL_REG4_ADRS 0x23 // 制御レジスタ3の設定レジスタアドレス #define STATUS_REG_ADRS 0x27 // ステータス・レジスタアドレス #define PRESS_OUT_ADRS 0x28 // 圧力値データの先頭レジスタアドレス #define TEMP_OUT_ADRS 0x2B // 温度値データの先頭レジスタアドレス #define FIFO_CTRL_ADRS 0x2E // FIFO制御・レジスタアドレス #define FIFO_STATUS_ADRS 0x2F // FIFOステータス・レジスタアドレス #define AMP_CTRL_ADRS 0x30 // アナログ・フロント・エンド制御レジスタアドレス // 圧力分解能のモード設定(内部での平均値読込み回数の設定) #define RES_CONF_DATA 0b01101001 // B6-4=AVGT(64回) B3-0=AVGP(384回) // 制御レジスタ1の設定 #define CTRL_REG1_DATA 0b10010000 // B7=PD(1) B6-4=ODR(1Hz) B3-0=(0000) // 制御レジスタ2の設定 #define CTRL_REG2_DATA 0b01000000 // B6=FIFO_EN(ON) // FIFO制御レジスタの設定 #define FIFO_CTRL_DATA 0b11000111 // B6-5=F_MODE(FIFO_MEAN MODE) B4-0=WTM_POIN(8sample) // FIFOステータスの構造体 union FIFO { char sts ; struct { unsigned WTM_FIFO :1; // ウォーターマーク状態 unsigned FULL_FIFO :1; // FIFOバッファ満杯の状態 unsigned EMPTY_FIFO :1; // FIFOバッファ空の状態 unsigned DIFF_POINT :5; // FIFOに格納されたデータ・レベルの状態 } ; } ; //float Press ; // 大気圧の値を保存する変数 //float Temp ; // 温度の値を保存する変数→ 温度は、HDC1000の方で行うので、コメントアウト: 161228 int PressureInit(int id ,int address) ; void PressureReceive(char reg_adrs,unsigned char *data,char kosu) ; void PressureSend(char reg_adrs,unsigned char *data,char kosu) ; // void PressureRead() ; void PressurePD(char mode) ; float AltitudeCalc(float pressure,int Difference) ;