Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: K64F_eCompass_LCD rtos_compass K64F_eCompass GPS_6Axis_DataLogger_SD_UDP ... more
Fork of eCompass_Lib by
eCompass_Lib.h@3:98d426530167, 2014-04-13 (annotated)
- Committer:
- JimCarver
- Date:
- Sun Apr 13 21:23:57 2014 +0000
- Revision:
- 3:98d426530167
- Child:
- 6:37bc03c3b1f9
New cCompass library with C++ wrapper
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| JimCarver | 3:98d426530167 | 1 | /************************************************************************************************ |
| JimCarver | 3:98d426530167 | 2 | * File : eCompass.h |
| JimCarver | 3:98d426530167 | 3 | * Date : 18/07/2013 |
| JimCarver | 3:98d426530167 | 4 | * Purpose : Wi-Go eCompass interface and hardware peripherals definition |
| JimCarver | 3:98d426530167 | 5 | * Author : Frank Vannieuwkerke |
| JimCarver | 3:98d426530167 | 6 | * Description: ported from Avnet Wi-Go code |
| JimCarver | 3:98d426530167 | 7 | * For additional information on Wi-Go please visit |
| JimCarver | 3:98d426530167 | 8 | * www.em.avnet.com/wi-go |
| JimCarver | 3:98d426530167 | 9 | * Additional info on the Freescale eCompass software is available at |
| JimCarver | 3:98d426530167 | 10 | * http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=E-Compass |
| JimCarver | 3:98d426530167 | 11 | ************************************************************************************************/ |
| JimCarver | 3:98d426530167 | 12 | #ifndef ECOMPASS_H__ |
| JimCarver | 3:98d426530167 | 13 | #define ECOMPASS_H__ |
| JimCarver | 3:98d426530167 | 14 | |
| JimCarver | 3:98d426530167 | 15 | #include "mbed.h" |
| JimCarver | 3:98d426530167 | 16 | //#include "Wi-Go_eCompass_Lib_V3.ar" |
| JimCarver | 3:98d426530167 | 17 | |
| JimCarver | 3:98d426530167 | 18 | #ifdef __cplusplus |
| JimCarver | 3:98d426530167 | 19 | extern "C" { |
| JimCarver | 3:98d426530167 | 20 | #endif |
| JimCarver | 3:98d426530167 | 21 | |
| JimCarver | 3:98d426530167 | 22 | typedef short int16; |
| JimCarver | 3:98d426530167 | 23 | typedef unsigned short uint16; |
| JimCarver | 3:98d426530167 | 24 | typedef unsigned int uint32; |
| JimCarver | 3:98d426530167 | 25 | typedef unsigned char byte; |
| JimCarver | 3:98d426530167 | 26 | |
| JimCarver | 3:98d426530167 | 27 | extern void run_eCompass(void); |
| JimCarver | 3:98d426530167 | 28 | extern void init_eCompass(void); |
| JimCarver | 3:98d426530167 | 29 | extern void calibrate_eCompass(void); |
| JimCarver | 3:98d426530167 | 30 | |
| JimCarver | 3:98d426530167 | 31 | #define NED_COMPASS 1 |
| JimCarver | 3:98d426530167 | 32 | #define ANDROID_COMPASS 2 |
| JimCarver | 3:98d426530167 | 33 | #define WINDOWS_COMPASS 3 |
| JimCarver | 3:98d426530167 | 34 | |
| JimCarver | 3:98d426530167 | 35 | // Macros for constants used in fractional decimal conversion routine. |
| JimCarver | 3:98d426530167 | 36 | // FRAC_2d1 = 2^-1 = 0.5 |
| JimCarver | 3:98d426530167 | 37 | // FRAC_2d2 = 2^-2 = 0.25 etc... |
| JimCarver | 3:98d426530167 | 38 | #define FRAC_2d1 5000 |
| JimCarver | 3:98d426530167 | 39 | #define FRAC_2d2 2500 |
| JimCarver | 3:98d426530167 | 40 | #define FRAC_2d3 1250 |
| JimCarver | 3:98d426530167 | 41 | #define FRAC_2d4 625 |
| JimCarver | 3:98d426530167 | 42 | |
| JimCarver | 3:98d426530167 | 43 | // sensor scaling constants |
| JimCarver | 3:98d426530167 | 44 | #define FCOUNTSPERUT 10.0F // sensor specific: MAG3110 provide 10 counts / uT |
| JimCarver | 3:98d426530167 | 45 | #define FCOUNTSPERG 4096.0F // sensor specific: MMA8451 provide 4096 counts / g in 2g mode |
| JimCarver | 3:98d426530167 | 46 | |
| JimCarver | 3:98d426530167 | 47 | typedef struct { |
| JimCarver | 3:98d426530167 | 48 | // Always 1 |
| JimCarver | 3:98d426530167 | 49 | uint16 packet_id; |
| JimCarver | 3:98d426530167 | 50 | // Light sensor |
| JimCarver | 3:98d426530167 | 51 | int16 light; |
| JimCarver | 3:98d426530167 | 52 | // Counts at a 0.020MS interval when sensor data is processed |
| JimCarver | 3:98d426530167 | 53 | uint32 timestamp; |
| JimCarver | 3:98d426530167 | 54 | // Ineeger data from accelerometer |
| JimCarver | 3:98d426530167 | 55 | int16 acc_x, acc_y, acc_z; |
| JimCarver | 3:98d426530167 | 56 | // Integer data from Magnetometer |
| JimCarver | 3:98d426530167 | 57 | int16 mag_x, mag_y, mag_z; |
| JimCarver | 3:98d426530167 | 58 | // Roll, Pitch, Yaw and Compass from the eCompass algorithm |
| JimCarver | 3:98d426530167 | 59 | int16 roll, pitch, yaw, compass; |
| JimCarver | 3:98d426530167 | 60 | // Altitude and temperature |
| JimCarver | 3:98d426530167 | 61 | int16 alt, temp; |
| JimCarver | 3:98d426530167 | 62 | // Data from Accelerometer converted to floating point |
| JimCarver | 3:98d426530167 | 63 | float fax, fay, faz; |
| JimCarver | 3:98d426530167 | 64 | // Accelerometer data converted to G's |
| JimCarver | 3:98d426530167 | 65 | float fGax, fGay, fGaz; |
| JimCarver | 3:98d426530167 | 66 | // Data from Magnetometer converted to floating point |
| JimCarver | 3:98d426530167 | 67 | float fmx, fmy, fmz; |
| JimCarver | 3:98d426530167 | 68 | // Magnetometer data converted to UT's |
| JimCarver | 3:98d426530167 | 69 | float fUTmx, fUTmy, fUTmz; |
| JimCarver | 3:98d426530167 | 70 | float q0, q1, q2, q3; |
| JimCarver | 3:98d426530167 | 71 | |
| JimCarver | 3:98d426530167 | 72 | } axis6_t; |
| JimCarver | 3:98d426530167 | 73 | |
| JimCarver | 3:98d426530167 | 74 | class eCompass |
| JimCarver | 3:98d426530167 | 75 | { |
| JimCarver | 3:98d426530167 | 76 | public: |
| JimCarver | 3:98d426530167 | 77 | eCompass(); |
| JimCarver | 3:98d426530167 | 78 | void run(int16_t * acc, int16_t * mag); |
| JimCarver | 3:98d426530167 | 79 | void calibrate(void); |
| JimCarver | 3:98d426530167 | 80 | void init(void); |
| JimCarver | 3:98d426530167 | 81 | |
| JimCarver | 3:98d426530167 | 82 | |
| JimCarver | 3:98d426530167 | 83 | private: |
| JimCarver | 3:98d426530167 | 84 | }; |
| JimCarver | 3:98d426530167 | 85 | |
| JimCarver | 3:98d426530167 | 86 | #ifdef __cplusplus |
| JimCarver | 3:98d426530167 | 87 | } |
| JimCarver | 3:98d426530167 | 88 | #endif |
| JimCarver | 3:98d426530167 | 89 | |
| JimCarver | 3:98d426530167 | 90 | #endif |

Tilt Compensated eCompass, FPU Optimized