libDM_no_dep_mmc5983ma 0.0
libDM_no_dep_mmc5983ma is a library called libDM_no_dep_mmc5983ma (add description here)
Loading...
Searching...
No Matches
libDM_mmc5983ma_regs_enums.hpp
1#ifndef mmc5983ma_regs_enums_hpp
2#define mmc5983ma_regs_enums_hpp
3#include <Arduino.h>
4
5// ====================================================== //
6// ======================== ENUMS ======================= //
7// ====================================================== //
8namespace MMC5983MA_ENUM
9{
10// NOLINTBEGIN(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
11enum class ODR : uint16_t
12{
13 _OFF = 0,
14 _1HZ = 1,
15 _10HZ = 10,
16 _20HZ = 20,
17 _50HZ = 50,
18 _100HZ = 100,
19 _200HZ = 200,
20 _1000HZ = 1000
21};
22
23enum class PERIODIC_SET_TIME : uint16_t
24{
25 _OFF = 0,
26 _1 = 1,
27 _25 = 25,
28 _75 = 75,
29 _100 = 100,
30 _250 = 250,
31 _500 = 500,
32 _1000 = 1000,
33 _2000 = 2000
34};
35// NOLINTEND(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
36
37enum class BW : uint16_t
38{
39 _100HZ = 100,
40 _200HZ = 200,
41 _400HZ = 400,
42 _800HZ = 800
43};
44
45enum class STATUS : uint8_t
46{
47 TEMP_READY = 0,
48 MAG_READY,
49 ALL_READY,
50 NO_MEAS
51};
52} // namespace MMC5983MA_ENUM
53
54// ====================================================== //
55// ====================== REGISTERS ===================== //
56// ====================================================== //
58{
59 uint8_t READ_FLAG = 0x80;
60
61 uint8_t Xout0 = 0x00;
62 uint8_t Xout1 = 0x01;
63 uint8_t Yout0 = 0x02;
64 uint8_t Yout1 = 0x03;
65 uint8_t Zout0 = 0x04;
66 uint8_t Zout1 = 0x05;
67 uint8_t XYZoutComp = 0x06;
68 uint8_t Temp = 0x07;
69 uint8_t Status = 0x08;
70 uint8_t control_0 = 0x09;
71 uint8_t control_1 = 0x0A;
72 uint8_t control_2 = 0x0B;
73 uint8_t control_3 = 0x0C;
74 uint8_t ID = 0x2F;
75};
76
77// ====================================================== //
78// ================== REGISTERS VALUES ================== //
79// ====================================================== //
81{
82 uint8_t MMC_ID = 0x30;
83
84 struct
85 {
86 uint8_t MEAS_M_DONE = 0b00000001U;
87 uint8_t MEAS_M_DONE_MASK = 0b11111110U;
88 uint8_t MEAS_T_DONE = 0b00000010U;
89 uint8_t MEAS_T_DONE_MASK = 0b11111101U;
90 uint8_t MEAS_ALL_DONE = 0b00000011U;
91 uint8_t MEAS_ALL_DONE_MASK = 0b11111100U;
92 uint8_t OTP_RD_DONE = 0b00010000U;
93 uint8_t OTP_RD_DONE_MASK = 0b11101111U;
94 } STATUS;
95 struct
96 {
97 uint8_t TAKE_MAG_MEAS = 0b00000001U;
98 uint8_t TAKE_MAG_MEAS_MASK = 0b11111110U;
99 uint8_t TAKE_TEMP_MEAS = 0b00000010U;
100 uint8_t TAKE_TEMP_MEAS_MASK = 0b11111101U;
101 uint8_t ENABLE_INT_MEAS = 0b00000100U;
102 uint8_t ENABLE_INT_MEAS_MASK = 0b11111011U;
103 uint8_t SET_CURRENT = 0b00001000U;
104 uint8_t SET_CURRENT_MASK = 0b11110111U;
105 uint8_t RESET_CURRENT = 0b00010000U;
106 uint8_t RESET_CURRENT_MASK = 0b11101111U;
107 uint8_t ENABLE_AUTO_SET_RESET = 0b00100000U;
108 uint8_t DISABLE_AUTO_SET_RESET = 0b00000000U;
109 uint8_t AUTO_SET_RESET_MASK = 0b11011111U;
110 } CONTROL_0;
111
112 struct
113 {
114 uint8_t BW_100HZ = 0b00000000U;
115 uint8_t BW_200HZ = 0b00000001U;
116 uint8_t BW_400HZ = 0b00000010U;
117 uint8_t BW_800HZ = 0b00000011U;
118 uint8_t BW_MASK = 0b11111100U;
119 uint8_t DISABLE_X_CHANNEL = 0b00000100U;
120 uint8_t DISABLE_X_CHANNEL_MASK = 0b00000100U;
121 uint8_t DISABLE_XY_CHANNELS = 0b00011000U;
122 uint8_t DISABLE_XY_CHANNELS_MASK = 0b11100111U;
123 uint8_t SW_RESET = 0b10000000U;
124 uint8_t SW_RESET_MASK = 0b01111111U;
125 } CONTROL_1;
126
127 struct
128 {
129 uint8_t MEAS_FREQ_0HZ = 0b00000000U;
130 uint8_t MEAS_FREQ_1HZ = 0b00000001U;
131 uint8_t MEAS_FREQ_10HZ = 0b00000010U;
132 uint8_t MEAS_FREQ_20HZ = 0b00000011U;
133 uint8_t MEAS_FREQ_50HZ = 0b00000100U;
134 uint8_t MEAS_FREQ_100HZ = 0b00000101U;
135 uint8_t MEAS_FREQ_200HZ = 0b00000110U;
136 uint8_t MEAS_FREQ_1000HZ = 0b00000111U;
137 uint8_t MEAS_FREQ_MASK = 0b11111000U;
138 uint8_t ENABLE_CONTINUOUS_MEAS = 0b00001000U;
139 uint8_t DISABLE_CONTINUOUS_MEAS = 0b00000000U;
140 uint8_t CONTINUOUS_MEAS_MASK = 0b11110111U;
141 uint8_t PERIODIC_SET_1 = 0b00000000U;
142 uint8_t PERIODIC_SET_25 = 0b00010000U;
143 uint8_t PERIODIC_SET_75 = 0b00100000U;
144 uint8_t PERIODIC_SET_100 = 0b00110000U;
145 uint8_t PERIODIC_SET_250 = 0b01000000U;
146 uint8_t PERIODIC_SET_500 = 0b01010000U;
147 uint8_t PERIODIC_SET_1000 = 0b01100000U;
148 uint8_t PERIODIC_SET_2000 = 0b01110000U;
149 uint8_t PERIODIC_SET_MASK = 0b10001111U;
150 uint8_t ENABLE_PERIODIC_SET = 0b10000000U;
151 uint8_t DISABLE_PERIODIC_SET = 0b00000000U;
152 uint8_t ACTIVATION_PERIODIC_SET_MASK = 0b01111111U;
153 } CONTROL_2;
154
155 struct
156 {
157 uint8_t DESAT_SENSOR_POS = 0b00000010U;
158 uint8_t DESAT_SENSOR_POS_MASK = 0b11111101U;
159 uint8_t DESAT_SENSOR_NEG = 0b00000100U;
160 uint8_t DESAT_SENSOR_NEG_MASK = 0b11111011U;
161 } CONTROL_3;
162};
163
165{
166 uint8_t Status = 0U;
167 uint8_t control_0 = 0U;
168 uint8_t control_1 = 0U;
169 uint8_t control_2 = 0U;
170 uint8_t control_3 = 0U;
171 void setZero()
172 {
173 Status = 0U;
174 control_0 = 0U;
175 control_1 = 0U;
176 control_2 = 0U;
177 control_3 = 0U;
178 }
179 uint8_t updateVal(uint8_t oldVal, uint8_t value, uint8_t mask)
180 {
181 uint8_t curVal = oldVal;
182 curVal &= mask;
183 curVal |= value;
184 return curVal;
185 }
186};
187
188#endif
Definition libDM_mmc5983ma_regs_enums.hpp:165
Definition libDM_mmc5983ma_regs_enums.hpp:58
Definition libDM_mmc5983ma_regs_enums.hpp:81