Commit Graph

609 Commits

Author SHA1 Message Date
Andrew Tridgell 8cb0ed364a AP_Baro: read 4 pressure values for every temperature value on BMP085 2013-01-09 23:44:26 +11:00
Andrew Tridgell 1ce1fa3864 AP_Baro: update example to use accumulate() 2013-01-09 23:06:24 +11:00
Andrew Tridgell 8ceabc97f1 AP_Baro: added accumulate() function
this allows us to read the BMP085 much faster
2013-01-09 23:05:17 +11:00
Andrew Tridgell 9b972af307 AP_Baro: skip timer if we don't get the SPI semaphore 2013-01-09 20:27:48 +11:00
James Bielman eca1417858 AP_HAL: Add semaphores to I2C driver.
- Guard I2C transactions with this semaphore in the MS5611 and
  HMC5843 drivers.
2013-01-04 15:43:43 -08:00
Andrew Tridgell c15bf95e19 AP_Baro: fixed example build on AVR 2013-01-04 22:45:02 +11:00
Andrew Tridgell aa64a41512 AP_Baro: removed debug line 2013-01-04 22:26:51 +11:00
Andrew Tridgell 4fe7ad6267 AP_Baro: added averaging to PX4 baro driver 2013-01-04 21:08:20 +11:00
Andrew Tridgell dbcaa4cf3c AP_Baro: average over multiple samples in PX4 baro driver 2013-01-04 20:11:30 +11:00
Andrew Tridgell 2ac6541526 AP_Baro: added PX4 barometer driver 2013-01-04 14:58:24 +11:00
James Bielman d84ba8ef59 Use HAL suspend/resume timer procs rather than atomic.
- Preparation for removing begin/end atomic.
2013-01-03 17:33:13 -08:00
Pat Hickey 5d91f342bb AP_Baro_MS5611: uses new semaphore lib 2013-01-03 13:48:07 -08:00
James Bielman 264db3670e AP_Baro: Add CONFIG_MS5611_SERIAL option to choose between SPI and I2C.
- Update ArduCopter and ArduPlane modules to pass the correct serial
  driver to the MS5611 driver.
- Update barometer examples, assuming SPI.
2013-01-03 13:48:06 -08:00
James Bielman 5753ae5692 AP_Baro: Add I2C support to MS5611 driver. 2013-01-03 13:48:06 -08:00
Andrew Tridgell 374af1cd14 build: change from Arduino.mk to apm.mk 2013-01-02 17:29:37 +11:00
Andrew Tridgell c5ba33d39a AP_Baro: fixed MS5611 semaphore handling 2012-12-21 19:33:57 +11:00
Andrew Tridgell 3aa39da6cd AP_Baro: removed some debug code 2012-12-20 14:53:23 +11:00
Andrew Tridgell a1187519a8 AP_HAL: use AP_HAL_BOARD_DRIVER in remaining test sketches 2012-12-20 14:52:37 +11:00
Andrew Tridgell c15eb97c8d AP_Baro: fixed example build 2012-12-20 14:52:36 +11:00
Pat Hickey eb530b86e8 move Arduino.mk to /mk/Arduino.mk 2012-12-20 14:52:35 +11:00
Pat Hickey 107ab1a694 AP_Baro: translated to SPI transactions 2012-12-20 14:52:32 +11:00
Pat Hickey d92e8045c1 AP_Baro: uses scheduler panic 2012-12-20 14:52:31 +11:00
Pat Hickey 2c2279722b AP_Baro_MS5611: use scheduler panic 2012-12-20 14:52:31 +11:00
Andrew Tridgell 7d27e420ae AP_HAL: remove unnecessary Arduino.h includes 2012-12-20 14:52:30 +11:00
Andrew Tridgell 4a54ffb523 Baro: use local include to reduce boilerplate 2012-12-20 14:52:30 +11:00
Andrew Tridgell dbd9814327 AP_Baro: get rid of apm2_hardware parameter in init 2012-12-20 14:51:38 +11:00
Andrew Tridgell cafeaf91d6 AP_Baro: updates for new AP_Param API 2012-12-20 14:51:38 +11:00
Pat Hickey 475da4eca4 CONFIG_HAL_BOARD - test sketches fixed up, build all passes 2012-12-20 14:51:37 +11:00
Andrew Tridgell 2ea243e45b AP_Baro: removed unused code 2012-12-20 14:51:37 +11:00
Pat Hickey bfd03ab40c AP_Baro: robust spi device 2012-12-20 14:51:35 +11:00
Pat Hickey 60f7788be4 AP_Baro: robust calibration 2012-12-20 14:51:35 +11:00
Pat Hickey eaa0a990a4 AP_Baro: MS5611 robust semaphores 2012-12-20 14:51:35 +11:00
Pat Hickey 52925b655f AP_Baro: MS5611 uses delay in busy wait 2012-12-20 14:51:35 +11:00
Pat Hickey c1114168e4 AP_Baro tests rebase fixups 2012-12-20 14:51:29 +11:00
Pat Hickey a4f1f6a5db AP_Progmem: fix dependencies for all sketches touched by AP_HAL_AVR 2012-12-20 14:51:28 +11:00
Pat Hickey 668caa4a2e Fix calls to AP_HAL::Scheduler::register_timer_process 2012-12-20 14:51:27 +11:00
Pat Hickey 5d40074e4e AP_Baro: port to AP_HAL 2012-12-20 14:51:26 +11:00
Pat Hickey 3f1d9d7f69 AP_Param: #include <AP_Param.h> fixups for libraries & sketches
* I mostly went through with grep and added an #include <AP_Param.h> below
  every #include <AP_Common.h>. Not all of these example sketches might
  strictly need AP_Param.
2012-12-20 14:51:19 +11:00
Andrew Tridgell 3552f3f9c5 AP_Baro: fixed example build 2012-11-24 21:07:41 +11:00
Andrew Tridgell e331634bc5 AP_Baro: switch to SREG = oldSREG pattern for interrupt mask/restore 2012-11-20 22:31:17 +11:00
rmackay9 56f88821e9 AP_AHRS: fix example sketch
AP_Airspeed: fix example sketch
AP_Baro: fix example sketch
AP_Declination: fix example sketch
AP_Math: fix example sketch
2012-11-08 00:08:18 +09:00
rmackay9 1c7118a2d1 AP_Baro: added get_last_update which returns the time the barometer sensor was last read 2012-11-07 19:21:25 +09:00
Andrew Tridgell e5846bd965 AP_Baro: removed _sync_access check
this isn't needed as the common variables are already protected by
cli()/sei()
2012-09-20 17:34:33 +10:00
uncrustify 4cd6657f70 uncrustify libraries/AP_Baro/AP_Baro_BMP085_hil.h 2012-08-21 19:19:51 -07:00
uncrustify fa90f0b80f uncrustify libraries/AP_Baro/AP_Baro.h 2012-08-21 19:00:51 -07:00
uncrustify 1196285266 uncrustify libraries/AP_Baro/AP_Baro_MS5611.h 2012-08-21 19:00:50 -07:00
uncrustify cfcef93e16 uncrustify libraries/AP_Baro/AP_Baro_BMP085.h 2012-08-21 19:00:50 -07:00
uncrustify 5a99d6b697 uncrustify libraries/AP_Baro/AP_Baro_BMP085.cpp 2012-08-21 19:00:18 -07:00
uncrustify b0003c020f uncrustify libraries/AP_Baro/AP_Baro_MS5611.cpp 2012-08-21 19:00:18 -07:00
uncrustify b39411e8d4 uncrustify libraries/AP_Baro/AP_Baro_BMP085_hil.cpp 2012-08-21 19:00:18 -07:00
uncrustify 6f02a645c3 uncrustify libraries/AP_Baro/AP_Baro.cpp 2012-08-21 19:00:18 -07:00
uncrustify 12497c51b5 uncrustify libraries/AP_Baro/examples/AP_Baro_MS5611_test/AP_Baro_MS5611_test.pde 2012-08-21 19:00:18 -07:00
uncrustify fce9044fb4 uncrustify libraries/AP_Baro/examples/AP_Baro_BMP085_test/AP_Baro_BMP085_test.pde 2012-08-21 19:00:17 -07:00
Andrew Tridgell c9ba693e1f AP_Baro: the HIL baro needs to inherit calibrate() from the parent class
this was what caused the renorm errors
2012-08-18 16:32:23 +10:00
Andrew Tridgell 034fb5b194 APM: fixed hil build 2012-08-16 12:53:37 +10:00
Andrew Tridgell 518d6365ff AP_Param: update remaining libraries for new constructor syntax 2012-08-08 12:11:57 +10:00
Andrew Tridgell a7b9aff79f AP_Baro: the DerivativeFilter now handles duplicate data
this saves a few bytes of memory
2012-08-08 12:07:36 +10:00
Andrew Tridgell f501503eb0 AP_Baro: improved barometer averaging
this changes the barometer calculations to floating point. On a MS5611
this is actually about twice as fast as the previous 64 bit
calculations, but gains us more accuracy as we are able to take
advantage of sub-bit precision when we average over 8 samples.
2012-07-06 15:11:30 +10:00
Andrew Tridgell 3c7e521f70 AP_Baro: update MS5611 test to use baro library altitude 2012-07-06 15:11:30 +10:00
Andrew Tridgell 209136386b AP_Baro: added get_pressure_samples() interface
this returns how many samples were used to calculate the last pressure
2012-07-05 16:29:21 +10:00
Andrew Tridgell 185c6e5b32 AP_Baro: change to a 7 point DerivativeFilter for climb rate 2012-07-05 13:00:47 +10:00
Andrew Tridgell f9fc7aafe7 AP_Baro: use DerivativeFilter in barometer climb rate 2012-07-05 13:00:46 +10:00
Andrew Tridgell 9f8703274c AP_Baro: show climb rate in baro test sketch 2012-07-05 13:00:45 +10:00
Andrew Tridgell 057eb5e6f6 Baro: average over all pressure/temperature samples on MS5611
this allows us to use the MS5611 barometer at its full 100Hz sample
rate (80Hz for pressure, 20Hz for temperature). The pressure and
temperature values are averaged between reads without adding any
latency. Previously the driver would throw away values between
readings

This also fixes a race condition in reading from the SPI bus that
could lead to bad values from the barometer
2012-07-02 13:44:53 +10:00
Andrew Tridgell f70cd71791 Baro: fixed build of MS5611 test code 2012-07-02 13:44:53 +10:00
Andrew Tridgell 5bccfbd94c Barometer: fixed airstart for APM
we need to re-load the ground pressure and temperature from eeprom on
and airstart
2012-06-27 16:01:50 +10:00
Andrew Tridgell c387edd74c Baro: added get_altitude() and get_climb_rate() interfaces
this allows the barometer driver to calibrate and return altitude and
climb rate values. This will be used by the AHRS drift correction code
for vertical velocity

The climb rate uses a 5 point average filter
2012-06-27 16:01:50 +10:00
rmackay9 5c9dc00ae2 AP_Baro: fixed comment to clarify that every-other call updates temperature or pressure 2012-06-03 17:31:17 +09:00
Andrew Tridgell 88b2139d91 Baro: added suspend/resume on init 2012-05-01 12:06:54 +10:00
rmackay9 2d65ec2874 AP_Baro - change data type size of temperature's average filter to int32_t (was int16_t) 2012-03-24 23:21:11 +09:00
rmackay9 01cc5fe938 AP_Baro - removed unnecessary 2 element average filtering of pressure (there is a 4 or 5 element average filter in arducopter code itself, two places is messy)
- also removed unused _offset_press variable
2012-03-18 15:18:05 +09:00
rmackay9 7560242721 AP_Baro - added average filter for temperature to replace broken filter
- added average filter (for last two values) for raw pressure
        - changed some "long" to int32_t and "unsigned long" to uint32_t
2012-03-18 01:06:02 +09:00
Jason Short 486c56ce41 Consolidated Barometer pressure sensing to a single filter based on Randy's new filter class. 2012-03-08 23:13:04 -08:00
Jason Short e57b91c2e2 Updated on Barometer - increased the Temp filtering and decreased the pressure filtering to and get less temp noise, faster response from pressure. I'm filtering the Climb rate differently now, so this higher pressure noise should not hurt the derivative calcs at all now. 2012-03-06 20:55:35 -08:00
rmackay9 d81c951849 AP_Baro - fixed small compiler warning to do with order of parameters in constructor 2012-02-29 22:46:29 +09:00
justinbeech 62b104cbfa Found free extra 256 bytes of RAM eliminate _clz use from libgcc
Believe it or not, changing / 2^31 to >>31 saved 256 bytes in the "d" segment.

The reason is that GCC version prior to 4.3.5 does not have a count_leading_zeros (clz) assembler macro, so it uses a 256 byte lookup table called _clz
The _clz table gets pulled in if you do 64 bit division.
This tiny change is the only place that we do long long division.
Changing to a shift saves 256 bytes of ram.
2012-02-17 09:46:05 +00:00
Jason Short 026e4a6567 change constant to float 44330.0 2012-02-15 09:10:14 -08:00
Andrew Tridgell 804332c340 AP_Baro: fixed some signed/unsigned warnings
and a potential bug on timer wrap
2012-02-13 21:39:18 +11:00
justinbeech 69f1613f2c Uncommented cold temp compensation after testing. Fixed read throttle so read rate ends up nailing 100hz, not 90hz. minor commenting improvements. 2012-02-13 00:00:06 +00:00
Randy Mackay b7ce7bfe18 Arduino 1.0 - small fix to make AP_Baro_MS5611_test.pde compile under Arduino 1.0 2012-01-28 13:21:35 +09:00
Randy Mackay ed19c25a97 Arduino 1.0 - changed all #includes of "WProgram.h", "wiring.h" and "WConstants.h to "Arduino.h".
Modified FastSerial's write function to return size_t (number of bytes written).
2012-01-28 12:25:47 +09:00
Andrew Tridgell 897d9a1c0b baro: fixed an integer overflow issue at high altitudes
the averaging array was using 16 bit numbers, but we are storing
numbers with 19 significant bits. That caused overflow at high
altitude, and some very interesting altitude graphs!

Thanks to Michael Oborne for spotting this in a log
2012-01-14 19:51:35 +11:00
Andrew Tridgell 9fb3b13af3 AP_Baro: when I2c fails, don't retry for 1s 2012-01-04 16:35:16 +11:00
Andrew Tridgell 074fd31506 Baro: fixed MS5611 example sketch 2011-12-28 21:49:29 +11:00
Andrew Tridgell f871235480 Baro: show timing in baro test 2011-12-28 21:43:52 +11:00
Andrew Tridgell 7ba744a11a I2C: convert barometer library to new I2C library
this also adds a healthy attribute and error checking
2011-12-28 20:41:53 +11:00
Andrew Tridgell e7720254dd AP_Baro: update MS5611 driver for new ap_proceduce prototype
this saves calling millis() quite so often
2011-12-21 23:31:38 +11:00
Andrew Tridgell bb0f179495 AP_Baro: fixed temperature on MS5611
this caused a 2x scaling of altitude
2011-12-17 14:58:58 +11:00
Andrew Tridgell 3648c81dd9 barometer: fixed HIL barometer build 2011-12-12 15:14:55 +11:00
Pat Hickey f4aaa56b16 AP_Baro_MS5611: Asynchronous operation, plus c++ style changes.
Yeah, I know this was a big change to make all at once.
2011-12-11 15:21:10 -08:00
Pat Hickey d026e48032 AP_Baro : Add init( AP_PeriodicProcess * ) method to interface & implementations
AP_Baro_MS5611 and AP_Baro_BMP085 implement the interface, with stubs only
2011-12-11 15:21:10 -08:00
Pat Hickey a626e21e98 AP_Baro_BMP085: move apm2_hardware flag from init to constructor. 2011-12-11 15:21:10 -08:00
Pat Hickey f3ad7f3af8 Wire and SPI Init: move to sketch system.pde from libraries
* Wire.begin removed from AP_Baro_BMP085::init()
* SPI.begin  removed from AP_Baro_MS5611::init()
* SPI.begin  removed from AP_InertialSensor_MPU6000::hardware_init()

* Both Wire.begin and SPI.begin added very early in init_ardupilot in
  ArduCopter/system.pde and ArduPlane/system.pde
2011-12-11 15:21:10 -08:00
Pat Hickey 1bfab64543 AP_Baro_BMP085: Delete commented out code
* If its important to get old code back, thats why version control exists
2011-12-11 15:21:09 -08:00
Pat Hickey f3270b7f13 AP_Baro_BMP085: implement AP_Baro interface 2011-12-11 15:21:09 -08:00
Pat Hickey f52453beed AP_Baro_MS5611: init must also perform SPI.begin 2011-12-11 15:21:09 -08:00
Pat Hickey 64eb1889ab AP_Baro_MS5611: CS pin is arduino pin 40 2011-12-11 15:21:09 -08:00
Pat Hickey 1832ed0355 AP_Baro_MS5611: Implement AP_Baro interface 2011-12-11 15:21:09 -08:00
Pat Hickey f0ab0318b3 AP_Baro_BMP085: Conform to AP_Baro interface. Make the rest private. 2011-12-11 15:21:09 -08:00
Pat Hickey a41b6da263 AP_Baro_MS5611: conform to AP_Baro interface 2011-12-11 15:21:09 -08:00
Pat Hickey d113992c10 AP_Baro: Create virtual interface 2011-12-11 15:21:09 -08:00
Pat Hickey fdffd69257 AP_Baro_MS5611: renamed class implementation from APM_MS5611 2011-12-11 15:21:09 -08:00
Pat Hickey c407b0d85e AP_Baro_MS5611.h: reorganized
* moved ms5611 macros to c file
* reorganized class declaration & retabbed
* made Temp, Pres, and Alt private variables.
2011-12-11 15:21:09 -08:00
Pat Hickey 34cebd8a3e AP_Baro_MS5611: Overwrote with Jose Julio's latest files. 2011-12-11 15:21:09 -08:00
Pat Hickey cc6837cbab AP_Baro: Export AP_Baro_BMP085 and AP_Baro_BMP085_HIL headers. 2011-12-11 15:21:09 -08:00
Pat Hickey f445ec1242 AP_Baro_BMP085(+_HIL): Rename classes from APM_BMP085 to AP_Baro_BMP085. 2011-12-11 15:21:09 -08:00
Pat Hickey 7032c32b42 BMP085 fix line endings 2011-12-11 15:21:09 -08:00
Pat Hickey 7ef146044e AP_Baro: move all APM_BMP085 files inside AP_Baro 2011-12-11 15:21:09 -08:00
Pat Hickey 9250053bfe Added AP_Baro and AP_Baro_MS5611 classes.
Incomplete and does not work.
2011-12-11 15:21:08 -08:00