SCA3000 triple axis digital interface accelerometer

Revision:
1:f5f2e79304fb
Parent:
0:fe041345c169
--- a/SCA3000.cpp	Sun May 29 14:13:20 2011 +0000
+++ b/SCA3000.cpp	Thu Jun 09 14:29:16 2011 +0000
@@ -73,6 +73,12 @@
 
 float SCA3000::getAcceleration(int axis) {
 
+    return getCounts(axis) * 0.75;
+
+}
+
+int SCA3000::getCounts(int axis){
+
     int acceleration = 0;
     int axis_lsb     = 0;
     int axis_msb     = 0;
@@ -107,30 +113,22 @@
 
     }
 
-    acceleration = ( axis_msb << 8 | axis_lsb );
-
-    return countsToMg(acceleration);
-
-}
-
-float SCA3000::countsToMg(int counts){
-
-    float acceleration = 0.0;
-
+    int counts = ( axis_msb << 8 | axis_lsb );
+    
     //If this looks like nonsense it's because
     //the datasheet is completely wrong.
     if(counts & 0x8000){
         counts = (counts >> 3) & 0x1FFF;
-        counts = (~counts & 0x1FFF)+ 1;
-        acceleration = counts * -0.75;
+        counts = (~counts & 0x1FFF) + 1;
+        acceleration = counts * -1;
     }
     else{
         counts = (counts >> 3) & 0xFFF;
-        acceleration = counts * 0.75;
+        acceleration = counts;
     }
     
     return acceleration;
-
+    
 }
 
 int SCA3000::oneByteRead(int address) {