Library for MMA7660FC Accelerometer device

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

Revision:
6:10aa804dee97
Parent:
5:d2f90c0be13f
Child:
7:74eb2a4803ba
diff -r d2f90c0be13f -r 10aa804dee97 MMA7660FC.cpp
--- 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);
                   
 }