Andrew Tridgell
2c1682f310
InertialSensor: use AP_HAL progmem
2012-12-20 14:51:39 +11:00
Andrew Tridgell
c9a81d7de6
AP_InertialSensor: fixed sign of 16 bit SPI transfer
...
this gets accels and gyros working again
2012-12-20 14:51:36 +11:00
Pat Hickey
9aca19415a
AP_InertialSensor: robust semaphores
2012-12-20 14:51:36 +11:00
Pat Hickey
1019fb45e7
AP_InertialSensor: remove sei in data interrupt handler
2012-12-20 14:51:36 +11:00
Pat Hickey
4acf2c8591
AP_InertialSensor: ported to AP_HAL
2012-12-20 14:51:26 +11:00
rmackay9
b4e5176e2a
ArduCopter, AP_InertialSensor: restore mpu6k sample rate to 200hz but keep default filtering at 42hz.
2012-12-09 14:27:33 +09:00
Andrew Tridgell
3b18c57691
AP_InertialSensor: removed axis getters for accel/gyro
...
these were only being used in one place, and in that place were used
incorrectly!
2012-12-04 09:11:55 +11:00
Andrew Tridgell
b237c0583d
AP_InertialSensor: Added INS_MPU6K_FILTER option
...
this allows the user to select the MPU6000 filtering frequency
2012-11-30 07:15:19 +11:00
Andrew Tridgell
089ae0f9f3
AP_InertialSensor: allow specification of sample rate in init() call
...
this lets the caller not need to know the underlying sample rate. They
just ask for what rate updates happen.
This also changes the MPU6k filtering to be less than half the sample
rate
2012-11-30 07:15:18 +11:00
Andrew Tridgell
f843705da3
INS: switch to SREG = oldSREG pattern for interrupt mask/restore
2012-11-20 22:31:23 +11:00
Andrew Tridgell
3776e6108f
INS: use vector subtraction to make code clearer
2012-11-20 18:32:27 +11:00
rmackay9
8ccac5da3d
AP_InertialSensor: correct typo to datasheet's filename
2012-11-20 00:37:42 +09:00
rmackay9
d9b4407e64
AP_InertialSensor: changes after review with Tridge.
...
sanity checking added to accelerometer calibration routine.
user feedback is sent using gcs_send_text_fmt instead of Serial.printf.
moved ins parameters to new eeprom number to avoid conflicts with older parameters.
other small changes including renaming of functions and parameters.
2012-11-07 19:21:15 +09:00
rmackay9
49de46a548
AP_InertialSensor: merge in calibration features from IMU library
...
add gauss-newton method of accelerometer calibration
2012-11-07 19:20:27 +09:00
rmackay9
8c6fd340d7
AP_AHRS: added scheduler parameter to init
...
Required by the AP_AHRS_MPU6000 class which needs to disable timed processes that could interfere with it's communication with the mpu6000
2012-09-29 13:51:21 +09:00
rmackay9
41fbb19cf5
AP_InertialSensor_MPU6000: replaced _cs_pin parameter with #define and saved 1 byte of memory
...
Updated ArduCopter, ArduPlane and example sketches in AP_InertialSensor, AP_IMU and AP_AHRS libraries because they no longer need to pass in cs_pin to the constructor
2012-09-28 19:21:59 +09:00
rmackay9
921ab3fe12
ArduCopter: bug fix to DMP initialisation (it was freezing due to SPI bus conflicts)
2012-09-28 18:34:23 +09:00
Andrew Tridgell
7e544e8ead
MPU6k: save 72 bytes of memory
...
the buffer can be on the stack
2012-09-18 13:58:50 +10:00
rmackay9
130f3b0030
AP_InertialSensor_MPU6000: move _last_sample_time_micros to capture time data_interrupt was called
2012-09-10 11:38:08 +09:00
rmackay9
7a265dbf61
AP_InertialSensor: use AP_TimerProcess's queue_process to run read from MPU6000 after any currently running processes complete
2012-09-10 11:38:03 +09:00
rmackay9
0a6219695b
AP_InertialSensor: changed read of sensor from MPU6000 to happen immediately
...
This reduces the delay between when data arrives and when it is used
by up to 1ms.
Added num_samples_available method to all InertialSensors to allow
main loop timing to be synced with sensors.
2012-09-10 11:37:33 +09:00
rmackay9
c965963d7b
AP_InertialSensor_MPU6000: bug fix. DMP was being enabled by default so although the results were not being used, this caused a delay in the main loop
2012-08-28 17:02:07 +09:00
uncrustify
e6c2616769
uncrustify libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp
2012-08-21 19:03:14 -07:00
Andrew Tridgell
0763bbd1af
MPU6000: fixed some build warnings
2012-08-09 16:19:21 +10:00
rmackay9
5077674043
AP_InertialSensor_MPU6000: another attempt at fixing the SITL build
2012-07-28 17:19:19 +09:00
rmackay9
7683e9d870
AP_InertialSensor_MPU6000: changed DMP memory definition (dmpMem) to const uint8_t to remove SITL compile errors (hopefully)
...
Removed unused 'dump' variable from dmp_load_mem to reduce compiler warnings
2012-07-28 16:33:04 +09:00
rmackay9
6cd0918134
AP_InertialSensor: methods added to access DMP functionality
2012-07-28 14:14:43 +09:00
Craig Elder
69bf5700cd
IMU: expose IMU_PRODUCT_ID as EEPROM Variable
...
this will allow us to log the Product ID in tlogs
2012-05-09 18:30:36 -07:00
Craig Elder
4a1d8b0875
AP_InertialSensor: Return product ID from sensor initialization
...
this exposes the product ID to the IMU Layer
2012-05-09 18:30:36 -07:00
Craig Elder
ed99940bee
MPU6000: Fixed Scaling on Accelerometers Rev C vs Rev D
...
Rev C have non standard scaling factor that is 1/2 of the data sheet
Rev D chips conform to the specification
2012-05-09 18:30:35 -07:00
Andrew Tridgell
2dd655d87d
MPU6k: added suspend/resume on init
2012-05-01 12:06:54 +10:00
Andrew Tridgell
9296ac494d
AP_InertialSensor: added a get_gyro_drift_rate() interface
...
this returns the expected max drift rate for the particular type of
gyro being used
2012-03-10 10:34:33 +11:00
Andrew Tridgell
a9dea35310
AP_InertialSensor: added new_data_available() interface
2012-03-10 10:34:28 +11: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
6ca613337b
MPU6000: protect the driver from double initialisation
...
initialising twice can lockup the driver
2011-12-28 16:00:48 +11:00
Andrew Tridgell
18d26dc74e
MPU6000: minor fixes
...
the hardware functions should be private, and cs_pin should be uint8_t
2011-12-28 16:00:48 +11:00
Andrew Tridgell
04daeab7c0
MPU6000: change to 98Hz low pass filter
...
based on recommendation from Pat
2011-12-26 19:17:11 +11:00
Andrew Tridgell
10ca54ef8f
MPU6000: use data ready interrupt to prevent stale data
...
We listen for a data ready interrupt and only read new data in read()
if there is new data
2011-12-26 19:17:11 +11:00
Andrew Tridgell
f97b405b56
MPU6k: update driver for new ap_proceduce prototype
2011-12-21 23:31:38 +11:00
Andrew Tridgell
bc9e943969
rollover is not a bug
...
subtracting unsigned numbers does the right thing
2011-12-21 23:31:38 +11:00
Andrew Tridgell
97f8d21c1b
added code format markers to AP_InertialSensor library
2011-12-21 23:31:38 +11: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
82b48784ef
purple: added AP_InertialSensor library
...
this abstracts the way of getting inertial sensor (gyro and
accelerometer) data for the APM1 and purple hardware. The Oilpan code
is based closely on the old APM1 code
2011-11-25 20:00:16 -08:00