library for MAX9611 /9612 Current-Sense Amplifiers

Committer:
igbt6
Date:
Sun Apr 27 19:05:13 2014 +0000
Revision:
2:d12dffd027a8
Parent:
1:131a836c6b79
Child:
3:41839eb9229f
comunication wit sensor works correctly

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igbt6 1:131a836c6b79 1 #include "adt7410.h"
igbt6 1:131a836c6b79 2
igbt6 2:d12dffd027a8 3
igbt6 2:d12dffd027a8 4 ADT7410::ADT7410(PinName sda, PinName scl, int i2cFrequencyHz, int address,CONF_RESOLUTION res ):i2c(sda,scl), i2cAddr(address), resolution(res){
igbt6 2:d12dffd027a8 5 i2c.frequency(i2cFrequencyHz);
igbt6 2:d12dffd027a8 6 }
igbt6 2:d12dffd027a8 7
igbt6 2:d12dffd027a8 8
igbt6 1:131a836c6b79 9
igbt6 1:131a836c6b79 10
igbt6 1:131a836c6b79 11 bool ADT7410::write(uint8_t regAddress, uint8_t data){
igbt6 1:131a836c6b79 12
igbt6 1:131a836c6b79 13 char temp[2];
igbt6 1:131a836c6b79 14 temp[0]=regAddress;
igbt6 1:131a836c6b79 15 temp[1]=data;
igbt6 2:d12dffd027a8 16 return i2c.write(ADT7410_I2C_ADDRESS,temp,2)==0;
igbt6 1:131a836c6b79 17 }
igbt6 1:131a836c6b79 18
igbt6 1:131a836c6b79 19
igbt6 1:131a836c6b79 20
igbt6 2:d12dffd027a8 21
igbt6 1:131a836c6b79 22 int ADT7410::read(uint8_t regAddress, uint8_t *data,int length){
igbt6 1:131a836c6b79 23
igbt6 2:d12dffd027a8 24 i2c.write(i2cAddr,(char*)&regAddress,1);
igbt6 2:d12dffd027a8 25 return i2c.read(i2cAddr,(char*)data,length)==0;
igbt6 2:d12dffd027a8 26 }
igbt6 2:d12dffd027a8 27
igbt6 2:d12dffd027a8 28 //configuration of ADT7410 sensor
igbt6 2:d12dffd027a8 29 int ADT7410::initADT7410(CONF_FAULT_QUEUE faultQueue, CONF_CT_PIN_POLARITY ctPinPolarity, CONF_INT_PIN_POLARITY intPinPolarity, CONF_INT_CT_MODE intCtMode, CONF_OPERATION_MODE operMode, CONF_RESOLUTION res){
igbt6 2:d12dffd027a8 30
igbt6 2:d12dffd027a8 31 uint8_t confByte=0;
igbt6 2:d12dffd027a8 32 int retVal=0;
igbt6 2:d12dffd027a8 33
igbt6 2:d12dffd027a8 34 confByte=(res<<7|operMode<<5|intCtMode<<4|intPinPolarity<<3|ctPinPolarity<<2|faultQueue);
igbt6 2:d12dffd027a8 35 if(!write(0x03,confByte))retVal=-1;
igbt6 2:d12dffd027a8 36 else retVal=1;
igbt6 2:d12dffd027a8 37 return retVal;
igbt6 2:d12dffd027a8 38
igbt6 2:d12dffd027a8 39 }
igbt6 2:d12dffd027a8 40
igbt6 2:d12dffd027a8 41 // read 13 bit temperature
igbt6 2:d12dffd027a8 42 int ADT7410::readTemp(float* temperature){
igbt6 1:131a836c6b79 43
igbt6 2:d12dffd027a8 44 char rData[2] = {0,0};
igbt6 2:d12dffd027a8 45 float tFin = 0;
igbt6 2:d12dffd027a8 46 int tRaw = 0;
igbt6 2:d12dffd027a8 47
igbt6 2:d12dffd027a8 48 // set address pointer to temperature register
igbt6 2:d12dffd027a8 49 if(i2c.write(i2cAddr, 0x00, 1))return -1;
igbt6 2:d12dffd027a8 50
igbt6 2:d12dffd027a8 51 // read temperature register, two bytes
igbt6 2:d12dffd027a8 52 if(i2c.read(i2cAddr, rData, 2))return -1;
igbt6 2:d12dffd027a8 53
igbt6 2:d12dffd027a8 54 // temperature returned is only 13 bits
igbt6 2:d12dffd027a8 55 // discard alarm flags in lower bits
igbt6 2:d12dffd027a8 56 tRaw = (rData[0] << 8) | (rData[1]);
igbt6 2:d12dffd027a8 57 tRaw >>= 3;
igbt6 2:d12dffd027a8 58
igbt6 2:d12dffd027a8 59 // handle positive and negative temperatures
igbt6 2:d12dffd027a8 60 // results in two's complement
igbt6 2:d12dffd027a8 61 if ( tRaw & 0x1000) {
igbt6 2:d12dffd027a8 62 tFin = (float) (tRaw - 8192) / 16;
igbt6 2:d12dffd027a8 63 } else {
igbt6 2:d12dffd027a8 64 tFin = (float) tRaw / 16;
igbt6 2:d12dffd027a8 65 }
igbt6 2:d12dffd027a8 66 *temperature=tFin;
igbt6 2:d12dffd027a8 67 return 1;
igbt6 2:d12dffd027a8 68 }
igbt6 2:d12dffd027a8 69
igbt6 2:d12dffd027a8 70
igbt6 2:d12dffd027a8 71
igbt6 2:d12dffd027a8 72
igbt6 2:d12dffd027a8 73
igbt6 2:d12dffd027a8 74 int ADT7410::getIdNumber(void){
igbt6 2:d12dffd027a8 75
igbt6 2:d12dffd027a8 76 uint8_t data=0;
igbt6 2:d12dffd027a8 77 uint8_t regAddress=0x0B;
igbt6 1:131a836c6b79 78
igbt6 2:d12dffd027a8 79 if(i2c.write(i2cAddr,(char*)&regAddress,1)) return -1;
igbt6 2:d12dffd027a8 80 if(i2c.read(i2cAddr,(char*)&data,1)) return -1;
igbt6 2:d12dffd027a8 81
igbt6 2:d12dffd027a8 82 else
igbt6 2:d12dffd027a8 83 return data;
igbt6 2:d12dffd027a8 84
igbt6 2:d12dffd027a8 85
igbt6 2:d12dffd027a8 86 }