MMA8451Q library for control this accelerometer with interrupt implemet
Fork of MMA8451Q by
Revision 5:aefb5974f42a, committed 2018-01-18
- Comitter:
- vinajarr
- Date:
- Thu Jan 18 07:52:57 2018 +0000
- Parent:
- 4:c4d879a39775
- Commit message:
- implement interrupt
Changed in this revision
MMA8451Q.cpp | Show annotated file Show diff for this revision Revisions of this file |
MMA8451Q.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r c4d879a39775 -r aefb5974f42a MMA8451Q.cpp --- a/MMA8451Q.cpp Fri Oct 12 11:35:07 2012 +0000 +++ b/MMA8451Q.cpp Thu Jan 18 07:52:57 2018 +0000 @@ -26,10 +26,27 @@ #define UINT14_MAX 16383 -MMA8451Q::MMA8451Q(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) { + + +MMA8451Q::MMA8451Q(I2C * puntero , int addr) : m_i2c(puntero), m_addr(addr) { // activate the peripheral - uint8_t data[2] = {REG_CTRL_REG_1, 0x01}; + uint8_t data[2] = {REG_CTRL_REG_1, 0x00}; //Permitir escribir en los registros de control writeRegs(data, 2); + data[0]=REG_CTRL_REG_1; + data[1]=0x0C; + writeRegs(data, 2);// definir velocidad de 400Hz Low Noise + data[0]=0x2b; + data[1]=0x09; + writeRegs(data, 2);//Moodo de alta resolucion + data[0]=0x2D; + data[1]=0x01; + writeRegs(data, 2);//Activar interrupcion por data-ready + data[0]=0x2E; + data[1]=0x01; + writeRegs(data, 2);//Rutear interrupcion al pin INT1 + data[0]=REG_CTRL_REG_1; + data[1]=0x0D; + writeRegs(data, 2);//Activar el modulo } MMA8451Q::~MMA8451Q() { } @@ -37,10 +54,12 @@ uint8_t MMA8451Q::getWhoAmI() { uint8_t who_am_i = 0; readRegs(REG_WHO_AM_I, &who_am_i, 1); + return who_am_i; } float MMA8451Q::getAccX() { + return (float(getAccAxis(REG_OUT_X_MSB))/4096.0); } @@ -72,10 +91,10 @@ void MMA8451Q::readRegs(int addr, uint8_t * data, int len) { char t[1] = {addr}; - m_i2c.write(m_addr, t, 1, true); - m_i2c.read(m_addr, (char *)data, len); + m_i2c->write(m_addr, t, 1, true); + m_i2c->read(m_addr, (char *)data, len); } void MMA8451Q::writeRegs(uint8_t * data, int len) { - m_i2c.write(m_addr, (char *)data, len); + m_i2c->write(m_addr, (char *)data, len); }
diff -r c4d879a39775 -r aefb5974f42a MMA8451Q.h --- a/MMA8451Q.h Fri Oct 12 11:35:07 2012 +0000 +++ b/MMA8451Q.h Thu Jan 18 07:52:57 2018 +0000 @@ -56,7 +56,7 @@ * @param sdl SCL pin * @param addr addr of the I2C peripheral */ - MMA8451Q(PinName sda, PinName scl, int addr); + MMA8451Q(I2C * puntero, int addr); /** * MMA8451Q destructor @@ -97,11 +97,13 @@ * @param res array where acceleration data will be stored */ void getAccAllAxis(float * res); - + + + void readRegs(int addr, uint8_t * data, int len); private: - I2C m_i2c; + I2C *m_i2c; int m_addr; - void readRegs(int addr, uint8_t * data, int len); + void writeRegs(uint8_t * data, int len); int16_t getAccAxis(uint8_t addr);