/* test code for Accl Gyro Temp Mag sensor SparkFun IMU Breakout - MPU-9250(+AK8963) I2C connected to A4(SDA)&A5(SCL) need 5.0V-3.3V voltage matching */ #include #define PinLED 13 #define I2CAG 0x68 #define I2CM 0x0c #define I2CTIMEOUTms 20 #define I2CTIMEOUTnum 5 volatile int led=0; unsigned long t; #define BUFSZ 32 volatile uint8_t buf[32]; void HexPrint(int v, int bw, int s){ char line[16]; int x,l=0; if (s) { if ((1<<(bw-1))&v) { line[l++]='-'; v=-v; } else { line[l++]='+'; } bw=bw-1; } else { line[l++]=' '; } if (bw%4) bw=bw-(bw%4)+4; for (int i=bw-4;i>=0;i-=4) { x=(v>>i)&15; line[l++]=(x<10)?x+'0':x+'a'-10; } line[l]=0; Serial.print(line); } uint8_t I2CRead(int dadr, int radr){ int t=I2CTIMEOUTnum; Wire.beginTransmission(dadr); delayMicroseconds(50); Wire.write(radr); Wire.endTransmission(false); Wire.requestFrom(dadr,1); while (!Wire.available()) { Serial.print("."); delay(I2CTIMEOUTms); if (t--<=0) return 0xff; } return Wire.read(); } int I2CReadN(int dadr, int radr, int n){ int i=0,t=I2CTIMEOUTnum; if (n<=0) goto _RETURN; if (n>=BUFSZ) goto _RETURN; Wire.beginTransmission(dadr); Wire.write(radr); Wire.endTransmission(false); Wire.requestFrom(dadr,n); while (i