test_code_for_ahrs

Dependencies:   mbed-rtos mbed

Committer:
aolgu003
Date:
Mon Apr 25 23:04:09 2016 +0000
Revision:
0:c06709901293
Code for communicating to IMU

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aolgu003 0:c06709901293 1 #include "mbed.h"
aolgu003 0:c06709901293 2 #include "rtos.h"
aolgu003 0:c06709901293 3 #include "MPU6050.h"
aolgu003 0:c06709901293 4
aolgu003 0:c06709901293 5 #define gyro_read_address_H (0x1D)
aolgu003 0:c06709901293 6 #define gyro_read_address_L (0x1E)
aolgu003 0:c06709901293 7
aolgu003 0:c06709901293 8
aolgu003 0:c06709901293 9 Serial pc(USBTX, USBRX); // tx, rx
aolgu003 0:c06709901293 10 MPU6050 imu;
aolgu003 0:c06709901293 11 //imu(I, PinName scl);
aolgu003 0:c06709901293 12
aolgu003 0:c06709901293 13
aolgu003 0:c06709901293 14
aolgu003 0:c06709901293 15 void print_char(char c = '*')
aolgu003 0:c06709901293 16 {
aolgu003 0:c06709901293 17 printf("%c", c);
aolgu003 0:c06709901293 18 fflush(stdout);
aolgu003 0:c06709901293 19 }
aolgu003 0:c06709901293 20
aolgu003 0:c06709901293 21 DigitalOut led1(LED1);
aolgu003 0:c06709901293 22
aolgu003 0:c06709901293 23 void print_thread(void const *argument)
aolgu003 0:c06709901293 24 {
aolgu003 0:c06709901293 25 while (true) {
aolgu003 0:c06709901293 26 Thread::wait(1000);
aolgu003 0:c06709901293 27 print_char();
aolgu003 0:c06709901293 28 }
aolgu003 0:c06709901293 29 }
aolgu003 0:c06709901293 30
aolgu003 0:c06709901293 31 void read_imu(void const *argumennt) {
aolgu003 0:c06709901293 32 while (true) {
aolgu003 0:c06709901293 33 Thread::wait(1000);
aolgu003 0:c06709901293 34 uint8_t whoami = imu.readByte(MPU6050_ADDRESS, WHO_AM_I_MPU6050); // Read WHO_AM_I register for MPU-6050
aolgu003 0:c06709901293 35 pc.printf("I AM 0x%x\n\r", whoami); pc.printf("I SHOULD BE 0x68\n\r");
aolgu003 0:c06709901293 36 }
aolgu003 0:c06709901293 37 }
aolgu003 0:c06709901293 38
aolgu003 0:c06709901293 39 int main()
aolgu003 0:c06709901293 40 {
aolgu003 0:c06709901293 41 printf("\n\n*** RTOS basic example ***\n");
aolgu003 0:c06709901293 42
aolgu003 0:c06709901293 43 Thread thread1(read_imu, NULL, osPriorityNormal, DEFAULT_STACK_SIZE);
aolgu003 0:c06709901293 44 //Thread thread2(print_thread, NULL, osPriorityNormal, DEFAULT_STACK_SIZE);
aolgu003 0:c06709901293 45
aolgu003 0:c06709901293 46 //int gyro_val = 0;
aolgu003 0:c06709901293 47 //char data_read[2];
aolgu003 0:c06709901293 48
aolgu003 0:c06709901293 49 while (true) {
aolgu003 0:c06709901293 50 led1 = !led1;
aolgu003 0:c06709901293 51 //imu.read(gyro_read_address_H, data_read, 0); // no stop
aolgu003 0:c06709901293 52 //imu.read(gyro_read_address_L, data_read, 0); //
aolgu003 0:c06709901293 53 //gyro_val = gyro_val | (int) data_read[0];
aolgu003 0:c06709901293 54 //gyro_val = gyro_val | ((int) data_read[0] << 8);
aolgu003 0:c06709901293 55 //printf("Gyro Value: %d\n", data_read[0]);
aolgu003 0:c06709901293 56 Thread::wait(500);
aolgu003 0:c06709901293 57 }
aolgu003 0:c06709901293 58 }