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:
Sun Apr 13 21:23:57 2014 +0000
Revision:
3:98d426530167
Child:
4:3842f7654e34
New cCompass library with C++ wrapper

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 3:98d426530167 46 axis6.fGax = ((float) acc_raw[0]) / 4096.0;
JimCarver 3:98d426530167 47 axis6.fGay = ((float) acc_raw[1]) / 4096.0;
JimCarver 3:98d426530167 48 axis6.fGaz = ((float) acc_raw[2]) / 4096.0;
JimCarver 3:98d426530167 49 //
JimCarver 3:98d426530167 50 // Magnetometer data converted to microteslas
JimCarver 3:98d426530167 51 axis6.fUTmx = ((float) mag_raw[0]) / 10.0;
JimCarver 3:98d426530167 52 axis6.fUTmy = ((float) mag_raw[1]) / 10.0;
JimCarver 3:98d426530167 53 axis6.fUTmz = ((float) mag_raw[2]) / 10.0;
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 }