imu rev1
Fork of AIviate by
sensor.cpp
- Committer:
- teamgoat
- Date:
- 2013-10-30
- Revision:
- 0:0c627ff4c5ed
- Child:
- 2:452dd766d212
File content as of revision 0:0c627ff4c5ed:
#include "sensor.h" I2C i2c(PTE1, PTE0); char set_i2c_pointer(char addr, char reg) { if (i2c.write(addr) == 0) { return 0; } if (i2c.write(reg) == 0) { return 0; } return 1; } int read(char addr, char reg, char *buf, int n) { i2c.start(); if (set_i2c_pointer(addr, reg) == 0) return 0; if (i2c.read(addr|1, buf, n, true) != 0) return 0; i2c.stop(); return n; } int write(char addr, char reg, char *buf, int n) { i2c.start(); if (set_i2c_pointer(addr, reg) == 0) return 0; for (int i=0; i<n; i++) { if (i2c.write(buf[i]) == 0) { i2c.stop(); return i; } } i2c.stop(); return n; } int read_accelerometer(struct accel* s) { int ret = read(accel_w, ACCEL_X, s->raw_data, 6); if (ret == 0) { return 0; } int axlsb = (int) s->raw_data[0]; int axmsb = (int) s->raw_data[1]; int aylsb = (int) s->raw_data[2]; int aymsb = (int) s->raw_data[3]; int azlsb = (int) s->raw_data[4]; int azmsb = (int) s->raw_data[5]; s->ax = (axmsb << 8) + axlsb; s->ay = (aymsb << 8) + aylsb; s->az = (azmsb << 8) + azlsb; return 1; } void read_gyro(struct gyro* s){} int read_compass(void){return 0;} int read_barometer(void){return 0;} void config_accelerometer(void){} void config_gyro(void){} void config_compass(void){} void config_barometer(void){} void config_gy80(struct config *c) { i2c.frequency(c->frequency); config_accelerometer(); config_gyro(); config_compass(); }