library for MAX9611 /9612 Current-Sense Amplifiers

Revision:
5:6fec24c37e2a
Parent:
3:41839eb9229f
Child:
6:32b5eb1df932
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/max9611.cpp	Sat Nov 08 20:45:21 2014 +0000
@@ -0,0 +1,68 @@
+#include "max9611.h"
+
+
+
+
+MAX9611::MAX9611(PinName sda, PinName scl, int i2cFrequencyHz, int address):i2c(sda,scl), i2cAddr(address)
+{
+    i2c.frequency(i2cFrequencyHz);
+    if(!initMax9611()) while(1){ //TODO handle error
+    }
+     mTemperature=0;
+}
+
+
+
+//write data to the sensor
+bool MAX9611::write(uint8_t regAddress, uint8_t* data,int dataLength)
+{
+    uint8_t tempBuf[dataLength+1];
+    tempBuf[0]=regAddress;
+    memcpy(tempBuf,data,dataLength);
+    return i2c.write(i2cAddr,(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);
+}
+
+//configuration of MAX9611 
+bool MAX9611::initMax9611(eCtrlReg1MUX mux, 
+                    eCtrlReg1SHDN shdn, 
+                    eCtrlReg1LR lr, 
+                    eCtrlReg1MODE mode, 
+                    eCtrlReg2DTIM watchdogDelay, 
+                    eCtrlReg2RTIM watchdogRetryDelay)
+{
+    uint8_t retVal=0;
+    uint8_t controlReg1=0;
+    uint8_t controlReg2=0;
+
+    controlReg1=(mode<<5|lr<<4|shdn<<3|mux);
+    controlReg2=(watchdogDelay<<3|watchdogRetryDelay<<2);
+    retVal+= write(CONTROL_REGISTER_1_ADRR,&controlReg1,1);
+    retVal+= write(CONTROL_REGISTER_2_ADRR,&controlReg2,1);
+    if(retVal!=2) return false;
+    return true;
+}
+
+
+bool MAX9611::readTemp(void)
+{  
+   uint8_t rawData[2];
+   uint16_t rawTemp=0;
+   if(!read(TEMP_DATA_BYTE_MSB_ADRR, rawData,2)) return false;
+   rawTemp= get9BitData(rawData[0],rawData[1]);
+        if ( rawTemp & 0x100) {
+             mTemperature = (float) (rawTemp- 256)*0.48;
+        } 
+        else {
+            mTemperature = (float)(rawTemp) *0.48;     
+        }
+    return true;
+}
+
+