MMA8451Q library for control this accelerometer with interrupt implemet

Fork of MMA8451Q by Emilio Monti

Revision:
5:aefb5974f42a
Parent:
3:db7126dbd63f
--- 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);
 }