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
eCompass_Lib.cpp@4:3842f7654e34, 2014-04-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |