Merge branch 'master' of gitlab:wintermute/hackover2013-badge-firmware
[hackover2013-badge-firmware.git] / drivers / sensors / adxl345 / adxl345.h
1 /**************************************************************************/
2 /*!
3 @file adxl345.h
4 @author K. Townsend (microBuilder.eu)
5
6 @section LICENSE
7
8 Software License Agreement (BSD License)
9
10 Copyright (c) 2012, K. Townsend
11 All rights reserved.
12
13 Redistribution and use in source and binary forms, with or without
14 modification, are permitted provided that the following conditions are met:
15 1. Redistributions of source code must retain the above copyright
16 notice, this list of conditions and the following disclaimer.
17 2. Redistributions in binary form must reproduce the above copyright
18 notice, this list of conditions and the following disclaimer in the
19 documentation and/or other materials provided with the distribution.
20 3. Neither the name of the copyright holders nor the
21 names of its contributors may be used to endorse or promote products
22 derived from this software without specific prior written permission.
23
24 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
25 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
28 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 */
35 /**************************************************************************/
36
37 #ifndef _ADXL345_H_
38 #define _ADXL345_H_
39
40 #include "projectconfig.h"
41 #include "core/i2c/i2c.h"
42
43 /*=========================================================================
44 I2C ADDRESS/BITS
45 -----------------------------------------------------------------------*/
46 #define ADXL345_ADDRESS (0xA6) // Assumes ALT address pin low ... use 0x3A with ALT high
47 #define ADXL345_READBIT (0x01)
48 /*=========================================================================*/
49
50 /*=========================================================================
51 REGISTERS
52 -----------------------------------------------------------------------*/
53 #define ADXL345_REG_DEVID (0x00) // Device ID
54 #define ADXL345_REG_THRESH_TAP (0x1D) // Tap threshold
55 #define ADXL345_REG_OFSX (0x1E) // X-axis offset
56 #define ADXL345_REG_OFSY (0x1F) // Y-axis offset
57 #define ADXL345_REG_OFSZ (0x20) // Z-axis offset
58 #define ADXL345_REG_DUR (0x21) // Tap duration
59 #define ADXL345_REG_LATENT (0x22) // Tap latency
60 #define ADXL345_REG_WINDOW (0x23) // Tap window
61 #define ADXL345_REG_THRESH_ACT (0x24) // Activity threshold
62 #define ADXL345_REG_THRESH_INACT (0x25) // Inactivity threshold
63 #define ADXL345_REG_TIME_INACT (0x26) // Inactivity time
64 #define ADXL345_REG_ACT_INACT_CTL (0x27) // Axis enable control for activity and inactivity detection
65 #define ADXL345_REG_THRESH_FF (0x28) // Free-fall threshold
66 #define ADXL345_REG_TIME_FF (0x29) // Free-fall time
67 #define ADXL345_REG_TAP_AXES (0x2A) // Axis control for single/double tap
68 #define ADXL345_REG_ACT_TAP_STATUS (0x2B) // Source for single/double tap
69 #define ADXL345_REG_BW_RATE (0x2C) // Data rate and power mode control
70 #define ADXL345_REG_POWER_CTL (0x2D) // Power-saving features control
71 #define ADXL345_REG_INT_ENABLE (0x2E) // Interrupt enable control
72 #define ADXL345_REG_INT_MAP (0x2F) // Interrupt mapping control
73 #define ADXL345_REG_INT_SOURCE (0x30) // Source of interrupts
74 #define ADXL345_REG_DATA_FORMAT (0x31) // Data format control
75 #define ADXL345_REG_DATAX0 (0x32) // X-axis data 0
76 #define ADXL345_REG_DATAX1 (0x33) // X-axis data 1
77 #define ADXL345_REG_DATAY0 (0x34) // Y-axis data 0
78 #define ADXL345_REG_DATAY1 (0x35) // Y-axis data 1
79 #define ADXL345_REG_DATAZ0 (0x36) // Z-axis data 0
80 #define ADXL345_REG_DATAZ1 (0x37) // Z-axis data 1
81 #define ADXL345_REG_FIFO_CTL (0x38) // FIFO control
82 #define ADXL345_REG_FIFO_STATUS (0x39) // FIFO status
83 /*=========================================================================*/
84
85 typedef enum
86 {
87 ADXL345_ERROR_OK = 0, // Everything executed normally
88 ADXL345_ERROR_I2CINIT, // Unable to initialise I2C
89 ADXL345_ERROR_I2CBUSY, // I2C already in use
90 ADXL345_ERROR_NOCONNECTION, // Unable to read device ID during init
91 ADXL345_ERROR_LAST
92 }
93 adxl345Error_t;
94
95 adxl345Error_t adxl345Init(void);
96 adxl345Error_t adxl345GetDeviceID(uint8_t *id);
97 adxl345Error_t adxl345GetXYZ(int16_t *x, int16_t *y, int16_t *z);
98
99 #endif
100
101
This page took 0.061386 seconds and 5 git commands to generate.