Junjie Wang
/
humanoid
NYP
Fork of a_NYP_humanoid by
Diff: accgyro.cpp
- Revision:
- 0:0ea84b3cf851
- Child:
- 2:7d574b1ab3cd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/accgyro.cpp Mon Apr 30 09:43:36 2018 +0000 @@ -0,0 +1,45 @@ +#include "LSM6DSLSensor.h" +#include "accgyro.h" +#include "mbed.h" +#include "rtos.h" + +//Serial pc(USBTX, USBRX); +DigitalOut led1(LED1); +int32_t ACCGYRO_gyro_axes[3]; +int32_t ACCGYRO_acc_axes[3]; +static DevI2C devI2c(PB_11,PB_10); +static LSM6DSLSensor acc_gyro(&devI2c,LSM6DSL_ACC_GYRO_I2C_ADDRESS_LOW,PD_11); +EventQueue ACCGYRO_queue; +Mutex ACCGYRO_mutex; + +int32_t ACCGYRO_get_gyro_x() +{ + int32_t temp; + //ACCGYRO_mutex.lock(); + temp = ACCGYRO_gyro_axes[0]; + //ACCGYRO_mutex.unlock(); + return temp; +} + +void ACCGYRO_task() +{ + led1 = !led1; + //ACCGYRO_mutex.lock(); + acc_gyro.get_x_axes(ACCGYRO_gyro_axes); + acc_gyro.get_g_axes(ACCGYRO_acc_axes); + //ACCGYRO_mutex.unlock(); + //pc.printf("LSM6DSL [acc/mg]: %6ld\r\n", ACCGYRO_gyro_axes[0]); +}; + +void ACCGYRO_init() +{ + //pc.printf("Initing LSM6DSL\r\n", ACCGYRO_gyro_axes[0]); + acc_gyro.init(NULL); + acc_gyro.enable_x(); + acc_gyro.enable_g(); + //RtosTimer ACCGYRO_Timer(&ACCGYRO_task,osTimerPeriodic); + //ACCGYRO_Timer.start(100); + //pc.printf("Init done\r\n"); + //ACCGYRO_queue.call_every(1000, ACCGYRO_task); + //ACCGYRO_queue.dispatch(); +};