mpu9250のライブラリ、I2Cを利用。開発段階のため微妙

Dependents:   library

Revision:
1:6a4c2f84180b
Parent:
0:d36bfb8300a2
--- a/mpu9250_i2c.cpp	Mon Jan 09 06:28:04 2017 +0000
+++ b/mpu9250_i2c.cpp	Sat Jan 28 19:52:32 2017 +0000
@@ -22,7 +22,7 @@
     _nine->frequency(Hz);   
 }
 bool mpu9250::senserTest(){
-    if(readReg(_addr, WHO_AM_I) == 0x71){
+    if(readReg(_addr, WHO_AM_I_MPU9250) == 0x71){
         return true;   
     }   
     else return false;
@@ -106,7 +106,7 @@
     setGyro(_500DPS);      
 }
 
-void mpu9250::getAcc(double *acc){
+template<typename T>void mpu9250::getAcc(T *acc){
     char data[6];  
     short sign;
     readReg(_addr, ACCEL_XOUT_H, data, 6);
@@ -117,14 +117,14 @@
     sign = ((short)data[4] << 8) | (short)data[5];
     acc[2] = (double)sign * acc_coef - acc_offset[2];
 }
-void mpu9250::getAcc(double *ax, double *ay, double *az){
+template<typename T>void mpu9250::getAcc(T *ax, T *ay, T *az){
     double acc[3];
     getAcc(acc);
     *ax = acc[0];
     *ay = acc[1];
     *az = acc[2];   
 }
-void mpu9250::getGyro(double *gyro){
+template<typename T>void mpu9250::getGyro(T *gyro){
     char data[6];  
     short sign;
     readReg(_addr, GYRO_XOUT_H, data, 6);
@@ -135,14 +135,14 @@
     sign = ((short)data[4] << 8) | (short)data[5];
     gyro[2] = (double)sign * gyro_coef - gyro_offset[2];
 }
-void mpu9250::getGyro(double *gx, double *gy, double *gz){
+template<typename T>void mpu9250::getGyro(T *gx, T *gy, T *gz){
     double gyro[3];
     getGyro(gyro);
     *gx = gyro[0];
     *gy = gyro[1];
     *gz = gyro[2];   
 }
-void mpu9250::getMag(double *mag){
+template<typename T>void mpu9250::getMag(T *mag){
     char data[8];   
     short sign;
     readReg(MAG_ADDR, ST1, data, 8);
@@ -153,14 +153,14 @@
     sign = ((short)data[6] << 8) | (short)data[5];
     mag[2] = (double)sign * -mag_coef - mag_offset[2];
 }
-void mpu9250::getMag(double *mx, double *my, double *mz){
+template<typename T>void mpu9250::getMag(T *mx, T *my, T *mz){
     double mag[3];
     getMag(mag);
     *mx = mag[0];
     *my = mag[1];
     *mz = mag[2];   
 }
-void mpu9250::getGyroAcc(double *imu){
+template<typename T>void mpu9250::getGyroAcc(T *imu){
     char data[14];  
     short sign;
     readReg(_addr, ACCEL_XOUT_H, data, 14);
@@ -182,4 +182,23 @@
 void mpu9250::setAccLPF(A_BAND_WIDTH band){
     writeReg(_addr, ACCEL_CONFIG2, band);
     wait_us(70);  
-}
\ No newline at end of file
+}
+
+template void mpu9250::getAcc<double>(double *ax, double *ay, double *az);
+template void mpu9250::getAcc<float>(float *ax, float *ay, float *az);
+template void mpu9250::getAcc<double>(double *acc);
+template void mpu9250::getAcc<float>(float *acc);    
+    
+template void mpu9250::getGyro<double>(double *gx, double *gy, double *gz);
+template void mpu9250::getGyro<float>(float *gx, float *gy, float *gz);
+template void mpu9250::getGyro<double>(double *gyro);
+template void mpu9250::getGyro<float>(float *gyro);
+    
+template void mpu9250::getMag<double>(double *mx, double *my, double *mz);
+template void mpu9250::getMag<float>(float *mx, float *my, float *mz);
+template void mpu9250::getMag<double>(double *mag);    
+template void mpu9250::getMag<float>(float *mag);  
+
+template void mpu9250::getGyroAcc<double>(double *imu);//gx,gy,gz,ax,ay,az
+template void mpu9250::getGyroAcc<float>(float *imu);//gx,gy,gz,ax,ay,az
+  
\ No newline at end of file