MAV'RIC
compass_hmc5883l.h
1 /*
2  * compass_hmc5883.h
3  *
4  * Created: 12/03/2013 20:51:14
5  * Author: sfx
6  */
7 
8 
9 #ifndef HMC5883L_H_
10 #define HMC5883L_H_
11 
12 #include "compiler.h"
13 
14 
15 #define CONF_REG_A 0x00
16 #define CONF_REG_B 0x01
17 #define MODE_REG 0x02
18 #define DATA_REG_BEGIN 0x03
19 
20 #define MEASUREMENT_CONTINUOUS 0x00
21 #define MEASUREMENT_SINGLE_SHOT 0x01
22 #define MEASUREMENT_IDLE 0x03
23 
24 #define HMC5883_SLAVE_ADDRESS 0x1E
25 
26 enum
27 {HMC_SAMPLE_AVG_1,
28  HMC_SAMPLE_AVG_2,
29  HMC_SAMPLE_AVG_4,
30  HMC_SAMPLE_AVG_8};
31 
32 enum
33 {HMC_RATE_0_75,
34  HMC_RATE_1_5,
35  HMC_RATE_3_0,
36  HMC_RATE_7_5,
37  HMC_RATE_15,
38  HMC_RATE_30,
39  HMC_RATE_75};
40 
41 enum
42 {HMC_BIAS_MODE_NORMAL,
43  HMC_BIAS_MODE_POS_BIAS,
44  HMC_BIAS_MODE_NEG_BIAS};
45 
46 enum
47 {HMC_RANGE_0_88_GA,
48  HMC_RANGE_1_3_GA,
49  HMC_RANGE_1_9_GA,
50  HMC_RANGE_2_5_GA,
51  HMC_RANGE_4_0_GA,
52  HMC_RANGE_4_7_GA,
53  HMC_RANGE_5_6_GA,
54  HMC_RANGE_8_1_GA};
55 
56 enum
57 {HMC_MODE_CONTINUOUS,
58  HMC_MODE_SINGLE,
59  HMC_MODE_IDLE
60 };
61 
62 #define HMC_SAMPLE_AVG HMC_SAMPLE_AVG_4
63 #define HMC_RATE HMC_RATE_15
64 #define HMC_BIAS_MODE HMC_BIAS_MODE_NORMAL
65 #define HMC_RANGE HMC_RANGE_1_3_GA
66 #define HMC_MODE HMC_MODE_CONTINUOUS
67 
68 
69 
70 typedef struct{
71  uint8_t raw_data[6];
72  int16_t axes[3];
74 
75 
76 
77 void hmc5883l_init();
78 
79 void hmc5883l_init_slow();
80 
81 magnetometer_t* compass_hmc58831l_get_data_slow();
82 
83 
84 
85 #endif /* COMPASS_HMC5883_H_ */
The magnetometer structure.
Definition: magnetometer.h:49