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 Apr 14 17:13:59 2014 +0000
Revision:
5:aeaceeb90d58
Parent:
4:3842f7654e34
Child:
6:37bc03c3b1f9
This is an eCompass library dedicated to FPU enabled devices like the K64F

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 3:98d426530167 8 extern void hal_map(int16_t * acc_raw, int16_t * 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 3:98d426530167 15 eCompass::eCompass()
JimCarver 3:98d426530167 16 {
JimCarver 3:98d426530167 17 init_eCompass();
JimCarver 5:aeaceeb90d58 18 // default compass is NED
JimCarver 5:aeaceeb90d58 19 // Can be changed by user code to:
JimCarver 5:aeaceeb90d58 20 // compass_type = ANDROID_COMPASS;
JimCarver 5:aeaceeb90d58 21 // compass_type = WINDOWS_COMPASS;
JimCarver 5:aeaceeb90d58 22 compass_type = NED_COMPASS;
JimCarver 3:98d426530167 23 cdebug = 0;
JimCarver 3:98d426530167 24 }
JimCarver 3:98d426530167 25
JimCarver 3:98d426530167 26
JimCarver 3:98d426530167 27 //eCompass::~eCompass() { }
JimCarver 3:98d426530167 28
JimCarver 3:98d426530167 29 void eCompass::run(int16_t * acc_raw, int16_t * mag_raw)
JimCarver 3:98d426530167 30 {
JimCarver 3:98d426530167 31 axis6.timestamp = tcount;
JimCarver 3:98d426530167 32 hal_map(acc_raw, mag_raw);
JimCarver 3:98d426530167 33 //
JimCarver 3:98d426530167 34 // raw data
JimCarver 3:98d426530167 35 axis6.acc_x = acc_raw[0];
JimCarver 3:98d426530167 36 axis6.acc_y = acc_raw[1];
JimCarver 3:98d426530167 37 axis6.acc_z = acc_raw[2];
JimCarver 3:98d426530167 38 axis6.mag_x = mag_raw[0];
JimCarver 3:98d426530167 39 axis6.mag_y = mag_raw[1];
JimCarver 3:98d426530167 40 axis6.mag_z = mag_raw[2];
JimCarver 3:98d426530167 41 //
JimCarver 3:98d426530167 42 // raw data converted to floating ouing
JimCarver 3:98d426530167 43 axis6.fax = (float) acc_raw[0];
JimCarver 3:98d426530167 44 axis6.fay = (float) acc_raw[1];
JimCarver 3:98d426530167 45 axis6.faz = (float) acc_raw[2];
JimCarver 3:98d426530167 46 axis6.fmx = (float) mag_raw[0];
JimCarver 3:98d426530167 47 axis6.fmy = (float) mag_raw[1];
JimCarver 3:98d426530167 48 axis6.fmz = (float) mag_raw[2];
JimCarver 3:98d426530167 49 //
JimCarver 3:98d426530167 50 // Accelerometer data converted to Gs
JimCarver 4:3842f7654e34 51 axis6.fGax = ((float) acc_raw[0]) / 4096.0f;
JimCarver 4:3842f7654e34 52 axis6.fGay = ((float) acc_raw[1]) / 4096.0f;
JimCarver 4:3842f7654e34 53 axis6.fGaz = ((float) acc_raw[2]) / 4096.0f;
JimCarver 3:98d426530167 54 //
JimCarver 3:98d426530167 55 // Magnetometer data converted to microteslas
JimCarver 4:3842f7654e34 56 axis6.fUTmx = ((float) mag_raw[0]) / 10.0f;
JimCarver 4:3842f7654e34 57 axis6.fUTmy = ((float) mag_raw[1]) / 10.0f;
JimCarver 4:3842f7654e34 58 axis6.fUTmz = ((float) mag_raw[2]) / 10.0f;
JimCarver 3:98d426530167 59 //printf("r");
JimCarver 3:98d426530167 60 if(!cdebug) run_eCompass();
JimCarver 3:98d426530167 61 }
JimCarver 3:98d426530167 62
JimCarver 3:98d426530167 63 void eCompass::calibrate(void) {
JimCarver 3:98d426530167 64 calibrate_eCompass();
JimCarver 3:98d426530167 65 }
JimCarver 3:98d426530167 66
JimCarver 3:98d426530167 67 void eCompass::init(void) {
JimCarver 3:98d426530167 68 init_eCompass();
JimCarver 3:98d426530167 69 }