De_ES 2113
Make a dice
 
Loading...
Searching...
No Matches
Accelerometre.h
Go to the documentation of this file.
1/*
2 * File: Accelerometre.h
3 * Author: maxcolloud
4 *
5 * Created on October 20, 2021, 10:06 AM
6 */
7
8#ifndef ACCELEROMETRE_H
9#define ACCELEROMETRE_H
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15#include <stdint.h>
16#define addr_GPIO_CTRL 0x33 // Configuration Interupt
17#define addr_DEV_STAT 0x05
18#define addr_INTR_CTRL 0x06
19#define addr_MODE 0x07
20#define addr_SR 0x08
21#define addr_MOTION_CTRL 0x09
22#define addr_FIFO_STAT 0x0A
23#define addr_FIFO_R_P 0x0B
24#define addr_FIFO_W_P 0x0C
25#define addr_Xout_Ex_L 0x0D
26#define addr_Xout_Ex_H 0x0E
27#define addr_Yout_Ex_L 0x0F
28#define addr_Yout_Ex_H 0x10
29#define addr_Zout_Ex_L 0x11
30#define addr_Zout_Ex_H 0x12
31#define addr_Status 0x13
32#define addr_INTR_STAT 0x14
33#define addr_Chip_ID 0x18
34#define addr_Reset 0x1C
35#define addr_Range 0x20
36#define addr_XOFFL 0x21
37#define addr_XOFFH 0x22
38#define addr_XGAIN8 0x22
39#define addr_XGAIN 0x27
40#define addr_YOFFL 0x23
41#define addr_YOFFH 0x24
42#define addr_YGAIN8 0x24
43#define addr_YGAIN 0x28
44#define addr_ZOFFL 0x25
45#define addr_ZOFFH 0x26
46#define addr_ZGAIN8 0x26
47#define addr_ZGAIN 0x29
48#define addr_FIFO_CTRL 0x2D
49#define addr_FIFO_CTRL_TR 0x2E
50#define addr_FIFO_INTR 0x2F
51#define addr_FIFO_CTRL2_SR2 0x30
52#define addr_COMM_CTRL 0x31
53#define addr_TF_LSB 0x40
54#define addr_TF_MSB 0x41
55#define addr_TF_SB 0x42
56#define addr_AM_LSB 0x43
57#define addr_AM_MSB 0x44
58#define addr_AM_DB 0x45
59#define addr_SHK_LSB 0x46
60#define addr_SHK_MSB 0x47
61#define addr_PK_P2P_DUR_LSB 0x48
62#define addr_PK_P2P_DUR_MSB 0x49
63#define addr_TIMER_CTRL 0x4A
64#define addr_RD_CNT 0x4B
65
66 // GPIO Control Register (Read / Write)
67typedef enum
68{
69 GPIO1_INTN1_IAH = 0x04, // 1 = acitf haut
70 GPIO1_INTN1_IPP = 0x08, // 0 = open-drain, 1 = push-pull
75
76 // Device Status Register (Read)
77typedef enum
78{
80 WAKE_STAT = 0x01,
81 RES_MODE = 0x04,
82 I2C_WDT = 0x10,
83 OTP_BUSY = 0x80,
85
86 // Interrupt enable register (Write)
87typedef enum
88{
96 ACQ_INT_EN = 0x80,
99
100 // Mode Register (Write Only)
101typedef enum
102{
103 SLEEP = 0x00,
104 STANDBY = 0x03,
105 WAKE = 0x01,
106// I2C_WDT_NEG = 0x10,
107// I2C_WDT_POS = 0x20,
108 Mask_Mode = 0xF0,
110
111 // Sample Rate Register (For SPI <= 4MHz) (Read / Write)
112typedef enum
113{
114 ODR25_Hz = 0x10,
115 ODR50_Hz = 0x11,
117 ODR100_Hz = 0x13,
118 ODR125_Hz = 0x14,
119 ODR250_Hz = 0x15,
120 ODR500_Hz = 0x16,
123
124 // Motion Control Register
125typedef enum
126{
127 TF_ENABLE = 0x01,
129 ANYM_EN = 0x04,
130 SHAKE_EN = 0x08,
136
137
138 // FIFO Status Register (Read Only)
139typedef enum
140{
141 EMPTY = 0x01,
142 FULL = 0x02,
143 TRESH = 0x04,
145
146 // FIFO Read Pointer Register (Read Only)
147typedef enum
148{
152
153
154 // FIFO Write Pointer Register (Read Only)
155typedef enum
156{
160
161 // Status Register (Read)
162typedef enum
163{
164 TILT_FLAG = 0x01,
165 FLIP_FLAG = 0x02,
166 ANYM_FLAG = 0x04,
169 FIFO_FLAG = 0x20,
170 NEW_DATA = 0x80,
172
173 // Interrupt Satus Register (Read / Write)
174typedef enum
175{
176 TILT_INT = 0x01,
177 FLIP_INT = 0x02,
178 ANYM_INT = 0x04,
179 SHAKE_INT = 0x08,
181 FIFO_INT = 0x20,
182 ACQ_INT = 0x80,
185
186 // Reset Control (Read / Write)
187typedef enum
188 {
189 Reset = 0x40, // 0 = normal operation 1 = force reset
191
192 // Range And Scale Control Register (Write)
193typedef enum
194{
195 Range2g = 0x00,
196 Range4g = 0x10,
197 Range8g = 0x20,
198 Range16g = 0x30,
199 Range12g = 0x40,
201 Range = 0x70,
202 LPF_EN = 0x08,
203 LPF = 0x07,
205
206 // X-AXIS Digital Offset Register (Write)
207typedef enum
208{
211
212 // X-AXIS Digital Gain Register (Write)
213typedef enum
214{
217
218 // Y-AXIS Digital Offset Register (Write)
219typedef enum
220{
223
224 // Y-AXIS Digital Gain Register (Write)
225typedef enum
226{
229
230 // Z-AXIS Digital Offset Register (Write)
231typedef enum
232{
235
236 // Z-AXIS Digital Gain Register (Write)
237typedef enum
238{
241
242
243 // FIFO Control Register (Read / Write)
255
256 // FIFO Threshold Register (Read / Write)
257typedef enum
258{
261
262
263 // FIFO Interrupt Status Register (Read Only)
264typedef enum
265{
266 EMPTY_INT = 0x01,
267 FULL_INT = 0x02,
268 TRESH_INT = 0x40,
270
271
272 // FIFO Controle Register2, Sample Rate Register2 (Read / Write)
280
281
282 // Communication Control Register (Read / Wrtie)
283typedef enum
284{
289
290
291 // TILP/FLIP Threshold register (Write)
292typedef enum
293{
296
297 // Anymotion Threshold Register (Write)
298typedef enum
299{
302
303 // Shake Duration, Peak-To_Peak Register (Write)
304typedef enum
305{
308
309 // Timer Control register (Write)
310typedef enum
311{
312 TILT_35 = 0x07,
316
317 // Fonctions
322 void MC3419_SetMode (MC3419_Mode Mode);
332 void MC3419_SetSampleRate(MC3419_SamplRate SampleRate);
336 void MC3419_wake(void);
340 void MC3419_stop(void);
344 void MC3419_reset(void);
348 void MC3419_start(void);
353 uint8_t MC3419_ID (void);
359 uint8_t ReadRegister8(uint8_t address);
365 void writeRegister8 (uint8_t address, uint8_t data);
370 void MC3419_Pol_INT(MC3419_GPIO_CTRL GPIO_CTRL);
375 void MC3419_INT_Enable (MC3419_INTR_CTRL INTR_CTRL);
385 uint8_t MC3419_ReadStatusRegister (void);
396 uint8_t MC3419_FiFo_CTRL_REG (MC3419_FIFO_CTRL ValCTRL);
401 void MC3419_FIFO_TRESHOLD (uint8_t Fifo_Tresh);
406 void MC3419_WriteShakeThresholdRegister (uint16_t Value);
412 void MC3419_WriteShakeDurationAndP2PRegister (uint8_t shakeDuration, uint16_t shakeP2P);
417 void MC3419_WriteAnyMotionDebounceRegister (uint8_t tresholda);
422 uint8_t MC3419_clearRegister (void);
423#ifdef __cplusplus
424}
425#endif
426
427#endif /* ACCELEROMETRE_H */
MC3419_XGAIN
Definition Accelerometre.h:214
@ MASK_XOFFH8
Definition Accelerometre.h:215
MC3419_Status
Definition Accelerometre.h:163
@ ANYM_FLAG
Definition Accelerometre.h:166
@ TILT_35_FLAG
Definition Accelerometre.h:168
@ TILT_FLAG
Definition Accelerometre.h:164
@ SHAKE_FLAG
Definition Accelerometre.h:167
@ FIFO_FLAG
Definition Accelerometre.h:169
@ FLIP_FLAG
Definition Accelerometre.h:165
@ NEW_DATA
Definition Accelerometre.h:170
MC3419_Mode
Definition Accelerometre.h:102
@ WAKE
Definition Accelerometre.h:105
@ SLEEP
Definition Accelerometre.h:103
@ STANDBY
Definition Accelerometre.h:104
@ Mask_Mode
Definition Accelerometre.h:108
void MC3419_MotionCTRL(MC3419_MotionControl Motion)
Configure le contrôle de mouvement du capteur.
Definition Accelerometre.c:245
MC3419_YOFF
Definition Accelerometre.h:220
@ MASK_YOFFH_DOR
Definition Accelerometre.h:221
MC3419_COMM_CTRL
Definition Accelerometre.h:284
@ SPI_3WIRE_EN
Definition Accelerometre.h:286
@ INT1_INT2_REQ_SWAP
Definition Accelerometre.h:285
@ INDIV_INTR_CLR
Definition Accelerometre.h:287
uint8_t MC3419_clearRegister(void)
Efface le registre de statut des interruptions du capteur.
Definition Accelerometre.c:351
MC3419_PK_TRESH
Definition Accelerometre.h:305
@ Mask_PK_P2P_DUR_MSB
Definition Accelerometre.h:306
MC3419_ZOFF
Definition Accelerometre.h:232
@ MASK_ZOFFH_DOR
Definition Accelerometre.h:233
uint8_t MC3419_ID(void)
Lit l'identifiant du capteur.
Definition Accelerometre.c:177
void MC3419_Pol_INT(MC3419_GPIO_CTRL GPIO_CTRL)
Définit la polarité des interruptions du capteur.
Definition Accelerometre.c:217
MC3419_ZGAIN
Definition Accelerometre.h:238
@ MASK_ZOFFH8
Definition Accelerometre.h:239
MC3419_XOFF
Definition Accelerometre.h:208
@ MASK_XOFFH_DOR
Definition Accelerometre.h:209
void writeRegister8(uint8_t address, uint8_t data)
Écrit une valeur 8 bits dans un registre du capteur.
Definition Accelerometre.c:205
uint8_t ReadRegister8(uint8_t address)
Lit un registre 8 bits du capteur.
Definition Accelerometre.c:187
void MC3419_WriteShakeThresholdRegister(uint16_t Value)
Écrit le seuil de détection de secousse (Shake) dans le capteur.
Definition Accelerometre.c:315
void MC3419_start(void)
Initialise le capteur avec la configuration par défaut.
Definition Accelerometre.c:46
MC3419_MotionControl
Definition Accelerometre.h:126
@ SHAKE_EN
Definition Accelerometre.h:130
@ Z_AXIS_ORT
Definition Accelerometre.h:132
@ TF_ENABLE
Definition Accelerometre.h:127
@ TILT_35_EN
Definition Accelerometre.h:131
@ RAW_PROC_STAT
Definition Accelerometre.h:133
@ MOTION_LATCH
Definition Accelerometre.h:128
@ MOTION_RESET
Definition Accelerometre.h:134
@ ANYM_EN
Definition Accelerometre.h:129
MC3419_Range
Definition Accelerometre.h:194
@ Range2g
Definition Accelerometre.h:195
@ Mask_Range
Definition Accelerometre.h:200
@ Range12g
Definition Accelerometre.h:199
@ Range
Definition Accelerometre.h:201
@ Range4g
Definition Accelerometre.h:196
@ Range16g
Definition Accelerometre.h:198
@ Range8g
Definition Accelerometre.h:197
@ LPF
Definition Accelerometre.h:203
@ LPF_EN
Definition Accelerometre.h:202
MC3419_FIFO_INTR
Definition Accelerometre.h:265
@ TRESH_INT
Definition Accelerometre.h:268
@ EMPTY_INT
Definition Accelerometre.h:266
@ FULL_INT
Definition Accelerometre.h:267
void MC3419_WriteAnyMotionDebounceRegister(uint8_t tresholda)
Écrit la valeur de debounce AnyMotion dans le registre du capteur.
Definition Accelerometre.c:33
MC3419_FIFO_THRESH_CTRL
Definition Accelerometre.h:258
@ Mask_FIFO_TH
Definition Accelerometre.h:259
void MC3419_FIFO_TRESHOLD(uint8_t Fifo_Tresh)
Définit le seuil FIFO du capteur.
Definition Accelerometre.c:299
MC3419_GPIO_CTRL
Definition Accelerometre.h:68
@ GPIO2_INT2_IAH
Definition Accelerometre.h:71
@ Mask_GPIO_CTRL
Definition Accelerometre.h:73
@ GPIO1_INTN1_IAH
Definition Accelerometre.h:69
@ GPIO2_INTN2_IPP
Definition Accelerometre.h:72
@ GPIO1_INTN1_IPP
Definition Accelerometre.h:70
MC3419_AM_THRESH
Definition Accelerometre.h:299
@ Mask_THRESH_AM_MSB
Definition Accelerometre.h:300
void MC3419_SetRangleCtrl(MC3419_Range Range)
Définit la plage de mesure du capteur.
Definition Accelerometre.c:100
MC3419_YGAIN
Definition Accelerometre.h:226
@ MASK_YOFFH8
Definition Accelerometre.h:227
MC3419_FIFO_CTRL_2
Definition Accelerometre.h:274
@ DEC_MODE_RATE
Definition Accelerometre.h:275
@ ENABLE_WRAP_N
Definition Accelerometre.h:276
@ FIFO_BURST_MODE
Definition Accelerometre.h:278
@ SELECT_WRAP_ADDR
Definition Accelerometre.h:277
void MC3419_WriteShakeDurationAndP2PRegister(uint8_t shakeDuration, uint16_t shakeP2P)
Écrit la durée et la valeur P2P de secousse dans le capteur.
Definition Accelerometre.c:330
uint8_t MC3419_ReadIntStatusRegisterAndAck(void)
Lit et acquitte le registre de statut des interruptions du capteur.
Definition Accelerometre.c:269
MC3419_DeviceStat
Definition Accelerometre.h:78
@ I2C_WDT
Definition Accelerometre.h:82
@ STANDBY_STAT
Definition Accelerometre.h:79
@ OTP_BUSY
Definition Accelerometre.h:83
@ WAKE_STAT
Definition Accelerometre.h:80
@ RES_MODE
Definition Accelerometre.h:81
void MC3419_reset(void)
Réinitialise le capteur.
Definition Accelerometre.c:146
MC3419_FIFO_CTRL
Definition Accelerometre.h:245
@ FIFO_TH_INT_EN
Definition Accelerometre.h:249
@ COMB_INT_EN
Definition Accelerometre.h:250
@ FIFO_FULL_INT_EN
Definition Accelerometre.h:248
@ FIFO_EN
Definition Accelerometre.h:252
@ FIFO_EMPTY_INT_EN
Definition Accelerometre.h:247
@ ALL_FIFO_CTRL_DIS
Definition Accelerometre.h:246
@ FIFO_RESET
Definition Accelerometre.h:251
@ FIFO_MODE
Definition Accelerometre.h:253
void MC3419_SetMode(MC3419_Mode Mode)
Définit le mode de fonctionnement du capteur.
Definition Accelerometre.c:85
MC3419_FIFO_Stat
Definition Accelerometre.h:140
@ TRESH
Definition Accelerometre.h:143
@ EMPTY
Definition Accelerometre.h:141
@ FULL
Definition Accelerometre.h:142
uint8_t MC3419_FiFo_CTRL_REG(MC3419_FIFO_CTRL ValCTRL)
Configure le registre de contrôle FIFO du capteur.
Definition Accelerometre.c:283
MC3419_SamplRate
Definition Accelerometre.h:113
@ ODR62_5_Hz
Definition Accelerometre.h:116
@ ODR25_Hz
Definition Accelerometre.h:114
@ ODR125_Hz
Definition Accelerometre.h:118
@ ODR50_Hz
Definition Accelerometre.h:115
@ ODR500_Hz
Definition Accelerometre.h:120
@ ODR100_Hz
Definition Accelerometre.h:117
@ ODR1000_Hz
Definition Accelerometre.h:121
@ ODR250_Hz
Definition Accelerometre.h:119
MC3419_Reset_CTRL
Definition Accelerometre.h:188
@ Reset
Definition Accelerometre.h:189
void MC3419_wake(void)
Met le capteur en mode réveil.
Definition Accelerometre.c:127
MC3419_FIFO_WPointer
Definition Accelerometre.h:156
@ FIFO_WR_PTR5
Definition Accelerometre.h:158
@ FIFO_WR_PTR
Definition Accelerometre.h:157
MC3419_TIMER_CTRL
Definition Accelerometre.h:311
@ TILT_35
Definition Accelerometre.h:312
@ TEMP_PER_INT_EN
Definition Accelerometre.h:314
@ TEMP_PERIOD
Definition Accelerometre.h:313
MC3419_TF_THRESH
Definition Accelerometre.h:293
@ Mask_THRESH_TF_MSB
Definition Accelerometre.h:294
void MC3419_SetSampleRate(MC3419_SamplRate SampleRate)
Définit la fréquence d'échantillonnage du capteur.
Definition Accelerometre.c:114
MC3419_INTR_Status
Definition Accelerometre.h:175
@ TILT_35_INT
Definition Accelerometre.h:180
@ FLIP_INT
Definition Accelerometre.h:177
@ TILT_INT
Definition Accelerometre.h:176
@ FIFO_INT
Definition Accelerometre.h:181
@ ACQ_INT
Definition Accelerometre.h:182
@ ANYM_INT
Definition Accelerometre.h:178
@ SHAKE_INT
Definition Accelerometre.h:179
@ Mask_INTR_STATUS
Definition Accelerometre.h:183
void MC3419_stop(void)
Met le capteur en mode veille.
Definition Accelerometre.c:136
void MC3419_INT_Enable(MC3419_INTR_CTRL INTR_CTRL)
Active les interruptions du capteur.
Definition Accelerometre.c:231
MC3419_FIFO_ReadPointer
Definition Accelerometre.h:148
@ FIFO_RD_PTR
Definition Accelerometre.h:149
@ FIFO_RD_PTR5
Definition Accelerometre.h:150
uint8_t MC3419_ReadStatusRegister(void)
Lit le registre de statut des interruptions du capteur.
Definition Accelerometre.c:255
MC3419_INTR_CTRL
Definition Accelerometre.h:88
@ FLIP_INT_EN
Definition Accelerometre.h:91
@ ACQ_INT_EN
Definition Accelerometre.h:96
@ TILT_INT_EN
Definition Accelerometre.h:90
@ TILT_35_INT_EN
Definition Accelerometre.h:94
@ AUTO_CLR_EN
Definition Accelerometre.h:95
@ INTR_Desable
Definition Accelerometre.h:89
@ SHAKE_INT_EN
Definition Accelerometre.h:93
@ ANYM_INT_EN
Definition Accelerometre.h:92
@ Mask_INT_CTRL
Definition Accelerometre.h:97