Mercurial > public > hwos_code
annotate src/compass.h @ 560:b7eb98dbd800
bump to 2.96beta (REFACTORED VERSION)
author | heinrichsweikamp |
---|---|
date | Wed, 31 Jan 2018 19:39:37 +0100 |
parents | 7d9edd3b8c86 |
children | ca4556fb60b9 |
rev | line source |
---|---|
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); | |
282
7d9edd3b8c86
Make a more compact COMPASS calibration code (<7KB), and add more tests.
jDG
parents:
0
diff
changeset
|
53 |
7d9edd3b8c86
Make a more compact COMPASS calibration code (<7KB), and add more tests.
jDG
parents:
0
diff
changeset
|
54 ////////////////////////////////////////////////////////////////////////////// |
7d9edd3b8c86
Make a more compact COMPASS calibration code (<7KB), and add more tests.
jDG
parents:
0
diff
changeset
|
55 // The user functions |
7d9edd3b8c86
Make a more compact COMPASS calibration code (<7KB), and add more tests.
jDG
parents:
0
diff
changeset
|
56 extern void compass(void); |
7d9edd3b8c86
Make a more compact COMPASS calibration code (<7KB), and add more tests.
jDG
parents:
0
diff
changeset
|
57 extern void compass_reset_calibration(void); |
7d9edd3b8c86
Make a more compact COMPASS calibration code (<7KB), and add more tests.
jDG
parents:
0
diff
changeset
|
58 extern void compass_add_calibration(void); |
7d9edd3b8c86
Make a more compact COMPASS calibration code (<7KB), and add more tests.
jDG
parents:
0
diff
changeset
|
59 |
7d9edd3b8c86
Make a more compact COMPASS calibration code (<7KB), and add more tests.
jDG
parents:
0
diff
changeset
|
60 extern void compass_solve_calibration(void); |