An eCompass library only for use on FPU enabled platforms like the K64F

Dependents:   K64F_eCompass_LCD rtos_compass K64F_eCompass GPS_6Axis_DataLogger_SD_UDP ... more

Fork of eCompass_Lib by Jim Carver

Committer:
JimCarver
Date:
Mon May 05 17:38:37 2014 +0000
Revision:
6:37bc03c3b1f9
Parent:
5:aeaceeb90d58
Updated eCompass which conforms to the virtual MotionSensor class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JimCarver 3:98d426530167 1 #include "eCompass_Lib.h"
JimCarver 3:98d426530167 2
JimCarver 3:98d426530167 3
JimCarver 3:98d426530167 4 extern void run_eCompass(void);
JimCarver 3:98d426530167 5 extern void init_eCompass(void);
JimCarver 3:98d426530167 6 extern void calibrate_eCompass(void);
JimCarver 3:98d426530167 7
JimCarver 6:37bc03c3b1f9 8 extern void hal_map(MotionSensorDataCounts * acc_raw, MotionSensorDataCounts * mag_raw);
JimCarver 3:98d426530167 9
JimCarver 3:98d426530167 10 axis6_t axis6;
JimCarver 3:98d426530167 11 uint32_t seconds;
JimCarver 3:98d426530167 12 uint32_t compass_type;
JimCarver 3:98d426530167 13 int32_t tcount;
JimCarver 3:98d426530167 14 uint8_t cdebug;
JimCarver 6:37bc03c3b1f9 15
JimCarver 6:37bc03c3b1f9 16 /*
JimCarver 6:37bc03c3b1f9 17 typedef struct MotionSensorDataCounts
JimCarver 6:37bc03c3b1f9 18 {
JimCarver 6:37bc03c3b1f9 19 int16_t x, y, z;
JimCarver 6:37bc03c3b1f9 20 } MotionSensorDataCounts;
JimCarver 6:37bc03c3b1f9 21 */
JimCarver 6:37bc03c3b1f9 22
JimCarver 3:98d426530167 23 eCompass::eCompass()
JimCarver 3:98d426530167 24 {
JimCarver 3:98d426530167 25 init_eCompass();
JimCarver 5:aeaceeb90d58 26 // default compass is NED
JimCarver 5:aeaceeb90d58 27 // Can be changed by user code to:
JimCarver 5:aeaceeb90d58 28 // compass_type = ANDROID_COMPASS;
JimCarver 5:aeaceeb90d58 29 // compass_type = WINDOWS_COMPASS;
JimCarver 5:aeaceeb90d58 30 compass_type = NED_COMPASS;
JimCarver 3:98d426530167 31 cdebug = 0;
JimCarver 3:98d426530167 32 }
JimCarver 3:98d426530167 33
JimCarver 3:98d426530167 34
JimCarver 3:98d426530167 35 //eCompass::~eCompass() { }
JimCarver 3:98d426530167 36
JimCarver 6:37bc03c3b1f9 37 void eCompass::run(MotionSensorDataCounts &acc_raw, MotionSensorDataCounts &mag_raw)
JimCarver 3:98d426530167 38 {
JimCarver 3:98d426530167 39 axis6.timestamp = tcount;
JimCarver 6:37bc03c3b1f9 40 hal_map(&acc_raw, &mag_raw);
JimCarver 3:98d426530167 41 //
JimCarver 3:98d426530167 42 // raw data
JimCarver 6:37bc03c3b1f9 43 axis6.acc_x = acc_raw.x;
JimCarver 6:37bc03c3b1f9 44 axis6.acc_y = acc_raw.y;
JimCarver 6:37bc03c3b1f9 45 axis6.acc_z = acc_raw.z;
JimCarver 6:37bc03c3b1f9 46 axis6.mag_x = mag_raw.x;
JimCarver 6:37bc03c3b1f9 47 axis6.mag_y = mag_raw.y;
JimCarver 6:37bc03c3b1f9 48 axis6.mag_z = mag_raw.z;
JimCarver 3:98d426530167 49 //
JimCarver 3:98d426530167 50 // raw data converted to floating ouing
JimCarver 6:37bc03c3b1f9 51 axis6.fax = (float) acc_raw.x;
JimCarver 6:37bc03c3b1f9 52 axis6.fay = (float) acc_raw.y;
JimCarver 6:37bc03c3b1f9 53 axis6.faz = (float) acc_raw.z;
JimCarver 6:37bc03c3b1f9 54 axis6.fmx = (float) mag_raw.x;
JimCarver 6:37bc03c3b1f9 55 axis6.fmy = (float) mag_raw.y;
JimCarver 6:37bc03c3b1f9 56 axis6.fmz = (float) mag_raw.z;
JimCarver 3:98d426530167 57 //
JimCarver 3:98d426530167 58 // Accelerometer data converted to Gs
JimCarver 6:37bc03c3b1f9 59 axis6.fGax = ((float) acc_raw.x) / 4096.0f;
JimCarver 6:37bc03c3b1f9 60 axis6.fGay = ((float) acc_raw.y) / 4096.0f;
JimCarver 6:37bc03c3b1f9 61 axis6.fGaz = ((float) acc_raw.z) / 4096.0f;
JimCarver 3:98d426530167 62 //
JimCarver 3:98d426530167 63 // Magnetometer data converted to microteslas
JimCarver 6:37bc03c3b1f9 64 axis6.fUTmx = ((float) mag_raw.x) / 10.0f;
JimCarver 6:37bc03c3b1f9 65 axis6.fUTmy = ((float) mag_raw.y) / 10.0f;
JimCarver 6:37bc03c3b1f9 66 axis6.fUTmz = ((float) mag_raw.z) / 10.0f;
JimCarver 3:98d426530167 67 //printf("r");
JimCarver 3:98d426530167 68 if(!cdebug) run_eCompass();
JimCarver 3:98d426530167 69 }
JimCarver 3:98d426530167 70
JimCarver 3:98d426530167 71 void eCompass::calibrate(void) {
JimCarver 3:98d426530167 72 calibrate_eCompass();
JimCarver 3:98d426530167 73 }
JimCarver 3:98d426530167 74
JimCarver 3:98d426530167 75 void eCompass::init(void) {
JimCarver 3:98d426530167 76 init_eCompass();
JimCarver 3:98d426530167 77 }