Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
grove-gyro.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016, Zolertia <http://www.zolertia.com>
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 3. Neither the name of the Institute nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*
29
* This file is part of the Contiki operating system.
30
*
31
*/
32
/*---------------------------------------------------------------------------*/
33
/**
34
* \addtogroup zoul-sensors
35
* @{
36
*
37
* \defgroup zoul-grove-gyro-sensor Grove 3-axis gyroscope based on ITG-3200
38
* @{
39
*
40
* \file
41
* Grove 3-axis gyroscope header file
42
* \author
43
* Antonio Lignan <alinan@zolertia.com>
44
*/
45
/*---------------------------------------------------------------------------*/
46
#include "lib/sensors.h"
47
/* -------------------------------------------------------------------------- */
48
#ifndef GROVE_GYRO_H_
49
#define GROVE_GYRO_H_
50
/* -------------------------------------------------------------------------- */
51
/**
52
* \name Callback function to handle the interrupt
53
* @{
54
*/
55
#define GROVE_GYRO_REGISTER_INT(ptr) grove_gyro_int_callback = ptr;
56
extern
void (*grove_gyro_int_callback)(uint8_t
value
);
57
/** @} */
58
/* -------------------------------------------------------------------------- */
59
/**
60
* \name Gyroscope data values structure
61
* @{
62
*/
63
typedef
struct
{
64
uint16_t x;
65
uint16_t y;
66
uint16_t z;
67
uint16_t x_offset;
68
uint16_t y_offset;
69
uint16_t z_offset;
70
int16_t temp;
71
} grove_gyro_values_t;
72
73
extern
grove_gyro_values_t gyro_values;
74
/** @} */
75
/* -------------------------------------------------------------------------- */
76
/**
77
* \name Grove 3-axis gyroscope address and registers
78
* @{
79
*/
80
#define GROVE_GYRO_ADDR 0x68
81
82
#define GROVE_GYRO_WHO_AM_I 0x00
83
#define GROVE_GYRO_SMPLRT_DIV 0x15
84
#define GROVE_GYRO_DLPF_FS 0x16
85
#define GROVE_GYRO_INT_CFG 0x17
86
#define GROVE_GYRO_INT_STATUS 0x1A
87
#define GROVE_GYRO_TEMP_OUT_H 0x1B
88
#define GROVE_GYRO_TEMP_OUT_L 0x1C
89
#define GROVE_GYRO_XOUT_H 0x1D
90
#define GROVE_GYRO_XOUT_L 0x1E
91
#define GROVE_GYRO_YOUT_H 0x1F
92
#define GROVE_GYRO_YOUT_L 0x20
93
#define GROVE_GYRO_ZOUT_H 0x21
94
#define GROVE_GYRO_ZOUT_L 0x22
95
#define GROVE_GYRO_PWR_MGMT 0x3E
96
/** @} */
97
/*--------------------------------------------------------------------------*/
98
/**
99
* \name Grove 3-axis gyroscope bitmasks and config
100
* @{
101
*/
102
#define GROVE_GYRO_DLPF_FS_SEL 0x18
103
#define GROVE_GYRO_DLPF_FS_CGF_8KHZ_LP256HZ 0x00
104
#define GROVE_GYRO_DLPF_FS_CGF_1KHZ_LP188HZ 0x01
105
#define GROVE_GYRO_DLPF_FS_CGF_1KHZ_LP98HZ 0x02
106
#define GROVE_GYRO_DLPF_FS_CGF_1KHZ_LP42HZ 0x03
107
#define GROVE_GYRO_DLPF_FS_CGF_1KHZ_LP20HZ 0x04
108
#define GROVE_GYRO_DLPF_FS_CGF_1KHZ_LP10HZ 0x05
109
#define GROVE_GYRO_DLPF_FS_CGF_1KHZ_LP5HZ 0x06
110
111
#define GROVE_GYRO_INT_CFG_RAW_READY_EN 0x01
112
#define GROVE_GYRO_INT_CFG_READY_EN 0x04
113
#define GROVE_GYRO_INT_CFG_LATCH_CLR_ANY 0x10
114
#define GROVE_GYRO_INT_CFG_LATCH_EN 0x20
115
#define GROVE_GYRO_INT_CFG_PIN_OPEN 0x40
116
#define GROVE_GYRO_INT_CFG_PIN_ACTL 0x80
117
#define GROVE_GYRO_INT_CFG_DISABLE 0x00
118
119
#define GROVE_GYRO_INT_STATUS_DATA_RDY_MASK 0x01
120
#define GROVE_GYRO_INT_STATUS_PLL_RDY_MASK 0x04
121
122
#define GROVE_GYRO_PWR_MGMT_CLK_SEL_INTOSC 0x00
123
#define GROVE_GYRO_PWR_MGMT_CLK_SEL_PLL_X 0x01
124
#define GROVE_GYRO_PWR_MGMT_CLK_SEL_PLL_Y 0x02
125
#define GROVE_GYRO_PWR_MGMT_CLK_SEL_PLL_Z 0x03
126
#define GROVE_GYRO_PWR_MGMT_CLK_SEL_EXT_32K 0x04
127
#define GROVE_GYRO_PWR_MGMT_CLK_SEL_EXT_19K 0x05
128
#define GROVE_GYRO_PWR_MGMT_STBY_ZG 0x08
129
#define GROVE_GYRO_PWR_MGMT_STBY_YG 0x10
130
#define GROVE_GYRO_PWR_MGMT_STBY_XG 0x20
131
#define GROVE_GYRO_PWR_MGMT_SLEEP 0x40
132
#define GROVE_GYRO_PWR_MGMT_RESET 0x80
133
134
#ifdef GROVE_GYRO_CONF_OSC
135
#define GROVE_GYRO_DEFAULT_OSC GROVE_GYRO_CONF_OSC
136
#else
137
#define GROVE_GYRO_DEFAULT_OSC GROVE_GYRO_PWR_MGMT_CLK_SEL_INTOSC
138
#endif
139
140
#define GROVE_GYRO_PWR_MGMT_CLK_SEL_MASK 0x07
141
#define GROVE_GYRO_MAX_DATA 0x06
142
/** @} */
143
/* -------------------------------------------------------------------------- */
144
/**
145
* \name Grove 3-axis gyroscope operation values
146
* @{
147
*/
148
/* Configure request type */
149
#define GROVE_GYRO_ACTIVE SENSORS_ACTIVE
150
#define GROVE_GYRO_DATA_INTERRUPT 0x01
151
#define GROVE_GYRO_SAMPLE_RATE 0x02
152
#define GROVE_GYRO_SAMPLE_RATE_DIVIDER 0x03
153
#define GROVE_GYRO_POWER_ON 0x04
154
#define GROVE_GYRO_POWER_OFF 0x05
155
#define GROVE_GYRO_CALIBRATE_ZERO 0x06
156
157
/* Sensor value request type, match to the stand-by mask to check if enabled */
158
#define GROVE_GYRO_X GROVE_GYRO_PWR_MGMT_STBY_XG
159
#define GROVE_GYRO_Y GROVE_GYRO_PWR_MGMT_STBY_YG
160
#define GROVE_GYRO_Z GROVE_GYRO_PWR_MGMT_STBY_ZG
161
#define GROVE_GYRO_SENSOR GROVE_GYRO_PWR_MGMT_SLEEP
162
#define GROVE_GYRO_XYZ (GROVE_GYRO_X + GROVE_GYRO_Y + \
163
GROVE_GYRO_Z)
164
#define GROVE_GYRO_ALL (GROVE_GYRO_XYZ + GROVE_GYRO_SENSOR)
165
#define GROVE_GYRO_TEMP 0x06
166
167
/* Return types */
168
#define GROVE_GYRO_ERROR (-1)
169
#define GROVE_GYRO_SUCCESS 0x00
170
171
/* Calibration constants */
172
#define GROVE_GYRO_CALIB_SAMPLES 200
173
#define GROVE_GYRO_CALIB_TIME_US 5000
174
/** @} */
175
/* -------------------------------------------------------------------------- */
176
#define GROVE_GYRO_STRING "Grove 3-axis gyroscope Sensor"
177
/* -------------------------------------------------------------------------- */
178
extern
const
struct
sensors_sensor grove_gyro;
179
/* -------------------------------------------------------------------------- */
180
#endif
/* ifndef GROVE_GYRO_H_ */
181
/**
182
* @}
183
* @}
184
*/
value
static int value(int type)
Definition
cc2538-temp-sensor.c:49
arch
platform
zoul
dev
grove-gyro.h
Generated on
for Contiki-NG by
1.17.0