0
|
1 //////////////////////////////////////////////////////////////////////////////
|
|
2 // HISTORY
|
|
3 // 2013-03-29 [jDG] Creation for tests.
|
|
4
|
|
5 //---- Storage classes -------------------------------------------------------
|
|
6 // Declaring PIC18 and VC++/G++ functions.
|
|
7 #ifdef UNIX
|
|
8 # define PARAMETER
|
|
9 # define OVERLAY
|
|
10 #else
|
|
11 //---- Bank 9 parameters -----------------------------------------------------
|
|
12 # pragma udata overlay bank9_compass = 0x900
|
|
13 # define PARAMETER static
|
|
14 # define OVERLAY overlay
|
|
15 #endif
|
|
16
|
|
17 //////////////////////////////////////////////////////////////////////////////
|
|
18
|
|
19 #define Q_PI (18000)
|
|
20 #define Q_PIO2 (9000)
|
|
21
|
|
22 typedef short int Int16;
|
|
23 typedef signed char Int8;
|
|
24 typedef Int16 Angle;
|
|
25
|
|
26 // The (filtered) components of the magnetometer sensor:
|
|
27 extern Int16 compass_DX_f;
|
|
28 extern Int16 compass_DY_f;
|
|
29 extern Int16 compass_DZ_f;
|
|
30
|
|
31 // Found soft-iron calibration values, deduced from already filtered values.
|
|
32 extern Int16 compass_CX_f;
|
|
33 extern Int16 compass_CY_f;
|
|
34 extern Int16 compass_CZ_f;
|
|
35
|
|
36 // The (filtered) components of the accelerometer sensor:
|
|
37 extern Int16 accel_DX_f;
|
|
38 extern Int16 accel_DY_f;
|
|
39 extern Int16 accel_DZ_f;
|
|
40
|
|
41 // The compass result value.
|
|
42 extern Int16 compass_heading;
|
|
43 extern Int16 compass_roll;
|
|
44 extern Int16 compass_pitch;
|
|
45
|
|
46 extern Int16 umul(PARAMETER Int16 a, PARAMETER Int16 b);
|
|
47 extern Int16 imul(PARAMETER Int16 a, PARAMETER Int16 b);
|
|
48 extern Int16 udiv(PARAMETER Int16 a, PARAMETER Int16 b);
|
|
49 extern Angle utan(PARAMETER Int16 a, PARAMETER Int16 b);
|
|
50 extern Angle itan(PARAMETER Int16 a, PARAMETER Int16 b);
|
|
51 extern Angle cosxh(PARAMETER Int16 a, PARAMETER Int16 b);
|
|
52 extern void sincos(PARAMETER Int16 a, PARAMETER Int16 b, Int16* sin, Int16* cos);
|