Rev 419 | Rev 465 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 419 | Rev 454 | ||
---|---|---|---|
Line 63... | Line 63... | ||
63 | #include "led.h" |
63 | #include "led.h" |
64 | #include "uart1.h" |
64 | #include "uart1.h" |
65 | #include "eeprom.h" |
65 | #include "eeprom.h" |
66 | #include "mymath.h" |
66 | #include "mymath.h" |
67 | #include "main.h" |
67 | #include "main.h" |
- | 68 | #include "spi_slave.h" |
|
Line 68... | Line 69... | ||
68 | 69 | ||
69 | u8 NCMAG_Present = 0; |
70 | u8 NCMAG_Present = 0; |
Line 70... | Line 71... | ||
70 | u8 NCMAG_IsCalibrated = 0; |
71 | u8 NCMAG_IsCalibrated = 0; |
Line 331... | Line 332... | ||
331 | 332 | ||
332 | 333 | ||
333 | void NCMAG_Calibrate(void) |
334 | void NCMAG_Calibrate(void) |
- | 335 | { |
|
334 | { |
336 | u8 msg[64]; |
335 | u8 msg[64]; |
337 | static u8 speak = 0; |
336 | static s16 Xmin = 0, Xmax = 0, Ymin = 0, Ymax = 0, Zmin = 0, Zmax = 0; |
338 | static s16 Xmin = 0, Xmax = 0, Ymin = 0, Ymax = 0, Zmin = 0, Zmax = 0; |
337 | static s16 X = 0, Y = 0, Z = 0; |
339 | static s16 X = 0, Y = 0, Z = 0; |
Line 352... | Line 354... | ||
352 | Xmax = -10000; |
354 | Xmax = -10000; |
353 | Ymin = 10000; |
355 | Ymin = 10000; |
354 | Ymax = -10000; |
356 | Ymax = -10000; |
355 | Zmin = 10000; |
357 | Zmin = 10000; |
356 | Zmax = -10000; |
358 | Zmax = -10000; |
- | 359 | speak = 1; |
|
357 | break; |
360 | break; |
Line 358... | Line 361... | ||
358 | 361 | ||
359 | case 2: // 2nd step of calibration |
362 | case 2: // 2nd step of calibration |
360 | // find Min and Max of the X- and Y-Sensors during rotation in the horizontal plane |
363 | // find Min and Max of the X- and Y-Sensors during rotation in the horizontal plane |
361 | if(X < Xmin) { Xmin = X; BeepTime = 20;} |
364 | if(X < Xmin) { Xmin = X; BeepTime = 20;} |
362 | else if(X > Xmax) { Xmax = X; BeepTime = 20;} |
365 | else if(X > Xmax) { Xmax = X; BeepTime = 20;} |
363 | if(Y < Ymin) { Ymin = Y; BeepTime = 60;} |
366 | if(Y < Ymin) { Ymin = Y; BeepTime = 60;} |
- | 367 | else if(Y > Ymax) { Ymax = Y; BeepTime = 60;} |
|
364 | else if(Y > Ymax) { Ymax = Y; BeepTime = 60;} |
368 | if(speak) SpeakHoTT = SPEAK_CALIBRATE; speak = 0; |
Line 365... | Line 369... | ||
365 | break; |
369 | break; |
366 | 370 | ||
- | 371 | case 3: // 3rd step of calibration |
|
367 | case 3: // 3rd step of calibration |
372 | // used to change the orientation of the MK3MAG vertical to the horizontal plane |
Line 368... | Line 373... | ||
368 | // used to change the orientation of the MK3MAG vertical to the horizontal plane |
373 | speak = 1; |
369 | break; |
374 | break; |
370 | 375 | ||
371 | case 4: |
376 | case 4: |
- | 377 | // find Min and Max of the Z-Sensor |
|
372 | // find Min and Max of the Z-Sensor |
378 | if(Z < Zmin) { Zmin = Z; BeepTime = 80;} |
Line 373... | Line 379... | ||
373 | if(Z < Zmin) { Zmin = Z; BeepTime = 80;} |
379 | else if(Z > Zmax) { Zmax = Z; BeepTime = 80;} |
374 | else if(Z > Zmax) { Zmax = Z; BeepTime = 80;} |
380 | if(speak) SpeakHoTT = SPEAK_CALIBRATE; speak = 0; |
375 | break; |
381 | break; |
Line 408... | Line 414... | ||
408 | if((Calibration.MagX.Range > MinCalibration) && (Calibration.MagY.Range > MinCalibration) && (Calibration.MagZ.Range > MinCalibration)) |
414 | if((Calibration.MagX.Range > MinCalibration) && (Calibration.MagY.Range > MinCalibration) && (Calibration.MagZ.Range > MinCalibration)) |
409 | { |
415 | { |
410 | NCMAG_IsCalibrated = NCMag_CalibrationWrite(); |
416 | NCMAG_IsCalibrated = NCMag_CalibrationWrite(); |
411 | BeepTime = 2500; |
417 | BeepTime = 2500; |
412 | UART1_PutString("\r\n-> Calibration okay <-\n\r"); |
418 | UART1_PutString("\r\n-> Calibration okay <-\n\r"); |
- | 419 | SpeakHoTT = SPEAK_MIKROKOPTER; |
|
413 | } |
420 | } |
414 | else |
421 | else |
415 | { |
422 | { |
- | 423 | SpeakHoTT = SPEAK_ERR_CALIBARTION; |
|
416 | UART1_PutString("\r\nCalibration FAILED - Values too low: "); |
424 | UART1_PutString("\r\nCalibration FAILED - Values too low: "); |
417 | if(Calibration.MagX.Range < MinCalibration) UART1_PutString("X! "); |
425 | if(Calibration.MagX.Range < MinCalibration) UART1_PutString("X! "); |
418 | if(Calibration.MagY.Range < MinCalibration) UART1_PutString("Y! "); |
426 | if(Calibration.MagY.Range < MinCalibration) UART1_PutString("Y! "); |
419 | if(Calibration.MagZ.Range < MinCalibration) UART1_PutString("Z! "); |
427 | if(Calibration.MagZ.Range < MinCalibration) UART1_PutString("Z! "); |
420 | UART1_PutString("\r\n"); |
428 | UART1_PutString("\r\n"); |