241,11 → 241,14 |
{ |
u32 time; |
s32 XMin = 0, XMax = 0, YMin = 0, YMax = 0, ZMin = 0, ZMax = 0; |
s32 scale, scale_min, scale_max; |
s16 scale, scale_min, scale_max; |
u8 i = 0; |
|
// activate positive bias field of 0.55 gauss |
HMC5843_SetConfiguration(HMC5843_CRA_RATE_50HZ|HMC5843_CRA_MODE_POSBIAS, HMC5843_CRB_GAIN_10GA, HMC5843_MODE_CONTINUOUS); |
// wait for stable readings |
time = SetDelay(50); |
while(!CheckDelay(time)); |
// averaging |
for(i = 0; i<20; i++) |
{ |
258,7 → 261,9 |
} |
// activate negative bias field of 0.55 gauss |
HMC5843_SetConfiguration(HMC5843_CRA_RATE_50HZ|HMC5843_CRA_MODE_NEGBIAS, HMC5843_CRB_GAIN_10GA, HMC5843_MODE_CONTINUOUS); |
while(!CheckDelay(time)); |
// wait for stable readings |
time = SetDelay(50); |
while(!CheckDelay(time)); |
// averaging |
for(i = 0; i < 20; i++) |
{ |
277,12 → 282,12 |
scale_max = (scale * 110)/100; |
// check scale for all axes |
scale = (XMax - XMin)/40; |
if((scale > scale_max) || (scale < scale_min)) return 0; |
scale = (YMax + YMin)/40; |
if((scale > scale_max) || (scale < scale_min)) return 0; |
scale = (ZMax + ZMin)/40; |
if((scale > scale_max) || (scale < scale_min)) return 0; |
return 1; |
if((scale > scale_max) || (scale < scale_min)) return(0); |
scale = (YMax - YMin)/40; |
if((scale > scale_max) || (scale < scale_min)) return(0); |
scale = (ZMax - ZMin)/40; |
if((scale > scale_max) || (scale < scale_min)) return(0); |
return(1); |
} |
|
|
306,7 → 311,7 |
if (HMC5843_Identification.A != 0xFF) break; // break loop on success |
UART1_PutString("."); |
repeat++; |
}while ((HMC5843_Identification.A == 0xFF) && (repeat < 12)); // 12*250ms=3s |
}while ((HMC5843_Identification.A == 0xFF) && (repeat < 12)); |
// if we got it |
if(HMC5843_Identification.A != 0xFF) |
{ |