test program for my BMI160 lib

Dependencies:   BMI160 USBDevice max32630fthr

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "max32630fthr.h"
00003 #include "USBSerial.h"
00004 #include "BMI160.h"
00005 
00006 MAX32630FTHR *sakura = 0 ;
00007 USBSerial    *microUSB ;
00008 BMI160       *bmi160 = 0 ;
00009 Serial       *daplink = 0 ;
00010 DigitalOut   *LED_R = 0 ;
00011 DigitalOut   *LED_G = 0 ;
00012 DigitalOut   *LED_B = 0 ;
00013 
00014 #define PIN_RX2  P2_0
00015 #define PIN_TX2  P2_1
00016 #define PIN_SDA2 P5_7
00017 #define PIN_SCL2 P6_0
00018 #define PIN_LED_R P2_4
00019 #define PIN_LED_G P2_5
00020 #define PIN_LED_B P2_6
00021 #define BMI160_I2C_ADDRESS 0x68
00022 
00023 void init_hardware(void)
00024 {
00025     sakura = new MAX32630FTHR(MAX32630FTHR::VIO_3V3);
00026     daplink = new Serial(PIN_TX2, PIN_RX2, "daplink") ;
00027 
00028     bmi160 = new BMI160(PIN_SDA2, PIN_SCL2, BMI160_I2C_ADDRESS) ;
00029     LED_R = new DigitalOut(PIN_LED_R, 1) ;
00030     LED_G = new DigitalOut(PIN_LED_G, 1) ;
00031     LED_B = new DigitalOut(PIN_LED_B, 1) ;
00032     
00033     *LED_R = LED_OFF ;
00034     *LED_G = LED_ON ;
00035     *LED_B = LED_OFF ;
00036     
00037     // acc_set_pmu_mode 0x10 | ACC_PMU_XXX
00038     bmi160->setCMD(0x10 | ACC_PMU_NORMAL) ;
00039     wait(0.1) ;
00040     bmi160->setCMD(0x14 | GYR_PMU_NORMAL) ;
00041     wait(0.1) ;
00042     bmi160->setCMD(0x08 | MAG_PMU_SUSPEND) ;
00043     wait(0.1) ;
00044     bmi160->setCMD(0x03) ; /* start_foc */
00045     wait(0.1) ;
00046 
00047 }
00048 
00049 int main()
00050 {
00051     int id = 0 ;
00052     float a[3], g[3] ;
00053     int acc_range, gyr_range, status ;
00054     
00055     init_hardware() ;
00056 
00057     printf("Hello World\n") ;
00058 
00059     id = bmi160->getChipID() ;
00060     printf("BMI160 ID = 0x%02X\n", id) ;
00061     acc_range = bmi160->getAccRange() ;
00062     gyr_range = bmi160->getGyrRange() ;
00063     printf("Acc range = +/- %d g, Gyr range = %d degree/sec\n", acc_range, gyr_range) ;
00064     
00065     while(1) {
00066         status = bmi160->getStatus() ;
00067 
00068         bmi160->getAcc(a) ;
00069 
00070         bmi160->getGyr(g) ;
00071 
00072         printf("ACC: %.2f, %.2f, %.2f ", a[0], a[1], a[2]) ;
00073         printf("GYR: %.2f, %.2f, %.2f\n", g[0], g[1], g[2]) ;
00074         wait(0.1) ;
00075     }
00076 }
00077