\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
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;
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;
}
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
*H=g2;\r
//*P=\r
\r
-\r
}\r
\r