library for MAX9611 /9612 Current-Sense Amplifiers

Revision:
6:32b5eb1df932
Parent:
5:6fec24c37e2a
Child:
7:012f5b39405e
--- a/max9611.cpp	Sat Nov 08 20:45:21 2014 +0000
+++ b/max9611.cpp	Tue Nov 11 02:25:05 2014 +0000
@@ -3,11 +3,11 @@
 
 
 
-MAX9611::MAX9611(PinName sda, PinName scl, int i2cFrequencyHz, int address):i2c(sda,scl), i2cAddr(address)
+MAX9611::MAX9611(PinName sda, PinName scl, int i2cFrequencyHz, int address):mI2c(sda,scl), mI2cAddr(address)
 {
-    i2c.frequency(i2cFrequencyHz);
-    if(!initMax9611()) while(1){ //TODO handle error
-    }
+    mI2c.frequency(i2cFrequencyHz);
+    if(!initMax9611()); //while(1){ //TODO handle error
+   //}
      mTemperature=0;
 }
 
@@ -18,15 +18,16 @@
 {
     uint8_t tempBuf[dataLength+1];
     tempBuf[0]=regAddress;
-    memcpy(tempBuf,data,dataLength);
-    return i2c.write(i2cAddr,(char*)tempBuf,dataLength+1)==0;
+    memcpy(&(tempBuf[1]),data,dataLength);
+    return mI2c.write(mI2cAddr,(char*)tempBuf,dataLength+1)==0;
+
 }
 
 //read data from the sensor
 bool MAX9611::read(uint8_t regAddress, uint8_t *data,int dataLength)
 {
-    i2c.write(i2cAddr,(char*)&regAddress,1,true);
-    return (i2c.read(i2cAddr,(char*)data,dataLength)==0);
+    mI2c.write(mI2cAddr,(char*)&regAddress,1,true);
+    return (mI2c.read(mI2cAddr,(char*)data,dataLength)==0);
 }
 
 //configuration of MAX9611 
@@ -56,13 +57,59 @@
    uint16_t rawTemp=0;
    if(!read(TEMP_DATA_BYTE_MSB_ADRR, rawData,2)) return false;
    rawTemp= get9BitData(rawData[0],rawData[1]);
+   //mRawInt =rawTemp;
         if ( rawTemp & 0x100) {
              mTemperature = (float) (rawTemp- 256)*0.48;
         } 
         else {
             mTemperature = (float)(rawTemp) *0.48;     
         }
+       
+    return true;
+}
+
+
+bool MAX9611::readCSAOutputValue(void)
+{
+    uint8_t rawData[2];
+    uint16_t rawCSAVal=0;   
+    if(!read(CSA_DATA_BYTE_MSB_ADRR, rawData,2)) return false;
+    rawCSAVal= get12BitData(rawData[0],rawData[1]);
+    mRawInt = rawCSAVal;
+    if(rawCSAVal<=csaCurrentValueOffset)
+    mCurrentSenseAmplifierOutput=0;// (float)(rawCSAVal-csaCurrentValueOffset)*(0.269);
+    else mCurrentSenseAmplifierOutput= (float)(rawCSAVal)*(0.269);
+    
     return true;
 }
 
 
+
+uint16_t MAX9611::readControl(void)
+{  
+   uint8_t rawData[2];
+   uint16_t rawTemp=0;
+   read(CONTROL_REGISTER_1_ADRR, rawData,2) ;
+   rawTemp= (rawData[0]<<8)|rawData[1];
+   return rawTemp;
+}
+
+
+uint16_t MAX9611::readRsValue(void)
+{  
+   uint8_t rawData[2];
+   uint16_t rawTemp=0;
+   read(RS_DATA_BYTE_MSB_ADRR, rawData,2) ;
+   rawTemp= get12BitData(rawData[0],rawData[1]);
+   return rawTemp;
+}
+
+
+uint16_t MAX9611::readOutValue(void)
+{  
+   uint8_t rawData[2];
+   uint16_t rawTemp=0;
+   read(OUT_DATA_BYTE_MSB_ADRR, rawData,2) ;
+   rawTemp= get12BitData(rawData[0],rawData[1]);
+   return rawTemp;
+}