My version of the library for this accelerometer. It works on 800Hz data rate.

Dependents:   FRDM_DEMO_CODE

Fork of MMA8451Q by Antonio Quevedo

Committer:
B50132
Date:
Tue Aug 19 15:05:55 2014 +0000
Revision:
1:204db61f9c8f
Parent:
0:7c9ab58f6af3
modified contents with another library doing the same thing.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
quevedo 0:7c9ab58f6af3 1 /* Copyright (c) 2010-2011 mbed.org, MIT License
quevedo 0:7c9ab58f6af3 2 *
quevedo 0:7c9ab58f6af3 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
quevedo 0:7c9ab58f6af3 4 * and associated documentation files (the "Software"), to deal in the Software without
quevedo 0:7c9ab58f6af3 5 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
quevedo 0:7c9ab58f6af3 6 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
quevedo 0:7c9ab58f6af3 7 * Software is furnished to do so, subject to the following conditions:
quevedo 0:7c9ab58f6af3 8 *
quevedo 0:7c9ab58f6af3 9 * The above copyright notice and this permission notice shall be included in all copies or
quevedo 0:7c9ab58f6af3 10 * substantial portions of the Software.
quevedo 0:7c9ab58f6af3 11 *
quevedo 0:7c9ab58f6af3 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
quevedo 0:7c9ab58f6af3 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
quevedo 0:7c9ab58f6af3 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
quevedo 0:7c9ab58f6af3 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
quevedo 0:7c9ab58f6af3 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
quevedo 0:7c9ab58f6af3 17 */
quevedo 0:7c9ab58f6af3 18
quevedo 0:7c9ab58f6af3 19 #ifndef MMA8451Q_H
quevedo 0:7c9ab58f6af3 20 #define MMA8451Q_H
quevedo 0:7c9ab58f6af3 21
quevedo 0:7c9ab58f6af3 22 #include "mbed.h"
quevedo 0:7c9ab58f6af3 23
quevedo 0:7c9ab58f6af3 24 /**
B50132 1:204db61f9c8f 25 * MMA8451Q accelerometer example
quevedo 0:7c9ab58f6af3 26 *
quevedo 0:7c9ab58f6af3 27 * @code
quevedo 0:7c9ab58f6af3 28 * #include "mbed.h"
quevedo 0:7c9ab58f6af3 29 * #include "MMA8451Q.h"
quevedo 0:7c9ab58f6af3 30 *
B50132 1:204db61f9c8f 31 * #define MMA8451_I2C_ADDRESS (0x1d<<1)
B50132 1:204db61f9c8f 32 *
quevedo 0:7c9ab58f6af3 33 * int main(void) {
quevedo 0:7c9ab58f6af3 34 *
B50132 1:204db61f9c8f 35 * MMA8451Q acc(P_E25, P_E24, MMA8451_I2C_ADDRESS);
quevedo 0:7c9ab58f6af3 36 * PwmOut rled(LED_RED);
quevedo 0:7c9ab58f6af3 37 * PwmOut gled(LED_GREEN);
quevedo 0:7c9ab58f6af3 38 * PwmOut bled(LED_BLUE);
B50132 1:204db61f9c8f 39 *
B50132 1:204db61f9c8f 40 * while (true) {
B50132 1:204db61f9c8f 41 * rled = 1.0 - abs(acc.getAccX());
B50132 1:204db61f9c8f 42 * gled = 1.0 - abs(acc.getAccY());
B50132 1:204db61f9c8f 43 * bled = 1.0 - abs(acc.getAccZ());
B50132 1:204db61f9c8f 44 * wait(0.1);
quevedo 0:7c9ab58f6af3 45 * }
quevedo 0:7c9ab58f6af3 46 * }
quevedo 0:7c9ab58f6af3 47 * @endcode
quevedo 0:7c9ab58f6af3 48 */
quevedo 0:7c9ab58f6af3 49 class MMA8451Q
quevedo 0:7c9ab58f6af3 50 {
quevedo 0:7c9ab58f6af3 51 public:
quevedo 0:7c9ab58f6af3 52 /**
quevedo 0:7c9ab58f6af3 53 * MMA8451Q constructor
quevedo 0:7c9ab58f6af3 54 *
quevedo 0:7c9ab58f6af3 55 * @param sda SDA pin
quevedo 0:7c9ab58f6af3 56 * @param sdl SCL pin
B50132 1:204db61f9c8f 57 * @param addr addr of the I2C peripheral
quevedo 0:7c9ab58f6af3 58 */
B50132 1:204db61f9c8f 59 MMA8451Q(PinName sda, PinName scl, int addr);
quevedo 0:7c9ab58f6af3 60
quevedo 0:7c9ab58f6af3 61 /**
quevedo 0:7c9ab58f6af3 62 * MMA8451Q destructor
quevedo 0:7c9ab58f6af3 63 */
quevedo 0:7c9ab58f6af3 64 ~MMA8451Q();
quevedo 0:7c9ab58f6af3 65
quevedo 0:7c9ab58f6af3 66 /**
B50132 1:204db61f9c8f 67 * Get the value of the WHO_AM_I register
B50132 1:204db61f9c8f 68 *
B50132 1:204db61f9c8f 69 * @returns WHO_AM_I value
B50132 1:204db61f9c8f 70 */
B50132 1:204db61f9c8f 71 uint8_t getWhoAmI();
B50132 1:204db61f9c8f 72
B50132 1:204db61f9c8f 73 /**
B50132 1:204db61f9c8f 74 * Get X axis acceleration
B50132 1:204db61f9c8f 75 *
B50132 1:204db61f9c8f 76 * @returns X axis acceleration
B50132 1:204db61f9c8f 77 */
B50132 1:204db61f9c8f 78 float getAccX();
B50132 1:204db61f9c8f 79
B50132 1:204db61f9c8f 80 /**
B50132 1:204db61f9c8f 81 * Get Y axis acceleration
B50132 1:204db61f9c8f 82 *
B50132 1:204db61f9c8f 83 * @returns Y axis acceleration
B50132 1:204db61f9c8f 84 */
B50132 1:204db61f9c8f 85 float getAccY();
B50132 1:204db61f9c8f 86
B50132 1:204db61f9c8f 87 /**
B50132 1:204db61f9c8f 88 * Get Z axis acceleration
B50132 1:204db61f9c8f 89 *
B50132 1:204db61f9c8f 90 * @returns Z axis acceleration
B50132 1:204db61f9c8f 91 */
B50132 1:204db61f9c8f 92 float getAccZ();
B50132 1:204db61f9c8f 93
B50132 1:204db61f9c8f 94 /**
B50132 1:204db61f9c8f 95 * Get XYZ axis acceleration
quevedo 0:7c9ab58f6af3 96 *
quevedo 0:7c9ab58f6af3 97 * @param res array where acceleration data will be stored
quevedo 0:7c9ab58f6af3 98 */
B50132 1:204db61f9c8f 99 void getAccAllAxis(float * res);
quevedo 0:7c9ab58f6af3 100
quevedo 0:7c9ab58f6af3 101 private:
quevedo 0:7c9ab58f6af3 102 I2C m_i2c;
B50132 1:204db61f9c8f 103 int m_addr;
quevedo 0:7c9ab58f6af3 104 void readRegs(int addr, uint8_t * data, int len);
quevedo 0:7c9ab58f6af3 105 void writeRegs(uint8_t * data, int len);
B50132 1:204db61f9c8f 106 int16_t getAccAxis(uint8_t addr);
quevedo 0:7c9ab58f6af3 107
quevedo 0:7c9ab58f6af3 108 };
quevedo 0:7c9ab58f6af3 109
B50132 1:204db61f9c8f 110 #endif