MMA8451Q library for control this accelerometer with interrupt implemet

Fork of MMA8451Q by Emilio Monti

Files at this revision

API Documentation at this revision

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
--- 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);
 }
--- 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);