AP_Baro: BMP085: allow to easily change oversampling in BMP085

This way it's possible to easily change it if a board requires.
This commit is contained in:
Lucas De Marchi 2015-07-11 16:12:01 -03:00
parent bd6e268122
commit 37e2f6c52e

View File

@ -22,12 +22,16 @@
extern const AP_HAL::HAL &hal; extern const AP_HAL::HAL &hal;
#define BMP085_OVERSAMPLING_ULTRALOWPOWER 0
#define BMP085_OVERSAMPLING_STANDARD 1
#define BMP085_OVERSAMPLING_HIGHRES 2
#define BMP085_OVERSAMPLING_ULTRAHIGHRES 3
#ifndef BMP085_EOC #ifndef BMP085_EOC
#define BMP085_EOC -1 #define BMP085_EOC -1
#endif #endif
// oversampling 3 gives 26ms conversion time. We then average #define OVERSAMPLING BMP085_OVERSAMPLING_ULTRAHIGHRES
#define OVERSAMPLING 3
AP_Baro_BMP085::AP_Baro_BMP085(AP_Baro &baro, AP_HAL::OwnPtr<AP_HAL::I2CDevice> dev) AP_Baro_BMP085::AP_Baro_BMP085(AP_Baro &baro, AP_HAL::OwnPtr<AP_HAL::I2CDevice> dev)
: AP_Baro_Backend(baro) : AP_Baro_Backend(baro)
@ -136,7 +140,6 @@ void AP_Baro_BMP085::update(void)
// Send command to Read Pressure // Send command to Read Pressure
void AP_Baro_BMP085::_cmd_read_pressure() void AP_Baro_BMP085::_cmd_read_pressure()
{ {
// Mode 0x34+(OVERSAMPLING << 6) is osrs=3 when OVERSAMPLING=3 => 25.5ms conversion time
_dev->write_register(0xF4, 0x34 + (OVERSAMPLING << 6)); _dev->write_register(0xF4, 0x34 + (OVERSAMPLING << 6));
_last_press_read_command_time = AP_HAL::millis(); _last_press_read_command_time = AP_HAL::millis();
} }
@ -237,5 +240,23 @@ bool AP_Baro_BMP085::_data_ready()
return AP_HAL::millis() > _last_temp_read_command_time + 5; return AP_HAL::millis() > _last_temp_read_command_time + 5;
} }
return AP_HAL::millis() > _last_press_read_command_time + 26; uint32_t conversion_time_msec;
switch (OVERSAMPLING) {
case BMP085_OVERSAMPLING_ULTRALOWPOWER:
conversion_time_msec = 5;
break;
case BMP085_OVERSAMPLING_STANDARD:
conversion_time_msec = 8;
break;
case BMP085_OVERSAMPLING_HIGHRES:
conversion_time_msec = 14;
break;
case BMP085_OVERSAMPLING_ULTRAHIGHRES:
conversion_time_msec = 26;
default:
break;
}
return AP_HAL::millis() > _last_press_read_command_time + conversion_time_msec;
} }