Many changes from 2018
[owSlave2.git] / common / I2C / BME680.c
index 9907867..3d2bec7 100644 (file)
@@ -76,8 +76,9 @@
 \r
 #include <util/delay.h>\r
 #include <avr/pgmspace.h>\r
+#include <avr/interrupt.h>\r
 \r
-#include "USI_TWI_Master.h"\r
+#include "TWI_Master.h"\r
 #include "BME680.h"\r
 \r
 #define WC 0b11101100\r
@@ -237,6 +238,14 @@ const float lookup_k2_range[16] PROGMEM = {
        8e6, 4e6, 2e6, 1e6,499500.4995, 248262.1648, 125000, 63004.03226,
 31281.28128, 15625, 7812.5, 3906.25,1953.125,976.5625, 488.28125, 244.140625};\r
 \r
+const float lookup_k1_range1[16]  = {
+       1, 1, 1, 1, 1,0.99, 1, 0.992,
+1, 1, 0.998, 0.995, 1, 0.99, 1, 1};
+const float lookup_k2_range1[16]  = {
+       8e6, 4e6, 2e6, 1e6,499500.4995, 248262.1648, 125000, 63004.03226,
+31281.28128, 15625, 7812.5, 3906.25,1953.125,976.5625, 488.28125, 244.140625};\r
+\r
+\r
 double bme680_compensate_gas_double(uint16_t gas_adc_u16, uint8_t gas_range_u8)
 {
        double gas_res_d = 0;
@@ -248,11 +257,14 @@ double bme680_compensate_gas_double(uint16_t gas_adc_u16, uint8_t gas_range_u8)
        double var1 = 0;
        float a1= pgm_read_float(&(lookup_k1_range[gas_range_u8]));
        float a2= pgm_read_float(&(lookup_k2_range[gas_range_u8]));
+       //float a1=lookup_k1_range1[gas_range_u8];
+       //float a2=lookup_k2_range1[gas_range_u8];
 
        range_switching_error_val =     calib.range_switching_error;
 
 
        var1 = (1340.0 + (5.0 * range_switching_error_val))*a1;
+
        gas_res_d = var1*a2/(gas_adc_u16-512.0+var1);
        return gas_res_d;
 }
@@ -345,6 +357,7 @@ void readBMP680(int16_t *T,uint16_t *H,uint32_t *P,uint16_t *G){
        I2c_StopCondition();\r
        *G=(((uint16_t)g1)<<2)|(g2>>6);\r
        *P=*G;\r
+       \r
        *G= bme680_compensate_gas_double(*G,g2&0xF)/10.0;\r
 \r
        int32_t temp_comp = 0;\r
@@ -431,6 +444,5 @@ void readBMP680(int16_t *T,uint16_t *H,uint32_t *P,uint16_t *G){
        *H=g2;\r
        //*P=\r
 \r
-\r
 }\r
 \r