Avnet - Precompiled eCompass library for the Wi-Go board

Dependents:   Wi-Go_IOT_Demo IoT_World_Hackathon_WiGo_NSP_Demo Wi-Go_IOT_Demo_MKII

Committer:
frankvnk
Date:
Sat Sep 07 19:53:27 2013 +0000
Revision:
1:c37fee2125c6
Parent:
0:6296487369d8
added reference to Avnet and Freescale

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 1:c37fee2125c6 1 /************************************************************************************************
frankvnk 0:6296487369d8 2 * File : eCompass.h
frankvnk 0:6296487369d8 3 * Date : 18/07/2013
frankvnk 1:c37fee2125c6 4 * Purpose : Wi-Go eCompass interface and hardware peripherals definition
frankvnk 0:6296487369d8 5 * Author : Frank Vannieuwkerke
frankvnk 1:c37fee2125c6 6 * Description: ported from Avnet Wi-Go code
frankvnk 1:c37fee2125c6 7 * For additional information on Wi-Go please visit
frankvnk 1:c37fee2125c6 8 * www.em.avnet.com/wi-go
frankvnk 1:c37fee2125c6 9 * Additional info on the Freescale eCompass software is available at
frankvnk 1:c37fee2125c6 10 * http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=E-Compass
frankvnk 1:c37fee2125c6 11 ************************************************************************************************/
frankvnk 0:6296487369d8 12 #ifndef ECOMPASS_H__
frankvnk 0:6296487369d8 13 #define ECOMPASS_H__
frankvnk 0:6296487369d8 14
frankvnk 0:6296487369d8 15 //#include "common.h"
frankvnk 0:6296487369d8 16 //#include "Wi-Go_eCompass_Lib_V3.ar"
frankvnk 0:6296487369d8 17
frankvnk 0:6296487369d8 18 #ifdef __cplusplus
frankvnk 0:6296487369d8 19 extern "C" {
frankvnk 0:6296487369d8 20 #endif
frankvnk 0:6296487369d8 21
frankvnk 0:6296487369d8 22 typedef short int16;
frankvnk 0:6296487369d8 23 typedef unsigned short uint16;
frankvnk 0:6296487369d8 24 typedef unsigned int uint32;
frankvnk 0:6296487369d8 25 typedef unsigned char byte;
frankvnk 0:6296487369d8 26
frankvnk 0:6296487369d8 27 extern void run_eCompass(void);
frankvnk 0:6296487369d8 28 extern void init_eCompass(void);
frankvnk 0:6296487369d8 29 extern void calibrate_eCompass(void);
frankvnk 0:6296487369d8 30
frankvnk 0:6296487369d8 31 #define NED_COMPASS 1
frankvnk 0:6296487369d8 32 #define ANDROID_COMPASS 2
frankvnk 0:6296487369d8 33 #define WINDOWS_COMPASS 3
frankvnk 0:6296487369d8 34
frankvnk 0:6296487369d8 35 // Macros for constants used in fractional decimal conversion routine.
frankvnk 0:6296487369d8 36 // FRAC_2d1 = 2^-1 = 0.5
frankvnk 0:6296487369d8 37 // FRAC_2d2 = 2^-2 = 0.25 etc...
frankvnk 0:6296487369d8 38 #define FRAC_2d1 5000
frankvnk 0:6296487369d8 39 #define FRAC_2d2 2500
frankvnk 0:6296487369d8 40 #define FRAC_2d3 1250
frankvnk 0:6296487369d8 41 #define FRAC_2d4 625
frankvnk 0:6296487369d8 42
frankvnk 0:6296487369d8 43 // sensor scaling constants
frankvnk 0:6296487369d8 44 #define FCOUNTSPERUT 10.0F // sensor specific: MAG3110 provide 10 counts / uT
frankvnk 0:6296487369d8 45 #define FCOUNTSPERG 4096.0F // sensor specific: MMA8451 provide 4096 counts / g in 2g mode
frankvnk 0:6296487369d8 46
frankvnk 0:6296487369d8 47 typedef struct {
frankvnk 0:6296487369d8 48 // Always 1
frankvnk 0:6296487369d8 49 uint16 packet_id;
frankvnk 0:6296487369d8 50 // Light sensor
frankvnk 0:6296487369d8 51 int16 light;
frankvnk 0:6296487369d8 52 // Counts at a 0.020MS interval when sensor data is processed
frankvnk 0:6296487369d8 53 uint32 timestamp;
frankvnk 0:6296487369d8 54 // Ineeger data from accelerometer
frankvnk 0:6296487369d8 55 int16 acc_x, acc_y, acc_z;
frankvnk 0:6296487369d8 56 // Integer data from Magnetometer
frankvnk 0:6296487369d8 57 int16 mag_x, mag_y, mag_z;
frankvnk 0:6296487369d8 58 // Roll, Pitch, Yaw and Compass from the eCompass algorithm
frankvnk 0:6296487369d8 59 int16 roll, pitch, yaw, compass;
frankvnk 0:6296487369d8 60 // Altitude and temperature
frankvnk 0:6296487369d8 61 int16 alt, temp;
frankvnk 0:6296487369d8 62 // Data from Accelerometer converted to floating point
frankvnk 0:6296487369d8 63 float fax, fay, faz;
frankvnk 0:6296487369d8 64 // Accelerometer data converted to G's
frankvnk 0:6296487369d8 65 float fGax, fGay, fGaz;
frankvnk 0:6296487369d8 66 // Data from Magnetometer converted to floating point
frankvnk 0:6296487369d8 67 float fmx, fmy, fmz;
frankvnk 0:6296487369d8 68 // Magnetometer data converted to UT's
frankvnk 0:6296487369d8 69 float fUTmx, fUTmy, fUTmz;
frankvnk 0:6296487369d8 70 float q0, q1, q2, q3;
frankvnk 0:6296487369d8 71
frankvnk 0:6296487369d8 72 } axis6_t;
frankvnk 0:6296487369d8 73
frankvnk 0:6296487369d8 74 #ifdef __cplusplus
frankvnk 0:6296487369d8 75 }
frankvnk 0:6296487369d8 76 #endif
frankvnk 0:6296487369d8 77
frankvnk 0:6296487369d8 78 #endif