Motion Processing Library adapted to mbed
Dependents: openwear-lifelogger-example
mpu_hal.c@0:61a7cadab29e, 2014-09-08 (annotated)
- Committer:
- janekm
- Date:
- Mon Sep 08 23:16:52 2014 +0000
- Revision:
- 0:61a7cadab29e
- Child:
- 1:6221b0518f94
mbed porting
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
janekm | 0:61a7cadab29e | 1 | #include "mpu_hal.h" |
janekm | 0:61a7cadab29e | 2 | |
janekm | 0:61a7cadab29e | 3 | #include "i2c_api.h" |
janekm | 0:61a7cadab29e | 4 | #include "wait_api.h" |
janekm | 0:61a7cadab29e | 5 | #include "us_ticker_api.h" |
janekm | 0:61a7cadab29e | 6 | |
janekm | 0:61a7cadab29e | 7 | i2c_t* mpu_i2c_dev; |
janekm | 0:61a7cadab29e | 8 | |
janekm | 0:61a7cadab29e | 9 | int mpu_i2c_write(unsigned char slave_addr, unsigned char reg_addr, |
janekm | 0:61a7cadab29e | 10 | unsigned char length, unsigned char const *data) |
janekm | 0:61a7cadab29e | 11 | { |
janekm | 0:61a7cadab29e | 12 | if (i2c_byte_write(mpu_i2c_dev, (slave_addr<<1))==0) return -1; |
janekm | 0:61a7cadab29e | 13 | if (i2c_byte_write(mpu_i2c_dev, reg_addr)==0) return -1; |
janekm | 0:61a7cadab29e | 14 | for(int i = 0; i < length; i++) { |
janekm | 0:61a7cadab29e | 15 | if (i2c_byte_write(mpu_i2c_dev, data[i])==0) return -1; |
janekm | 0:61a7cadab29e | 16 | } |
janekm | 0:61a7cadab29e | 17 | return 0; |
janekm | 0:61a7cadab29e | 18 | } |
janekm | 0:61a7cadab29e | 19 | int mpu_i2c_read(unsigned char slave_addr, unsigned char reg_addr, |
janekm | 0:61a7cadab29e | 20 | unsigned char length, unsigned char *data) |
janekm | 0:61a7cadab29e | 21 | { |
janekm | 0:61a7cadab29e | 22 | if (i2c_byte_write(mpu_i2c_dev, (slave_addr<<1)|0x01)) return -1; |
janekm | 0:61a7cadab29e | 23 | if (i2c_byte_write(mpu_i2c_dev, reg_addr)) return -1; |
janekm | 0:61a7cadab29e | 24 | for(int i = 0; i < (length-1); i++) { |
janekm | 0:61a7cadab29e | 25 | data[i] = i2c_byte_read(mpu_i2c_dev, 0); |
janekm | 0:61a7cadab29e | 26 | } |
janekm | 0:61a7cadab29e | 27 | data[length-1] = i2c_byte_read(mpu_i2c_dev, 1); |
janekm | 0:61a7cadab29e | 28 | return 0; |
janekm | 0:61a7cadab29e | 29 | } |
janekm | 0:61a7cadab29e | 30 | |
janekm | 0:61a7cadab29e | 31 | int get_ms(int* timestamp) |
janekm | 0:61a7cadab29e | 32 | { |
janekm | 0:61a7cadab29e | 33 | *timestamp = (us_ticker_read() / 1000); |
janekm | 0:61a7cadab29e | 34 | return *timestamp; |
janekm | 0:61a7cadab29e | 35 | } |
janekm | 0:61a7cadab29e | 36 | |
janekm | 0:61a7cadab29e | 37 | #define delay_ms wait_ms |
janekm | 0:61a7cadab29e | 38 | |
janekm | 0:61a7cadab29e | 39 | #define log_i(...) do {} while (0) |
janekm | 0:61a7cadab29e | 40 | #define log_e(...) do {} while (0) |
janekm | 0:61a7cadab29e | 41 | #define min(a,b) ((a<b)?a:b) |