Merge pull request #604 from kbeckmann/pr_bmp085_b5-fix

BMP085: Fix B5 calculation
This commit is contained in:
Vowstar 2015-08-18 23:08:06 +08:00
commit 77297662fd
1 changed files with 9 additions and 6 deletions

View File

@ -79,7 +79,7 @@ static int ICACHE_FLASH_ATTR bmp085_init(lua_State* L) {
return 1;
}
static int16_t ICACHE_FLASH_ATTR bmp085_temperature(void) {
static uint32_t bmp085_temperature_raw_b5(void) {
int16_t t, X1, X2;
platform_i2c_send_start(bmp085_i2c_id);
@ -94,8 +94,12 @@ static int16_t ICACHE_FLASH_ATTR bmp085_temperature(void) {
t = r16(bmp085_i2c_id, 0xF6);
X1 = ((t - bmp085_data.AC6) * bmp085_data.AC5) >> 15;
X2 = (bmp085_data.MC << 11)/ (X1 + bmp085_data.MD);
t = (X2 + X1 + 8) >> 4;
return t;
return X1 + X2;
}
static int16_t ICACHE_FLASH_ATTR bmp085_temperature(void) {
return (bmp085_temperature_raw_b5() + 8) >> 4;
}
static int ICACHE_FLASH_ATTR bmp085_lua_temperature(lua_State* L) {
@ -148,7 +152,7 @@ static int ICACHE_FLASH_ATTR bmp085_lua_pressure_raw(lua_State* L) {
static int ICACHE_FLASH_ATTR bmp085_lua_pressure(lua_State* L) {
uint8_t oss = 0;
int32_t p, t;
int32_t p;
int32_t X1, X2, X3, B3, B4, B5, B6, B7;
if (lua_isnumber(L, 1)) {
@ -159,9 +163,8 @@ static int ICACHE_FLASH_ATTR bmp085_lua_pressure(lua_State* L) {
}
p = bmp085_pressure_raw(oss);
t = bmp085_temperature();
B5 = bmp085_temperature_raw_b5();
B5 = (t << 4) - 8;
B6 = B5 - 4000;
X1 = ((int32_t)bmp085_data.B2 * ((B6 * B6) >> 12)) >> 11;
X2 = ((int32_t)bmp085_data.AC2 * B6) >> 11;