Subversion Repositories NaviCtrl

Rev

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");