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 02:02:31 2014 +0000
Revision:
4:3842f7654e34
Parent:
3:98d426530167
Child:
5:aeaceeb90d58
New version of the eCompass library with floating point support to accommodate the K64F (and other FPU enabled devices)

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