Library for MMA7660FC Accelerometer device

Dependents:   TestCode_MMA7660FC 3D_Accelerometer_Tester RTOS-aap-board-modules embed_Grove_3-Axis_Digital_Accelerometer ... more

Files at this revision

API Documentation at this revision

Comitter:
edodm85
Date:
Sun Sep 23 10:58:35 2012 +0000
Parent:
5:d2f90c0be13f
Child:
7:74eb2a4803ba
Commit message:
Add support for other Slave Address

Changed in this revision

MMA7660FC.cpp Show annotated file Show diff for this revision Revisions of this file
MMA7660FC.h Show annotated file Show diff for this revision Revisions of this file
--- a/MMA7660FC.cpp	Thu Jul 05 17:47:12 2012 +0000
+++ b/MMA7660FC.cpp	Sun Sep 23 10:58:35 2012 +0000
@@ -41,7 +41,8 @@
         // Connect module at I2C address addr using I2C port pins sda and scl
 MMA7660FC::MMA7660FC(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr)
 {
-
+    SPI_W_Address = m_addr;                 // Write address
+    SPI_R_Address = SPI_W_Address | 1;      // Read address           
 }
 
 
@@ -70,8 +71,8 @@
     const char Addr_X = OUT_X;
     char buf[3] = {0,0,0};
     
-    m_i2c.write(m_addr, &Addr_X, 1);         // Pointer to the OUT_X register
-    m_i2c.read(m_addr, buf, 3);              // Read register content into buffer with 6bit
+    m_i2c.write(SPI_W_Address, &Addr_X, 1);         // Pointer to the OUT_X register
+    m_i2c.read(SPI_W_Address, buf, 3);              // Read register content into buffer with 6bit
     
     // returns the x, y, z coordinates transformed into full degrees
     *x = TILT_XY[(int)buf[0]];
@@ -86,10 +87,10 @@
 {
 
     m_i2c.start();                  // Start
-    m_i2c.write(0x98);              // A write to device 0x98
+    m_i2c.write(SPI_W_Address);     // A write to device
     m_i2c.write(OUT_X);             // Register to read
     m_i2c.start();                  
-    m_i2c.write(0x99);              // Read from device 0x99
+    m_i2c.write(SPI_R_Address);     // Read from device
     char x = m_i2c.read(0);         // Read the data
     m_i2c.stop();
     
@@ -103,10 +104,10 @@
 {
 
     m_i2c.start();                  // Start
-    m_i2c.write(0x98);              // A write to device 0x98
+    m_i2c.write(SPI_W_Address);     // A write to device
     m_i2c.write(OUT_Y);             // Register to read
     m_i2c.start();                  
-    m_i2c.write(0x99);              // Read from device 0x99
+    m_i2c.write(SPI_R_Address);     // Read from device
     char y = m_i2c.read(0);         // Read the data
     m_i2c.stop();
     
@@ -120,10 +121,10 @@
 {
 
     m_i2c.start();                  // Start
-    m_i2c.write(0x98);              // A write to device 0x98
+    m_i2c.write(SPI_W_Address);     // A write to device
     m_i2c.write(OUT_Z);             // Register to read
     m_i2c.start();                  
-    m_i2c.write(0x99);              // Read from device 0x99
+    m_i2c.write(SPI_R_Address);     // Read from device
     char z = m_i2c.read(0);         // Read the data
     m_i2c.stop();
     
@@ -137,10 +138,10 @@
 {
     
     m_i2c.start();                  // Start
-    m_i2c.write(0x98);              // A write to device 0x98
+    m_i2c.write(SPI_W_Address);     // A write to device
     m_i2c.write(addr);              // Register to read
     m_i2c.start();                  
-    m_i2c.write(0x99);              // Read from device 0x99
+    m_i2c.write(SPI_R_Address);     // Read from device
     char c = m_i2c.read(0);         // Read the data
     m_i2c.stop();                   
  
@@ -156,15 +157,15 @@
     char cmd[2] = {0, 0};
     
     cmd[0] = MODE_STATUS;
-    cmd[1] = 0x00;                      // Standby Mode on
-    m_i2c.write(m_addr, cmd, 2);
+    cmd[1] = 0x00;                          // Standby Mode on
+    m_i2c.write(SPI_W_Address, cmd, 2);
   
     cmd[0] = addr;
-    cmd[1] = data;                      // New value of the register
-    m_i2c.write(m_addr, cmd, 2); 
+    cmd[1] = data;                          // New value of the register
+    m_i2c.write(SPI_W_Address, cmd, 2); 
       
     cmd[0] = MODE_STATUS;
-    cmd[1] = 0x01;                      // Active Mode on
-    m_i2c.write(m_addr, cmd, 2);
+    cmd[1] = 0x01;                          // Active Mode on
+    m_i2c.write(SPI_W_Address, cmd, 2);
                   
 }
--- a/MMA7660FC.h	Thu Jul 05 17:47:12 2012 +0000
+++ b/MMA7660FC.h	Sun Sep 23 10:58:35 2012 +0000
@@ -118,6 +118,8 @@
     private:
       I2C m_i2c;
       int m_addr;   
+      char SPI_R_Address;
+      char SPI_W_Address; 
 };
 
 #endif 
\ No newline at end of file