i2c driver for ITG3200 gyroscope sensor

Dependents:   m3Dpi

Fork of ITG3200 by Aaron Berk

Committer:
sillevl
Date:
Sat Dec 19 10:41:01 2015 +0000
Revision:
3:2dd53a8427e9
Parent:
2:92aec36778a7
add constructor that accepts I2C object

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aberk 0:b098d99dd81e 1 /**
aberk 0:b098d99dd81e 2 * @author Aaron Berk
aberk 0:b098d99dd81e 3 *
aberk 0:b098d99dd81e 4 * @section LICENSE
aberk 0:b098d99dd81e 5 *
aberk 0:b098d99dd81e 6 * Copyright (c) 2010 ARM Limited
aberk 0:b098d99dd81e 7 *
aberk 0:b098d99dd81e 8 * Permission is hereby granted, free of charge, to any person obtaining a copy
aberk 0:b098d99dd81e 9 * of this software and associated documentation files (the "Software"), to deal
aberk 0:b098d99dd81e 10 * in the Software without restriction, including without limitation the rights
aberk 0:b098d99dd81e 11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
aberk 0:b098d99dd81e 12 * copies of the Software, and to permit persons to whom the Software is
aberk 0:b098d99dd81e 13 * furnished to do so, subject to the following conditions:
aberk 0:b098d99dd81e 14 *
aberk 0:b098d99dd81e 15 * The above copyright notice and this permission notice shall be included in
aberk 0:b098d99dd81e 16 * all copies or substantial portions of the Software.
aberk 0:b098d99dd81e 17 *
aberk 0:b098d99dd81e 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
aberk 0:b098d99dd81e 19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
aberk 0:b098d99dd81e 20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
aberk 0:b098d99dd81e 21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
aberk 0:b098d99dd81e 22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
aberk 0:b098d99dd81e 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
aberk 0:b098d99dd81e 24 * THE SOFTWARE.
aberk 0:b098d99dd81e 25 *
aberk 0:b098d99dd81e 26 * @section DESCRIPTION
aberk 0:b098d99dd81e 27 *
aberk 0:b098d99dd81e 28 * ITG-3200 triple axis, digital interface, gyroscope.
aberk 0:b098d99dd81e 29 *
aberk 0:b098d99dd81e 30 * Datasheet:
aberk 0:b098d99dd81e 31 *
aberk 0:b098d99dd81e 32 * http://invensense.com/mems/gyro/documents/PS-ITG-3200-00-01.4.pdf
aberk 0:b098d99dd81e 33 */
aberk 0:b098d99dd81e 34
aberk 0:b098d99dd81e 35 #ifndef ITG3200_H
aberk 0:b098d99dd81e 36 #define ITG3200_H
aberk 0:b098d99dd81e 37
aberk 0:b098d99dd81e 38 /**
aberk 0:b098d99dd81e 39 * Includes
aberk 0:b098d99dd81e 40 */
aberk 0:b098d99dd81e 41 #include "mbed.h"
aberk 0:b098d99dd81e 42
aberk 0:b098d99dd81e 43 /**
aberk 0:b098d99dd81e 44 * Defines
aberk 0:b098d99dd81e 45 */
sillevl 2:92aec36778a7 46 #define ITG3200_I2C_ADDRESS 0x68 //7-bit address.
aberk 0:b098d99dd81e 47
aberk 0:b098d99dd81e 48 //-----------
aberk 0:b098d99dd81e 49 // Registers
aberk 0:b098d99dd81e 50 //-----------
aberk 0:b098d99dd81e 51 #define WHO_AM_I_REG 0x00
aberk 0:b098d99dd81e 52 #define SMPLRT_DIV_REG 0x15
aberk 0:b098d99dd81e 53 #define DLPF_FS_REG 0x16
aberk 0:b098d99dd81e 54 #define INT_CFG_REG 0x17
aberk 0:b098d99dd81e 55 #define INT_STATUS 0x1A
aberk 0:b098d99dd81e 56 #define TEMP_OUT_H_REG 0x1B
aberk 0:b098d99dd81e 57 #define TEMP_OUT_L_REG 0x1C
aberk 0:b098d99dd81e 58 #define GYRO_XOUT_H_REG 0x1D
aberk 0:b098d99dd81e 59 #define GYRO_XOUT_L_REG 0x1E
aberk 0:b098d99dd81e 60 #define GYRO_YOUT_H_REG 0x1F
aberk 0:b098d99dd81e 61 #define GYRO_YOUT_L_REG 0x20
aberk 0:b098d99dd81e 62 #define GYRO_ZOUT_H_REG 0x21
aberk 0:b098d99dd81e 63 #define GYRO_ZOUT_L_REG 0x22
aberk 0:b098d99dd81e 64 #define PWR_MGM_REG 0x3E
aberk 0:b098d99dd81e 65
aberk 0:b098d99dd81e 66 //----------------------------
aberk 0:b098d99dd81e 67 // Low Pass Filter Bandwidths
aberk 0:b098d99dd81e 68 //----------------------------
aberk 0:b098d99dd81e 69 #define LPFBW_256HZ 0x00
aberk 0:b098d99dd81e 70 #define LPFBW_188HZ 0x01
aberk 0:b098d99dd81e 71 #define LPFBW_98HZ 0x02
aberk 0:b098d99dd81e 72 #define LPFBW_42HZ 0x03
aberk 0:b098d99dd81e 73 #define LPFBW_20HZ 0x04
aberk 0:b098d99dd81e 74 #define LPFBW_10HZ 0x05
aberk 0:b098d99dd81e 75 #define LPFBW_5HZ 0x06
aberk 0:b098d99dd81e 76
aberk 0:b098d99dd81e 77 /**
aberk 0:b098d99dd81e 78 * ITG-3200 triple axis digital gyroscope.
aberk 0:b098d99dd81e 79 */
aberk 0:b098d99dd81e 80 class ITG3200 {
aberk 0:b098d99dd81e 81
aberk 0:b098d99dd81e 82 public:
aberk 0:b098d99dd81e 83
sillevl 3:2dd53a8427e9 84 ITG3200(I2C &i2c);
sillevl 3:2dd53a8427e9 85
aberk 0:b098d99dd81e 86 /**
aberk 0:b098d99dd81e 87 * Constructor.
aberk 0:b098d99dd81e 88 *
aberk 0:b098d99dd81e 89 * Sets FS_SEL to 0x03 for proper opertaion.
aberk 0:b098d99dd81e 90 *
aberk 0:b098d99dd81e 91 * @param sda - mbed pin to use for the SDA I2C line.
aberk 0:b098d99dd81e 92 * @param scl - mbed pin to use for the SCL I2C line.
aberk 0:b098d99dd81e 93 */
aberk 0:b098d99dd81e 94 ITG3200(PinName sda, PinName scl);
aberk 0:b098d99dd81e 95
aberk 0:b098d99dd81e 96 /**
aberk 0:b098d99dd81e 97 * Get the identity of the device.
aberk 0:b098d99dd81e 98 *
aberk 0:b098d99dd81e 99 * @return The contents of the Who Am I register which contains the I2C
aberk 0:b098d99dd81e 100 * address of the device.
aberk 0:b098d99dd81e 101 */
aberk 0:b098d99dd81e 102 char getWhoAmI(void);
aberk 0:b098d99dd81e 103
aberk 0:b098d99dd81e 104 /**
aberk 0:b098d99dd81e 105 * Set the address of the device.
aberk 0:b098d99dd81e 106 *
aberk 0:b098d99dd81e 107 * @param address The I2C slave address to write to the Who Am I register
aberk 0:b098d99dd81e 108 * on the device.
aberk 0:b098d99dd81e 109 */
aberk 0:b098d99dd81e 110 void setWhoAmI(char address);
aberk 0:b098d99dd81e 111
aberk 0:b098d99dd81e 112 /**
aberk 0:b098d99dd81e 113 * Get the sample rate divider.
aberk 0:b098d99dd81e 114 *
aberk 0:b098d99dd81e 115 * @return The sample rate divider as a number from 0-255.
aberk 0:b098d99dd81e 116 */
aberk 0:b098d99dd81e 117 char getSampleRateDivider(void);
aberk 0:b098d99dd81e 118
aberk 0:b098d99dd81e 119 /**
aberk 0:b098d99dd81e 120 * Set the sample rate divider.
aberk 0:b098d99dd81e 121 *
aberk 0:b098d99dd81e 122 * Fsample = Finternal / (divider + 1), where Finternal = 1kHz or 8kHz,
aberk 0:b098d99dd81e 123 * as decidied by the DLPF_FS register.
aberk 0:b098d99dd81e 124 *
aberk 0:b098d99dd81e 125 * @param The sample rate divider as a number from 0-255.
aberk 0:b098d99dd81e 126 */
aberk 0:b098d99dd81e 127 void setSampleRateDivider(char divider);
aberk 0:b098d99dd81e 128
aberk 0:b098d99dd81e 129 /**
aberk 0:b098d99dd81e 130 * Get the internal sample rate.
aberk 0:b098d99dd81e 131 *
aberk 0:b098d99dd81e 132 * @return The internal sample rate in kHz - either 1 or 8.
aberk 0:b098d99dd81e 133 */
aberk 0:b098d99dd81e 134 int getInternalSampleRate(void);
aberk 0:b098d99dd81e 135
aberk 0:b098d99dd81e 136 /**
aberk 0:b098d99dd81e 137 * Set the low pass filter bandwidth.
aberk 0:b098d99dd81e 138 *
aberk 0:b098d99dd81e 139 * Also used to set the internal sample rate.
aberk 0:b098d99dd81e 140 * Pass the #define bandwidth codes as a parameter.
aberk 0:b098d99dd81e 141 *
aberk 0:b098d99dd81e 142 * 256Hz -> 8kHz internal sample rate.
aberk 0:b098d99dd81e 143 * Everything else -> 1kHz internal rate.
aberk 0:b098d99dd81e 144 *
aberk 0:b098d99dd81e 145 * @param bandwidth Low pass filter bandwidth code
aberk 0:b098d99dd81e 146 */
aberk 0:b098d99dd81e 147 void setLpBandwidth(char bandwidth);
aberk 0:b098d99dd81e 148
aberk 0:b098d99dd81e 149 /**
aberk 0:b098d99dd81e 150 * Get the interrupt configuration.
aberk 0:b098d99dd81e 151 *
aberk 0:b098d99dd81e 152 * See datasheet for register contents details.
aberk 0:b098d99dd81e 153 *
aberk 0:b098d99dd81e 154 * 7 6 5 4
aberk 0:b098d99dd81e 155 * +------+------+--------------+------------------+
aberk 0:b098d99dd81e 156 * | ACTL | OPEN | LATCH_INT_EN | INT_ANYRD_2CLEAR |
aberk 0:b098d99dd81e 157 * +------+------+--------------+------------------+
aberk 0:b098d99dd81e 158 *
aberk 0:b098d99dd81e 159 * 3 2 1 0
aberk 0:b098d99dd81e 160 * +---+------------+------------+---+
aberk 0:b098d99dd81e 161 * | 0 | ITG_RDY_EN | RAW_RDY_EN | 0 |
aberk 0:b098d99dd81e 162 * +---+------------+------------+---+
aberk 0:b098d99dd81e 163 *
aberk 0:b098d99dd81e 164 * ACTL Logic level for INT output pin; 1 = active low, 0 = active high.
aberk 0:b098d99dd81e 165 * OPEN Drive type for INT output pin; 1 = open drain, 0 = push-pull.
aberk 0:b098d99dd81e 166 * LATCH_INT_EN Latch mode; 1 = latch until interrupt is cleared,
aberk 0:b098d99dd81e 167 * 0 = 50us pulse.
aberk 0:b098d99dd81e 168 * INT_ANYRD_2CLEAR Latch clear method; 1 = any register read,
aberk 0:b098d99dd81e 169 * 0 = status register read only.
aberk 0:b098d99dd81e 170 * ITG_RDY_EN Enable interrupt when device is ready,
aberk 0:b098d99dd81e 171 * (PLL ready after changing clock source).
aberk 0:b098d99dd81e 172 * RAW_RDY_EN Enable interrupt when data is available.
aberk 0:b098d99dd81e 173 * 0 Bits 1 and 3 of the INT_CFG register should be zero.
aberk 0:b098d99dd81e 174 *
aberk 0:b098d99dd81e 175 * @return the contents of the INT_CFG register.
aberk 0:b098d99dd81e 176 */
aberk 0:b098d99dd81e 177 char getInterruptConfiguration(void);
aberk 0:b098d99dd81e 178
aberk 0:b098d99dd81e 179 /**
aberk 0:b098d99dd81e 180 * Set the interrupt configuration.
aberk 0:b098d99dd81e 181 *
aberk 0:b098d99dd81e 182 * See datasheet for configuration byte details.
aberk 0:b098d99dd81e 183 *
aberk 0:b098d99dd81e 184 * 7 6 5 4
aberk 0:b098d99dd81e 185 * +------+------+--------------+------------------+
aberk 0:b098d99dd81e 186 * | ACTL | OPEN | LATCH_INT_EN | INT_ANYRD_2CLEAR |
aberk 0:b098d99dd81e 187 * +------+------+--------------+------------------+
aberk 0:b098d99dd81e 188 *
aberk 0:b098d99dd81e 189 * 3 2 1 0
aberk 0:b098d99dd81e 190 * +---+------------+------------+---+
aberk 0:b098d99dd81e 191 * | 0 | ITG_RDY_EN | RAW_RDY_EN | 0 |
aberk 0:b098d99dd81e 192 * +---+------------+------------+---+
aberk 0:b098d99dd81e 193 *
aberk 0:b098d99dd81e 194 * ACTL Logic level for INT output pin; 1 = active low, 0 = active high.
aberk 0:b098d99dd81e 195 * OPEN Drive type for INT output pin; 1 = open drain, 0 = push-pull.
aberk 0:b098d99dd81e 196 * LATCH_INT_EN Latch mode; 1 = latch until interrupt is cleared,
aberk 0:b098d99dd81e 197 * 0 = 50us pulse.
aberk 0:b098d99dd81e 198 * INT_ANYRD_2CLEAR Latch clear method; 1 = any register read,
aberk 0:b098d99dd81e 199 * 0 = status register read only.
aberk 0:b098d99dd81e 200 * ITG_RDY_EN Enable interrupt when device is ready,
aberk 0:b098d99dd81e 201 * (PLL ready after changing clock source).
aberk 0:b098d99dd81e 202 * RAW_RDY_EN Enable interrupt when data is available.
aberk 0:b098d99dd81e 203 * 0 Bits 1 and 3 of the INT_CFG register should be zero.
aberk 0:b098d99dd81e 204 *
aberk 0:b098d99dd81e 205 * @param config Configuration byte to write to INT_CFG register.
aberk 0:b098d99dd81e 206 */
aberk 0:b098d99dd81e 207 void setInterruptConfiguration(char config);
aberk 0:b098d99dd81e 208
aberk 0:b098d99dd81e 209 /**
aberk 0:b098d99dd81e 210 * Check the ITG_RDY bit of the INT_STATUS register.
aberk 0:b098d99dd81e 211 *
aberk 0:b098d99dd81e 212 * @return True if the ITG_RDY bit is set, corresponding to PLL ready,
aberk 0:b098d99dd81e 213 * false if the ITG_RDY bit is not set, corresponding to PLL not
aberk 0:b098d99dd81e 214 * ready.
aberk 0:b098d99dd81e 215 */
aberk 0:b098d99dd81e 216 bool isPllReady(void);
aberk 0:b098d99dd81e 217
aberk 0:b098d99dd81e 218 /**
aberk 0:b098d99dd81e 219 * Check the RAW_DATA_RDY bit of the INT_STATUS register.
aberk 0:b098d99dd81e 220 *
aberk 0:b098d99dd81e 221 * @return True if the RAW_DATA_RDY bit is set, corresponding to new data
aberk 0:b098d99dd81e 222 * in the sensor registers, false if the RAW_DATA_RDY bit is not
aberk 0:b098d99dd81e 223 * set, corresponding to no new data yet in the sensor registers.
aberk 0:b098d99dd81e 224 */
aberk 0:b098d99dd81e 225 bool isRawDataReady(void);
aberk 0:b098d99dd81e 226
aberk 0:b098d99dd81e 227 /**
aberk 0:b098d99dd81e 228 * Get the temperature of the device.
aberk 0:b098d99dd81e 229 *
aberk 0:b098d99dd81e 230 * @return The temperature in degrees celsius.
aberk 0:b098d99dd81e 231 */
aberk 0:b098d99dd81e 232 float getTemperature(void);
aberk 0:b098d99dd81e 233
aberk 0:b098d99dd81e 234 /**
aberk 0:b098d99dd81e 235 * Get the output for the x-axis gyroscope.
aberk 0:b098d99dd81e 236 *
aberk 0:b098d99dd81e 237 * Typical sensitivity is 14.375 LSB/(degrees/sec).
aberk 0:b098d99dd81e 238 *
aberk 0:b098d99dd81e 239 * @return The output on the x-axis in raw ADC counts.
aberk 0:b098d99dd81e 240 */
aberk 0:b098d99dd81e 241 int getGyroX(void);
aberk 0:b098d99dd81e 242
aberk 0:b098d99dd81e 243 /**
aberk 0:b098d99dd81e 244 * Get the output for the y-axis gyroscope.
aberk 0:b098d99dd81e 245 *
aberk 0:b098d99dd81e 246 * Typical sensitivity is 14.375 LSB/(degrees/sec).
aberk 0:b098d99dd81e 247 *
aberk 0:b098d99dd81e 248 * @return The output on the y-axis in raw ADC counts.
aberk 0:b098d99dd81e 249 */
aberk 0:b098d99dd81e 250 int getGyroY(void);
aberk 0:b098d99dd81e 251
aberk 0:b098d99dd81e 252 /**
aberk 0:b098d99dd81e 253 * Get the output on the z-axis gyroscope.
aberk 0:b098d99dd81e 254 *
aberk 0:b098d99dd81e 255 * Typical sensitivity is 14.375 LSB/(degrees/sec).
aberk 0:b098d99dd81e 256 *
aberk 0:b098d99dd81e 257 * @return The output on the z-axis in raw ADC counts.
aberk 0:b098d99dd81e 258 */
aberk 0:b098d99dd81e 259 int getGyroZ(void);
aberk 0:b098d99dd81e 260
aberk 0:b098d99dd81e 261 /**
aberk 0:b098d99dd81e 262 * Get the power management configuration.
aberk 0:b098d99dd81e 263 *
aberk 0:b098d99dd81e 264 * See the datasheet for register contents details.
aberk 0:b098d99dd81e 265 *
aberk 0:b098d99dd81e 266 * 7 6 5 4
aberk 0:b098d99dd81e 267 * +---------+-------+---------+---------+
aberk 0:b098d99dd81e 268 * | H_RESET | SLEEP | STBY_XG | STBY_YG |
aberk 0:b098d99dd81e 269 * +---------+-------+---------+---------+
aberk 0:b098d99dd81e 270 *
aberk 0:b098d99dd81e 271 * 3 2 1 0
aberk 0:b098d99dd81e 272 * +---------+----------+----------+----------+
aberk 0:b098d99dd81e 273 * | STBY_ZG | CLK_SEL2 | CLK_SEL1 | CLK_SEL0 |
aberk 0:b098d99dd81e 274 * +---------+----------+----------+----------+
aberk 0:b098d99dd81e 275 *
aberk 0:b098d99dd81e 276 * H_RESET Reset device and internal registers to the power-up-default settings.
aberk 0:b098d99dd81e 277 * SLEEP Enable low power sleep mode.
aberk 0:b098d99dd81e 278 * STBY_XG Put gyro X in standby mode (1=standby, 0=normal).
aberk 0:b098d99dd81e 279 * STBY_YG Put gyro Y in standby mode (1=standby, 0=normal).
aberk 0:b098d99dd81e 280 * STBY_ZG Put gyro Z in standby mode (1=standby, 0=normal).
aberk 0:b098d99dd81e 281 * CLK_SEL Select device clock source:
aberk 0:b098d99dd81e 282 *
aberk 0:b098d99dd81e 283 * CLK_SEL | Clock Source
aberk 0:b098d99dd81e 284 * --------+--------------
aberk 0:b098d99dd81e 285 * 0 Internal oscillator
aberk 0:b098d99dd81e 286 * 1 PLL with X Gyro reference
aberk 0:b098d99dd81e 287 * 2 PLL with Y Gyro reference
aberk 0:b098d99dd81e 288 * 3 PLL with Z Gyro reference
aberk 0:b098d99dd81e 289 * 4 PLL with external 32.768kHz reference
aberk 0:b098d99dd81e 290 * 5 PLL with external 19.2MHz reference
aberk 0:b098d99dd81e 291 * 6 Reserved
aberk 0:b098d99dd81e 292 * 7 Reserved
aberk 0:b098d99dd81e 293 *
aberk 0:b098d99dd81e 294 * @return The contents of the PWR_MGM register.
aberk 0:b098d99dd81e 295 */
aberk 0:b098d99dd81e 296 char getPowerManagement(void);
aberk 0:b098d99dd81e 297
aberk 0:b098d99dd81e 298 /**
aberk 0:b098d99dd81e 299 * Set power management configuration.
aberk 0:b098d99dd81e 300 *
aberk 0:b098d99dd81e 301 * See the datasheet for configuration byte details
aberk 0:b098d99dd81e 302 *
aberk 0:b098d99dd81e 303 * 7 6 5 4
aberk 0:b098d99dd81e 304 * +---------+-------+---------+---------+
aberk 0:b098d99dd81e 305 * | H_RESET | SLEEP | STBY_XG | STBY_YG |
aberk 0:b098d99dd81e 306 * +---------+-------+---------+---------+
aberk 0:b098d99dd81e 307 *
aberk 0:b098d99dd81e 308 * 3 2 1 0
aberk 0:b098d99dd81e 309 * +---------+----------+----------+----------+
aberk 0:b098d99dd81e 310 * | STBY_ZG | CLK_SEL2 | CLK_SEL1 | CLK_SEL0 |
aberk 0:b098d99dd81e 311 * +---------+----------+----------+----------+
aberk 0:b098d99dd81e 312 *
aberk 0:b098d99dd81e 313 * H_RESET Reset device and internal registers to the power-up-default settings.
aberk 0:b098d99dd81e 314 * SLEEP Enable low power sleep mode.
aberk 0:b098d99dd81e 315 * STBY_XG Put gyro X in standby mode (1=standby, 0=normal).
aberk 0:b098d99dd81e 316 * STBY_YG Put gyro Y in standby mode (1=standby, 0=normal).
aberk 0:b098d99dd81e 317 * STBY_ZG Put gyro Z in standby mode (1=standby, 0=normal).
aberk 0:b098d99dd81e 318 * CLK_SEL Select device clock source:
aberk 0:b098d99dd81e 319 *
aberk 0:b098d99dd81e 320 * CLK_SEL | Clock Source
aberk 0:b098d99dd81e 321 * --------+--------------
aberk 0:b098d99dd81e 322 * 0 Internal oscillator
aberk 0:b098d99dd81e 323 * 1 PLL with X Gyro reference
aberk 0:b098d99dd81e 324 * 2 PLL with Y Gyro reference
aberk 0:b098d99dd81e 325 * 3 PLL with Z Gyro reference
aberk 0:b098d99dd81e 326 * 4 PLL with external 32.768kHz reference
aberk 0:b098d99dd81e 327 * 5 PLL with external 19.2MHz reference
aberk 0:b098d99dd81e 328 * 6 Reserved
aberk 0:b098d99dd81e 329 * 7 Reserved
aberk 0:b098d99dd81e 330 *
aberk 0:b098d99dd81e 331 * @param config The configuration byte to write to the PWR_MGM register.
aberk 0:b098d99dd81e 332 */
aberk 0:b098d99dd81e 333 void setPowerManagement(char config);
aberk 0:b098d99dd81e 334
aberk 0:b098d99dd81e 335 private:
aberk 0:b098d99dd81e 336
sillevl 3:2dd53a8427e9 337 void initialize();
aberk 0:b098d99dd81e 338 I2C i2c_;
aberk 0:b098d99dd81e 339
aberk 0:b098d99dd81e 340 };
aberk 0:b098d99dd81e 341
aberk 0:b098d99dd81e 342 #endif /* ITG3200_H */