BMP280から気圧データを取得します。updateで更新動作、getpressで値を読み出します

Dependents:   SensorManager

Files at this revision

API Documentation at this revision

Comitter:
kim1212
Date:
Tue Feb 13 04:19:43 2018 +0000
Parent:
0:54d7f18450e6
Commit message:
?????????????????

Changed in this revision

BMP280.cpp Show annotated file Show diff for this revision Revisions of this file
BMP280.h Show annotated file Show diff for this revision Revisions of this file
diff -r 54d7f18450e6 -r a65c7f637b1e BMP280.cpp
--- a/BMP280.cpp	Sun Dec 04 14:38:21 2016 +0000
+++ b/BMP280.cpp	Tue Feb 13 04:19:43 2018 +0000
@@ -4,7 +4,7 @@
 BMP280::BMP280(PinName mosi,PinName miso,PinName sck,PinName _cs):bmp(mosi,miso,sck),cs(_cs)
 {
     cs=1;
-    bmp.frequency(1000000);
+    bmp.frequency(10000000);
     bmp.format(8,3);
     
     wait(0.1);
@@ -43,12 +43,17 @@
 
 }
 
-void BMP280::init(char t_osr,char p_osr,char t_sb,char IIR){
-    char data=((t_osr<<5)|(p_osr<<2))|0b11;
+void BMP280::init(char t_osr,char p_osr,char IIR){
+    _t_osr=t_osr;
+    _p_osr=p_osr;
+    _IIR=IIR;
+    
+    //forced mode trigger
+    char data=((t_osr<<5)|(p_osr<<2))|0b01;
     writebyte(0xf4,data);//config
     
     data=0;
-    data=(t_sb<<5)|(IIR<<2);
+    data=(IIR<<2);
     writebyte(0xf5,data);
 }
 
@@ -117,15 +122,22 @@
     
     adc_P=(int)((data[2]>>4)|(data[1]<<4))|(data[0]<<12);
     
+    //forced mode trigger
+    char buf=((_t_osr<<5)|(_p_osr<<2))|0b01;
+    writebyte(0xf4,buf);//config
+    buf=(_IIR<<2);
+    writebyte(0xf5,buf);
+    
     bmp280_compensate_T_int32(adc_T);
     press=bmp280_compensate_P_int64(adc_P);
 
+    
+    
     return true;
-    }
+    }else return false;
     
-return false;
 }
 
-float BMP280::getpress(){
-    return (float)press;
+unsigned int BMP280::getpress(){
+    return press;
 }
\ No newline at end of file
diff -r 54d7f18450e6 -r a65c7f637b1e BMP280.h
--- a/BMP280.h	Sun Dec 04 14:38:21 2016 +0000
+++ b/BMP280.h	Tue Feb 13 04:19:43 2018 +0000
@@ -9,7 +9,7 @@
 
 int main() {
     
-    bmp.init(OSR_1,OSR_4,T_SB_0_5,IIR_0);
+    bmp.init(OSR_1,OSR_4,IIR_0);
     
     
     while(1) {
@@ -26,18 +26,9 @@
 #define OSR_8 0b100
 #define OSR_16 0b101
 
-#define T_SB_0_5 0b000
-#define T_SB_62_5 0b001
-#define T_SB_125 0b010
-#define T_SB_250 0b011
-#define T_SB_500 0b100
-#define T_SB_1000 0b101
-#define T_SB_2000 0b110
-#define T_SB_4000 0b111
-
 #define IIR_0 0b000
 #define IIR_4 0b100
-#define IIR_16 0b10000
+#define IIR_16 0b111
 
 
 
@@ -47,7 +38,7 @@
 
 public:
     BMP280(PinName mosi,PinName miso,PinName sck,PinName _cs);
-    void init(char t_osr,char p_osr,char t_sb,char IIR);
+    void init(char t_osr,char p_osr,char IIR);
     char readbyte(char adr);
     void writebyte(char adr,char data);
     void readnbyte(char adr,char *data,char num);
@@ -55,7 +46,7 @@
     int bmp280_compensate_T_int32(int adc_T);
     unsigned int bmp280_compensate_P_int64(int adc_P);
     bool update();
-    float getpress();
+    unsigned int getpress();
     
 
 private:
@@ -66,6 +57,9 @@
     short dig_T2,dig_T3,dig_P2,dig_P3,dig_P4,dig_P5,dig_P6,dig_P7,dig_P8,dig_P9;
     unsigned int press;
     
+    char _t_osr;
+    char _p_osr;
+    char _IIR;
     
 
 };