MPU-9250 with Kalman Filter

Dependencies:   ADXL362-helloworld MPU9250_SPI mbed

Fork of ADXL362-helloworld by Analog Devices

Committer:
mfurukawa
Date:
Mon May 23 13:46:35 2016 +0000
Revision:
3:07aa20aa678d
Parent:
2:9ef7a594159c
Child:
4:5a9aa5ae928a
Stable (CH3);

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mfurukawa 3:07aa20aa678d 1 /**
mfurukawa 3:07aa20aa678d 2 * Masahiro FURUKAWA - m.furukawa@ist.osaka-u.ac.jp
mfurukawa 3:07aa20aa678d 3 *
mfurukawa 3:07aa20aa678d 4 * May 23, 2016
mfurukawa 3:07aa20aa678d 5 *
mfurukawa 3:07aa20aa678d 6 * LDXL362 Acceleration Sensor (Extended to Ch1 ~ Ch3)
mfurukawa 3:07aa20aa678d 7 *
mfurukawa 3:07aa20aa678d 8 **/
mfurukawa 3:07aa20aa678d 9
mfurukawa 1:f1e4ee4fc335 10
adisuciu 0:83fda1bfaffe 11 #include "mbed.h"
adisuciu 0:83fda1bfaffe 12 #include "ADXL362.h"
adisuciu 0:83fda1bfaffe 13
mfurukawa 1:f1e4ee4fc335 14 Serial pc(USBTX, USBRX);
mfurukawa 1:f1e4ee4fc335 15
mfurukawa 1:f1e4ee4fc335 16 /*
mfurukawa 1:f1e4ee4fc335 17 ~CS (Chip Select) p8
mfurukawa 1:f1e4ee4fc335 18 MOSI (Master Out Slave In) p5
mfurukawa 1:f1e4ee4fc335 19 MISO (Master In Slave Out p6
mfurukawa 1:f1e4ee4fc335 20 SCK (Serial Clock) p7
mfurukawa 1:f1e4ee4fc335 21 */
adisuciu 0:83fda1bfaffe 22
adisuciu 0:83fda1bfaffe 23 int main() {
mfurukawa 2:9ef7a594159c 24 pc.baud(115200);
adisuciu 0:83fda1bfaffe 25
mfurukawa 3:07aa20aa678d 26 DigitalOut *Ch1, *Ch2, *Ch3;
mfurukawa 3:07aa20aa678d 27 Ch1 = new DigitalOut(p8);
mfurukawa 3:07aa20aa678d 28 Ch2 = new DigitalOut(p9);
mfurukawa 3:07aa20aa678d 29 Ch3 = new DigitalOut(p10);
mfurukawa 3:07aa20aa678d 30
mfurukawa 3:07aa20aa678d 31 *Ch1 = true;
mfurukawa 3:07aa20aa678d 32 *Ch2 = true;
mfurukawa 3:07aa20aa678d 33 *Ch3 = true;
mfurukawa 1:f1e4ee4fc335 34
mfurukawa 3:07aa20aa678d 35 ADXL362 adxl362(Ch2, p5, p6, p7);
mfurukawa 3:07aa20aa678d 36
mfurukawa 3:07aa20aa678d 37 // we need to wait at least 500ms after ADXL362 reset
mfurukawa 3:07aa20aa678d 38 adxl362.set_cs_pin(Ch1); adxl362.reset(); wait_ms(600); adxl362.set_mode(ADXL362::MEASUREMENT);
mfurukawa 3:07aa20aa678d 39 adxl362.set_cs_pin(Ch2); adxl362.reset(); wait_ms(600); adxl362.set_mode(ADXL362::MEASUREMENT);
mfurukawa 3:07aa20aa678d 40 adxl362.set_cs_pin(Ch3); adxl362.reset(); wait_ms(600); adxl362.set_mode(ADXL362::MEASUREMENT);
mfurukawa 3:07aa20aa678d 41
mfurukawa 3:07aa20aa678d 42
mfurukawa 2:9ef7a594159c 43
adisuciu 0:83fda1bfaffe 44 uint8_t x,y,z;
mfurukawa 3:07aa20aa678d 45 uint64_t t1, t2, t3;
mfurukawa 2:9ef7a594159c 46
adisuciu 0:83fda1bfaffe 47 while(1) {
mfurukawa 3:07aa20aa678d 48 x = adxl362.scanx_u8();
mfurukawa 3:07aa20aa678d 49 y = adxl362.scany_u8();
mfurukawa 3:07aa20aa678d 50 z = adxl362.scanz_u8();
mfurukawa 3:07aa20aa678d 51
mfurukawa 3:07aa20aa678d 52 adxl362.set_cs_pin(Ch1); t1 = adxl362.scan();
mfurukawa 3:07aa20aa678d 53 adxl362.set_cs_pin(Ch2); t2 = adxl362.scan();
mfurukawa 3:07aa20aa678d 54 adxl362.set_cs_pin(Ch3); t3 = adxl362.scan();
mfurukawa 3:07aa20aa678d 55
mfurukawa 3:07aa20aa678d 56 printf("x = %02x y = %02x z = %02x %04x %04x %04x %04x %04x %04x %04x %04x %04x\r\n",x,y,z,
mfurukawa 3:07aa20aa678d 57 static_cast<uint16_t>(0xFFFF&(t1>>48)),
mfurukawa 3:07aa20aa678d 58 static_cast<uint16_t>(0xFFFF&(t1>>32)),
mfurukawa 3:07aa20aa678d 59 static_cast<uint16_t>(0xFFFF&(t1>>16)),
mfurukawa 3:07aa20aa678d 60
mfurukawa 3:07aa20aa678d 61 static_cast<uint16_t>(0xFFFF&(t2>>48)),
mfurukawa 3:07aa20aa678d 62 static_cast<uint16_t>(0xFFFF&(t2>>32)),
mfurukawa 3:07aa20aa678d 63 static_cast<uint16_t>(0xFFFF&(t2>>16)),
mfurukawa 3:07aa20aa678d 64
mfurukawa 3:07aa20aa678d 65 static_cast<uint16_t>(0xFFFF&(t3>>48)),
mfurukawa 3:07aa20aa678d 66 static_cast<uint16_t>(0xFFFF&(t3>>32)),
mfurukawa 3:07aa20aa678d 67 static_cast<uint16_t>(0xFFFF&(t3>>16))
mfurukawa 3:07aa20aa678d 68 );
mfurukawa 1:f1e4ee4fc335 69 wait_ms(1);
adisuciu 0:83fda1bfaffe 70 }
adisuciu 0:83fda1bfaffe 71 }