diff src/compass.h @ 0:11d4fc797f74

init
author heinrichsweikamp
date Wed, 24 Apr 2013 19:22:45 +0200
parents
children 7d9edd3b8c86
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/compass.h	Wed Apr 24 19:22:45 2013 +0200
@@ -0,0 +1,52 @@
+//////////////////////////////////////////////////////////////////////////////
+// HISTORY
+//  2013-03-29  [jDG] Creation for tests.
+
+//---- Storage classes -------------------------------------------------------
+// Declaring PIC18 and VC++/G++ functions.
+#ifdef UNIX
+#   define PARAMETER
+#   define OVERLAY
+#else
+//---- Bank 9 parameters -----------------------------------------------------
+#   pragma udata overlay bank9_compass = 0x900
+#   define PARAMETER    static
+#   define OVERLAY      overlay
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+
+#define Q_PI    (18000)
+#define Q_PIO2  (9000)
+
+typedef short int Int16;
+typedef signed char Int8;
+typedef Int16 Angle;
+
+// The (filtered) components of the magnetometer sensor:
+extern Int16 compass_DX_f;
+extern Int16 compass_DY_f;
+extern Int16 compass_DZ_f;
+
+// Found soft-iron calibration values, deduced from already filtered values.
+extern Int16 compass_CX_f;
+extern Int16 compass_CY_f;
+extern Int16 compass_CZ_f;
+
+// The (filtered) components of the accelerometer sensor:
+extern Int16 accel_DX_f;
+extern Int16 accel_DY_f;
+extern Int16 accel_DZ_f;
+
+// The compass result value.
+extern Int16 compass_heading;
+extern Int16 compass_roll;
+extern Int16 compass_pitch;
+
+extern Int16 umul(PARAMETER Int16 a, PARAMETER Int16 b);
+extern Int16 imul(PARAMETER Int16 a, PARAMETER Int16 b);
+extern Int16 udiv(PARAMETER Int16 a, PARAMETER Int16 b);
+extern Angle utan(PARAMETER Int16 a, PARAMETER Int16 b);
+extern Angle itan(PARAMETER Int16 a, PARAMETER Int16 b);
+extern Angle cosxh(PARAMETER Int16 a, PARAMETER Int16 b);
+extern void  sincos(PARAMETER Int16 a, PARAMETER Int16 b, Int16* sin, Int16* cos);