ITG-3200 triple axis, digital gyroscope library.

Dependents:   IMURover ITG3200_HelloWorld IMUfilter_RPYExample 12_TCPIP ... more

Embed: (wiki syntax)

« Back to documentation index

ITG3200 Class Reference

ITG3200 Class Reference

ITG-3200 triple axis digital gyroscope. More...

#include <ITG3200.h>

Public Member Functions

 ITG3200 (PinName sda, PinName scl)
 Constructor.
char getWhoAmI (void)
 Get the identity of the device.
void setWhoAmI (char address)
 Set the address of the device.
char getSampleRateDivider (void)
 Get the sample rate divider.
void setSampleRateDivider (char divider)
 Set the sample rate divider.
int getInternalSampleRate (void)
 Get the internal sample rate.
void setLpBandwidth (char bandwidth)
 Set the low pass filter bandwidth.
char getInterruptConfiguration (void)
 Get the interrupt configuration.
void setInterruptConfiguration (char config)
 Set the interrupt configuration.
bool isPllReady (void)
 Check the ITG_RDY bit of the INT_STATUS register.
bool isRawDataReady (void)
 Check the RAW_DATA_RDY bit of the INT_STATUS register.
float getTemperature (void)
 Get the temperature of the device.
int getGyroX (void)
 Get the output for the x-axis gyroscope.
int getGyroY (void)
 Get the output for the y-axis gyroscope.
int getGyroZ (void)
 Get the output on the z-axis gyroscope.
char getPowerManagement (void)
 Get the power management configuration.
void setPowerManagement (char config)
 Set power management configuration.

Detailed Description

ITG-3200 triple axis digital gyroscope.

Definition at line 80 of file ITG3200.h.


Constructor & Destructor Documentation

ITG3200 ( PinName  sda,
PinName  scl 
)

Constructor.

Includes.

Sets FS_SEL to 0x03 for proper opertaion.

Parameters:
sda- mbed pin to use for the SDA I2C line.
scl- mbed pin to use for the SCL I2C line.
Author:
Aaron Berk

LICENSE

Copyright (c) 2010 ARM Limited

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

DESCRIPTION

ITG-3200 triple axis, digital interface, gyroscope.

Datasheet:

http://invensense.com/mems/gyro/documents/PS-ITG-3200-00-01.4.pdf

Definition at line 40 of file ITG3200.cpp.


Member Function Documentation

int getGyroX ( void   )

Get the output for the x-axis gyroscope.

Typical sensitivity is 14.375 LSB/(degrees/sec).

Returns:
The output on the x-axis in raw ADC counts.

Definition at line 214 of file ITG3200.cpp.

int getGyroY ( void   )

Get the output for the y-axis gyroscope.

Typical sensitivity is 14.375 LSB/(degrees/sec).

Returns:
The output on the y-axis in raw ADC counts.

Definition at line 229 of file ITG3200.cpp.

int getGyroZ ( void   )

Get the output on the z-axis gyroscope.

Typical sensitivity is 14.375 LSB/(degrees/sec).

Returns:
The output on the z-axis in raw ADC counts.

Definition at line 244 of file ITG3200.cpp.

int getInternalSampleRate ( void   )

Get the internal sample rate.

Returns:
The internal sample rate in kHz - either 1 or 8.

Definition at line 103 of file ITG3200.cpp.

char getInterruptConfiguration ( void   )

Get the interrupt configuration.

See datasheet for register contents details.

7 6 5 4 +------+------+--------------+------------------+ | ACTL | OPEN | LATCH_INT_EN | INT_ANYRD_2CLEAR | +------+------+--------------+------------------+

3 2 1 0 +---+------------+------------+---+ | 0 | ITG_RDY_EN | RAW_RDY_EN | 0 | +---+------------+------------+---+

ACTL Logic level for INT output pin; 1 = active low, 0 = active high. OPEN Drive type for INT output pin; 1 = open drain, 0 = push-pull. LATCH_INT_EN Latch mode; 1 = latch until interrupt is cleared, 0 = 50us pulse. INT_ANYRD_2CLEAR Latch clear method; 1 = any register read, 0 = status register read only. ITG_RDY_EN Enable interrupt when device is ready, (PLL ready after changing clock source). RAW_RDY_EN Enable interrupt when data is available. 0 Bits 1 and 3 of the INT_CFG register should be zero.

Returns:
the contents of the INT_CFG register.

Definition at line 138 of file ITG3200.cpp.

char getPowerManagement ( void   )

Get the power management configuration.

See the datasheet for register contents details.

7 6 5 4 +---------+-------+---------+---------+ | H_RESET | SLEEP | STBY_XG | STBY_YG | +---------+-------+---------+---------+

3 2 1 0 +---------+----------+----------+----------+ | STBY_ZG | CLK_SEL2 | CLK_SEL1 | CLK_SEL0 | +---------+----------+----------+----------+

H_RESET Reset device and internal registers to the power-up-default settings. SLEEP Enable low power sleep mode. STBY_XG Put gyro X in standby mode (1=standby, 0=normal). STBY_YG Put gyro Y in standby mode (1=standby, 0=normal). STBY_ZG Put gyro Z in standby mode (1=standby, 0=normal). CLK_SEL Select device clock source:

CLK_SEL | Clock Source --------+-------------- 0 Internal oscillator 1 PLL with X Gyro reference 2 PLL with Y Gyro reference 3 PLL with Z Gyro reference 4 PLL with external 32.768kHz reference 5 PLL with external 19.2MHz reference 6 Reserved 7 Reserved

Returns:
The contents of the PWR_MGM register.

Definition at line 259 of file ITG3200.cpp.

char getSampleRateDivider ( void   )

Get the sample rate divider.

Returns:
The sample rate divider as a number from 0-255.

Definition at line 80 of file ITG3200.cpp.

float getTemperature ( void   )

Get the temperature of the device.

Returns:
The temperature in degrees celsius.

Definition at line 199 of file ITG3200.cpp.

char getWhoAmI ( void   )

Get the identity of the device.

Returns:
The contents of the Who Am I register which contains the I2C address of the device.

Definition at line 56 of file ITG3200.cpp.

bool isPllReady ( void   )

Check the ITG_RDY bit of the INT_STATUS register.

Returns:
True if the ITG_RDY bit is set, corresponding to PLL ready, false if the ITG_RDY bit is not set, corresponding to PLL not ready.

Definition at line 161 of file ITG3200.cpp.

bool isRawDataReady ( void   )

Check the RAW_DATA_RDY bit of the INT_STATUS register.

Returns:
True if the RAW_DATA_RDY bit is set, corresponding to new data in the sensor registers, false if the RAW_DATA_RDY bit is not set, corresponding to no new data yet in the sensor registers.

Definition at line 180 of file ITG3200.cpp.

void setInterruptConfiguration ( char  config )

Set the interrupt configuration.

See datasheet for configuration byte details.

7 6 5 4 +------+------+--------------+------------------+ | ACTL | OPEN | LATCH_INT_EN | INT_ANYRD_2CLEAR | +------+------+--------------+------------------+

3 2 1 0 +---+------------+------------+---+ | 0 | ITG_RDY_EN | RAW_RDY_EN | 0 | +---+------------+------------+---+

ACTL Logic level for INT output pin; 1 = active low, 0 = active high. OPEN Drive type for INT output pin; 1 = open drain, 0 = push-pull. LATCH_INT_EN Latch mode; 1 = latch until interrupt is cleared, 0 = 50us pulse. INT_ANYRD_2CLEAR Latch clear method; 1 = any register read, 0 = status register read only. ITG_RDY_EN Enable interrupt when device is ready, (PLL ready after changing clock source). RAW_RDY_EN Enable interrupt when data is available. 0 Bits 1 and 3 of the INT_CFG register should be zero.

Parameters:
configConfiguration byte to write to INT_CFG register.

Definition at line 151 of file ITG3200.cpp.

void setLpBandwidth ( char  bandwidth )

Set the low pass filter bandwidth.

Also used to set the internal sample rate. Pass the define bandwidth codes as a parameter.

256Hz -> 8kHz internal sample rate. Everything else -> 1kHz internal rate.

Parameters:
bandwidthLow pass filter bandwidth code

Definition at line 127 of file ITG3200.cpp.

void setPowerManagement ( char  config )

Set power management configuration.

See the datasheet for configuration byte details

7 6 5 4 +---------+-------+---------+---------+ | H_RESET | SLEEP | STBY_XG | STBY_YG | +---------+-------+---------+---------+

3 2 1 0 +---------+----------+----------+----------+ | STBY_ZG | CLK_SEL2 | CLK_SEL1 | CLK_SEL0 | +---------+----------+----------+----------+

H_RESET Reset device and internal registers to the power-up-default settings. SLEEP Enable low power sleep mode. STBY_XG Put gyro X in standby mode (1=standby, 0=normal). STBY_YG Put gyro Y in standby mode (1=standby, 0=normal). STBY_ZG Put gyro Z in standby mode (1=standby, 0=normal). CLK_SEL Select device clock source:

CLK_SEL | Clock Source --------+-------------- 0 Internal oscillator 1 PLL with X Gyro reference 2 PLL with Y Gyro reference 3 PLL with Z Gyro reference 4 PLL with external 32.768kHz reference 5 PLL with external 19.2MHz reference 6 Reserved 7 Reserved

Parameters:
configThe configuration byte to write to the PWR_MGM register.

Definition at line 272 of file ITG3200.cpp.

void setSampleRateDivider ( char  divider )

Set the sample rate divider.

Fsample = Finternal / (divider + 1), where Finternal = 1kHz or 8kHz, as decidied by the DLPF_FS register.

Parameters:
Thesample rate divider as a number from 0-255.

Definition at line 93 of file ITG3200.cpp.

void setWhoAmI ( char  address )

Set the address of the device.

Parameters:
addressThe I2C slave address to write to the Who Am I register on the device.

Definition at line 70 of file ITG3200.cpp.