Slight Mod

Dependencies:   mbed-dsp mbed

Fork of Hat_Board_v5 by John Scharf

Files at this revision

API Documentation at this revision

Comitter:
drnow
Date:
Thu Mar 20 09:03:12 2014 +0000
Parent:
0:34bad5aca893
Child:
2:3a8cd127b72a
Commit message:
X,Y,Z work. Now needs clean up.

Changed in this revision

SI_LIS.cpp Show annotated file Show diff for this revision Revisions of this file
SI_LIS.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/SI_LIS.cpp	Thu Mar 20 02:50:57 2014 +0000
+++ b/SI_LIS.cpp	Thu Mar 20 09:03:12 2014 +0000
@@ -7,7 +7,7 @@
 unsigned int IR;
 extern char rx_data[4];
 extern char accel_2_data[2];
-extern char accel_data;
+extern char accel_data[6];
 
 void restart()
 {
@@ -104,7 +104,6 @@
     return 0;
 }
 
-
 char read_reg (/*unsigned*/ char address, int num_data) // Read a register
 {
     char tx[1];
@@ -119,7 +118,6 @@
 void write_reg(char address, char num_data) // Write a resigter
 {
     char tx[2];
-
     tx[0] = address;
     tx[1] = num_data;
     i2c.write((IR_ADDRESS << 1) & 0xFE, tx, 2);
@@ -143,7 +141,7 @@
 
     i2c.write((LIS_Addr << 1) & 0xFE , &reg, 1 );  // Write register number
     i2c.read ((LIS_Addr << 1) | 0x01, &data, 1 );  // Receive Byte from Slave
-    accel_data = data;
+    accel_data[0] = data;
 }
 
 void Get_Accel_Register_2 (char Reg_Num) // Read 2 registers
@@ -159,6 +157,14 @@
     i2c.read((LIS_Addr << 1) | 0x01, accel_2_data, 2);
 }
 
+void Get_Accel_Reg_6 (char Reg_Num) // Read 6 registers
+{
+    char  reg;
+    reg = Reg_Num | 0x80; // set bit 7 high
+    i2c.write((LIS_Addr << 1) & 0xFE, &reg, 1);
+    i2c.read((LIS_Addr << 1) | 0x01, accel_data, 6);
+}
+
 void i2c_start()  // also set by photodiode setup/reset
 {
     i2c.frequency(400000);
--- a/SI_LIS.h	Thu Mar 20 02:50:57 2014 +0000
+++ b/SI_LIS.h	Thu Mar 20 09:03:12 2014 +0000
@@ -158,6 +158,8 @@
 
 void Get_Accel_Register_2 (char Reg_Num); // Read 2 registers
 
+void Get_Accel_Reg_6 (char Reg_Num); // Read 6 registers
+
 void i2c_start();
 
 #endif
\ No newline at end of file
--- a/main.cpp	Thu Mar 20 02:50:57 2014 +0000
+++ b/main.cpp	Thu Mar 20 09:03:12 2014 +0000
@@ -17,25 +17,14 @@
 int         reading_IR,reading_660,LSB,MSB;
 char        rx_data[4];
 char        accel_2_data[2];
+char        accel_data[6];
 char        temp_val;
-char        accel_data;   // for getting 8-bit value from accelerometer
 short int   temp_dataX;     // short int: 16 bits.  This allows easy negative results
 short int   temp_dataY;     // short int: 16 bits.  This allows easy negative results
 short int   temp_dataZ;     // short int: 16 bits.  This allows easy negative results
 
 /* From AccelWaveForms
 In Loop:
-            Get_Accel_Register(0x2A, LIS_Addr);  //Y Data Low
-            LSB = Accel_Data;
-            Get_Accel_Register(0x2B, LIS_Addr);  //Y Data High
-            MSB = Accel_Data;
-            temp_dataY = (MSB * 256) + LSB;
-
-            Get_Accel_Register(0x2C, LIS_Addr);  //Z Data Low
-            LSB = Accel_Data;
-            Get_Accel_Register(0x2D, LIS_Addr);  //Z Data High
-            MSB = Accel_Data;
-            temp_dataZ = (MSB * 256) + LSB;
 */
 
 int main()
@@ -63,31 +52,27 @@
     pc.printf ("Hello\n");
 
     Get_Accel_Register (0x0F);
-    pc.printf ("I am: %x",accel_data);  //in hex
+    pc.printf ("I am: %x",accel_data[0]);  //in hex
 
     while (1) {
-        Get_Accel_Register(0x28);  //X Data Low
-        LSB = accel_data;
-        Get_Accel_Register(0x29);  //X Data High
-        MSB = accel_data;
-        temp_dataX = (MSB * 256) + LSB;
-        pc.printf ("%d ",temp_dataX);  
-        
-        Get_Accel_Register_2 (0x28);
-        LSB = accel_2_data[0];
-        MSB = accel_2_data[1];
+
+        Get_Accel_Reg_6 (0x28);
+        LSB = accel_data[0];
+        MSB = accel_data[1];
         temp_dataX = (MSB * 256) + LSB;
-        pc.printf ("%d\n",temp_dataX);  
+        pc.printf ("%d, ",temp_dataX);
+
+        LSB = accel_data[2];
+        MSB = accel_data[3];
+        temp_dataY = (MSB * 256) + LSB;
+        pc.printf ("%d, ",temp_dataY);
 
-/*
-void Get_Accel_Register_2 (char Reg_Num) // Read 2 registers
-{
-    char  reg;
-    reg = Reg_Num;
-    i2c.write((LIS_Addr << 1) & 0xFE, &reg, 1);
-    i2c.read((LIS_Addr << 1) | 0x01, accel_2_data, 2);
-}
-*/        
+        LSB = accel_data[4];
+        MSB = accel_data[5];
+        temp_dataZ = (MSB * 256) + LSB;
+        pc.printf ("%d\n",temp_dataZ);
+
+
         wait(0.02);
     }
     /*