It is modified accordingly to work with sparkfun dmp library under mbed platform
Dependents: MPU9250-dmp-bluepill MPU9250-dmp
Fork of MotionDriver_6_1 by
mdcompat.cpp@4:f395d9cc57c4, 2017-08-10 (annotated)
- Committer:
- mbedoguz
- Date:
- Thu Aug 10 14:42:44 2017 +0000
- Revision:
- 4:f395d9cc57c4
- Parent:
- 3:8f2d21735748
- Child:
- 5:e4e36c17ba70
mdcompat is updated, mbed_i2c_write wasn't working properly, now it does)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbedoguz | 1:a6c3f8680fe0 | 1 | #include "mdcompat.h" |
mbedoguz | 1:a6c3f8680fe0 | 2 | #include "mbed.h" // must be out of the scope of extern "C" |
mbedoguz | 2:e7e761471df9 | 3 | I2C imu9250(I2C_SDA,I2C_SCL); |
mbedoguz | 4:f395d9cc57c4 | 4 | Ticker stamper; |
mbedoguz | 4:f395d9cc57c4 | 5 | unsigned long stamper_count=0; |
mbedoguz | 4:f395d9cc57c4 | 6 | void counter(){ |
mbedoguz | 4:f395d9cc57c4 | 7 | stamper_count++; |
mbedoguz | 4:f395d9cc57c4 | 8 | } |
mbedoguz | 4:f395d9cc57c4 | 9 | void stamper_init(void){ |
mbedoguz | 4:f395d9cc57c4 | 10 | stamper.attach(&counter,1); |
mbedoguz | 4:f395d9cc57c4 | 11 | } |
mbedoguz | 1:a6c3f8680fe0 | 12 | void imu_init(void){ |
mbedoguz | 1:a6c3f8680fe0 | 13 | imu9250.frequency(400000); |
mbedoguz | 1:a6c3f8680fe0 | 14 | } |
mbedoguz | 1:a6c3f8680fe0 | 15 | unsigned short constrain( |
mbedoguz | 1:a6c3f8680fe0 | 16 | unsigned short x, |
mbedoguz | 1:a6c3f8680fe0 | 17 | unsigned short a, |
mbedoguz | 1:a6c3f8680fe0 | 18 | unsigned short b) {unsigned short result; |
mbedoguz | 1:a6c3f8680fe0 | 19 | result= (x<a) ? a:x; |
mbedoguz | 1:a6c3f8680fe0 | 20 | result= (x>b) ? b:x; |
mbedoguz | 1:a6c3f8680fe0 | 21 | return result; |
mbedoguz | 1:a6c3f8680fe0 | 22 | } |
mbedoguz | 1:a6c3f8680fe0 | 23 | |
mbedoguz | 1:a6c3f8680fe0 | 24 | extern "C" { |
mbedoguz | 1:a6c3f8680fe0 | 25 | |
mbedoguz | 1:a6c3f8680fe0 | 26 | int mbed_i2c_write( |
mbedoguz | 1:a6c3f8680fe0 | 27 | unsigned char slave_addr, |
mbedoguz | 1:a6c3f8680fe0 | 28 | unsigned char reg_addr, |
mbedoguz | 1:a6c3f8680fe0 | 29 | unsigned char length, |
mbedoguz | 4:f395d9cc57c4 | 30 | unsigned char *data) { |
mbedoguz | 4:f395d9cc57c4 | 31 | unsigned char buffer[]={reg_addr,data[0]}; |
mbedoguz | 4:f395d9cc57c4 | 32 | const char* x=(const char*)buffer;// |
mbedoguz | 1:a6c3f8680fe0 | 33 | |
mbedoguz | 4:f395d9cc57c4 | 34 | imu9250.write((int)slave_addr<<1,x,2,0);//sending register adress first to indicate which register we are writing and a write register(0) |
mbedoguz | 1:a6c3f8680fe0 | 35 | return 0; |
mbedoguz | 1:a6c3f8680fe0 | 36 | } |
mbedoguz | 1:a6c3f8680fe0 | 37 | |
mbedoguz | 1:a6c3f8680fe0 | 38 | int mbed_i2c_read( |
mbedoguz | 1:a6c3f8680fe0 | 39 | unsigned char slave_addr, |
mbedoguz | 1:a6c3f8680fe0 | 40 | unsigned char reg_addr, |
mbedoguz | 1:a6c3f8680fe0 | 41 | unsigned char length, |
mbedoguz | 4:f395d9cc57c4 | 42 | unsigned char *data) {const char RA[]={reg_addr}; |
mbedoguz | 3:8f2d21735748 | 43 | imu9250.write((int)slave_addr<<1,RA, 1, 1); // no stop |
mbedoguz | 4:f395d9cc57c4 | 44 | imu9250.read((int)slave_addr<<1,(char*)data, 1, 0); |
mbedoguz | 2:e7e761471df9 | 45 | return 0; |
mbedoguz | 1:a6c3f8680fe0 | 46 | } |
mbedoguz | 1:a6c3f8680fe0 | 47 | |
mbedoguz | 1:a6c3f8680fe0 | 48 | int delay_ms( |
mbedoguz | 1:a6c3f8680fe0 | 49 | unsigned long num_ms) { |
mbedoguz | 4:f395d9cc57c4 | 50 | wait_ms(num_ms); |
mbedoguz | 1:a6c3f8680fe0 | 51 | return 0; |
mbedoguz | 1:a6c3f8680fe0 | 52 | } |
mbedoguz | 1:a6c3f8680fe0 | 53 | |
mbedoguz | 1:a6c3f8680fe0 | 54 | int get_ms( |
mbedoguz | 4:f395d9cc57c4 | 55 | unsigned long *count=(unsigned long*)malloc(sizeof(unsigned long))) { |
mbedoguz | 4:f395d9cc57c4 | 56 | *count=stamper_count; |
mbedoguz | 1:a6c3f8680fe0 | 57 | return 0; |
mbedoguz | 1:a6c3f8680fe0 | 58 | } |
mbedoguz | 1:a6c3f8680fe0 | 59 | |
mbedoguz | 1:a6c3f8680fe0 | 60 | int reg_int_cb( |
mbedoguz | 1:a6c3f8680fe0 | 61 | void (*cb)(void), |
mbedoguz | 1:a6c3f8680fe0 | 62 | unsigned char port, |
mbedoguz | 1:a6c3f8680fe0 | 63 | unsigned char pin) { |
mbedoguz | 1:a6c3f8680fe0 | 64 | return 0; |
mbedoguz | 1:a6c3f8680fe0 | 65 | } |
mbedoguz | 1:a6c3f8680fe0 | 66 | |
mbedoguz | 1:a6c3f8680fe0 | 67 | long labs(long x) { |
mbedoguz | 1:a6c3f8680fe0 | 68 | return x > 0 ? x : -x; |
mbedoguz | 1:a6c3f8680fe0 | 69 | } |
mbedoguz | 1:a6c3f8680fe0 | 70 | |
mbedoguz | 1:a6c3f8680fe0 | 71 | float fabsf(float x) { |
mbedoguz | 1:a6c3f8680fe0 | 72 | return x > 0 ? x : -x; |
mbedoguz | 1:a6c3f8680fe0 | 73 | } |
mbedoguz | 1:a6c3f8680fe0 | 74 | |
mbedoguz | 1:a6c3f8680fe0 | 75 | int min(int a, int b) { |
mbedoguz | 1:a6c3f8680fe0 | 76 | return a > b ? b : a; |
mbedoguz | 1:a6c3f8680fe0 | 77 | } |
mbedoguz | 1:a6c3f8680fe0 | 78 | |
mbedoguz | 1:a6c3f8680fe0 | 79 | }; |