Andrew Olguin
/
nucleo_i2c_imu
test_code_for_ahrs
main.cpp@0:c06709901293, 2016-04-25 (annotated)
- 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?
User | Revision | Line number | New 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 | } |