2020int __pinM ;
2121//float __mRes;
2222int __mBiasRaw [3 ] = {0 ,0 ,0 };
23-
23+ unsigned char __settings_mag_scale ;
2424
2525void imu_calibrateMag ()
2626{
27- int i , j , mx , my , mz ;
27+
28+ int i = 0 , j , mx , my , mz ;
29+ char ck0 = 0 , ck1 = 0 , ck2 = 0 , ck3 = 0 , ck4 = 0 , ck5 = 0 , ck6 = 0 , ck7 = 0 , ck8 = 0 ;
2830 int magMin [3 ] = {0 , 0 , 0 };
2931 int magMax [3 ] = {0 , 0 , 0 }; // The road warrior
3032
31- for (i = 0 ; i < 128 ; i ++ )
33+ float ax , ay , az ;
34+
35+ while (i < 128 || ck0 == 0 || ck1 == 0 || ck2 == 0 || ck3 == 0 || ck4 == 0 || ck5 == 0 || ck6 == 0 || ck7 == 0 || ck8 == 0 )
3236 {
3337 while (!imu_magAvailable (ALL_AXIS ));
3438 imu_readMag (& mx , & my , & mz );
@@ -41,6 +45,20 @@ void imu_calibrateMag()
4145 if (magTemp [j ] > magMax [j ]) magMax [j ] = magTemp [j ];
4246 if (magTemp [j ] < magMin [j ]) magMin [j ] = magTemp [j ];
4347 }
48+
49+ if (abs (magMax [0 ] - magMin [0 ]) > (12000 / ((int ) __settings_mag_scale ))) ck6 = 1 ;
50+ if (abs (magMax [1 ] - magMin [1 ]) > (12000 / ((int ) __settings_mag_scale ))) ck7 = 1 ;
51+ if (abs (magMax [2 ] - magMin [2 ]) > (12000 / ((int ) __settings_mag_scale ))) ck8 = 1 ;
52+
53+ imu_readAccelCalculated (& ax , & ay , & az );
54+ if (ax > 0.85 && ay < 0.15 && ay > -0.15 && az < 0.15 && az > -0.15 ) ck0 = 1 ;
55+ if (ax < -0.85 && ay < 0.15 && ay > -0.15 && az < 0.15 && az > -0.15 ) ck1 = 1 ;
56+ if (ay > 0.85 && ax < 0.15 && ax > -0.15 && az < 0.15 && az > -0.15 ) ck2 = 1 ;
57+ if (ay < -0.85 && ax < 0.15 && ax > -0.15 && az < 0.15 && az > -0.15 ) ck3 = 1 ;
58+ if (az > 0.85 && ay < 0.15 && ay > -0.15 && ax < 0.15 && ax > -0.15 ) ck4 = 1 ;
59+ if (az < -0.85 && ay < 0.15 && ay > -0.15 && ax < 0.15 && ax > -0.15 ) ck5 = 1 ;
60+
61+ i ++ ;
4462 }
4563
4664 for (j = 0 ; j < 3 ; j ++ )
@@ -55,7 +73,7 @@ void imu_calibrateMag()
5573 lsb = __mBiasRaw [k ] & 0x00FF ;
5674 imu_SPIwriteByte (__pinM , OFFSET_X_REG_L_M + (2 * k ), lsb );
5775 imu_SPIwriteByte (__pinM , OFFSET_X_REG_H_M + (2 * k ), msb );
58- }
76+ }
5977}
6078
6179
0 commit comments