LTC2942 interface with interrupt and battery register calculations For project Jericho

Fork of LTC2942 by Krishna Kaushal Panduru

Committer:
Howardoid
Date:
Tue Feb 02 03:12:13 2016 +0000
Revision:
2:3534423ded9d
Parent:
1:fff66354c6eb
I2C reading LTC2942 ok

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaushalpkk 0:f9e13080204a 1 #include "mbed.h"
Howardoid 1:fff66354c6eb 2 #include "LTC2942.h"
kaushalpkk 0:f9e13080204a 3
Howardoid 1:fff66354c6eb 4 LTC2942::LTC2942(PinName _a,PinName _b,PinName _c,void (*interruptFunc)()):
kaushalpkk 0:f9e13080204a 5 _i2c(_a, _b),_alcc(_c){
kaushalpkk 0:f9e13080204a 6
kaushalpkk 0:f9e13080204a 7 _i2c.frequency(400000);
kaushalpkk 0:f9e13080204a 8 _alcc.fall(interruptFunc);
kaushalpkk 0:f9e13080204a 9 _addr = 0xC8;
kaushalpkk 0:f9e13080204a 10 _battMax = 0x00;
kaushalpkk 0:f9e13080204a 11 _presc = 128;
kaushalpkk 0:f9e13080204a 12 DEBUG("WARNING! use setPrescAndBattCap() to set Battery Capacity\r\n");
kaushalpkk 0:f9e13080204a 13
kaushalpkk 0:f9e13080204a 14 }
kaushalpkk 0:f9e13080204a 15
Howardoid 1:fff66354c6eb 16 LTC2942::LTC2942(PinName _a,PinName _b,PinName _c,void (*interruptFunc)(), float battCap):
kaushalpkk 0:f9e13080204a 17 _i2c(_a, _b),_alcc(_c){
kaushalpkk 0:f9e13080204a 18
Howardoid 2:3534423ded9d 19 _i2c.frequency(40000);
kaushalpkk 0:f9e13080204a 20 _alcc.fall(interruptFunc);
kaushalpkk 0:f9e13080204a 21 _addr = 0xC8;
kaushalpkk 0:f9e13080204a 22
Howardoid 2:3534423ded9d 23
kaushalpkk 0:f9e13080204a 24 setPrescAndBattCap(battCap);
kaushalpkk 0:f9e13080204a 25 }
kaushalpkk 0:f9e13080204a 26
Howardoid 1:fff66354c6eb 27 void LTC2942::setPrescAndBattCap(float battcap){
kaushalpkk 0:f9e13080204a 28 _battCap = battcap;
kaushalpkk 0:f9e13080204a 29 float posM = (char)23*_battCap;
kaushalpkk 0:f9e13080204a 30 for(int i=0; i<8; i++){
kaushalpkk 0:f9e13080204a 31 if(pow(2,(float)i) >= posM){
kaushalpkk 0:f9e13080204a 32 _presc = pow(2,(float)i);
kaushalpkk 0:f9e13080204a 33 setPrescaler((int)_presc);
kaushalpkk 0:f9e13080204a 34 break;
kaushalpkk 0:f9e13080204a 35 }
kaushalpkk 0:f9e13080204a 36 }
kaushalpkk 0:f9e13080204a 37 DEBUG("Prescaler 'M' set to %d\r\n", (int)_presc);
kaushalpkk 0:f9e13080204a 38 _battMax = ((_battCap*1000)*128)/(_presc*0.085);
kaushalpkk 0:f9e13080204a 39 DEBUG("Battery capacity computed as %.2f Ah with bat max 0x%X \r\n", _battCap, (int)_battMax);
kaushalpkk 0:f9e13080204a 40 }
kaushalpkk 0:f9e13080204a 41
kaushalpkk 0:f9e13080204a 42
Howardoid 1:fff66354c6eb 43 void LTC2942::setADCMode(int modeSel){
kaushalpkk 0:f9e13080204a 44 char ans = getControlReg();
kaushalpkk 0:f9e13080204a 45
kaushalpkk 0:f9e13080204a 46 switch(modeSel) {
kaushalpkk 0:f9e13080204a 47 case ADC_AUTO:
kaushalpkk 0:f9e13080204a 48 sbi(ans, ADC_VOLT_MODE);
kaushalpkk 0:f9e13080204a 49 sbi(ans, ADC_TEMP_MODE);
kaushalpkk 0:f9e13080204a 50 break;
kaushalpkk 0:f9e13080204a 51 case ADC_VOLT:
kaushalpkk 0:f9e13080204a 52 sbi(ans, ADC_VOLT_MODE);
kaushalpkk 0:f9e13080204a 53 cbi(ans, ADC_TEMP_MODE);
kaushalpkk 0:f9e13080204a 54 break;
kaushalpkk 0:f9e13080204a 55 case ADC_TEMP:
kaushalpkk 0:f9e13080204a 56 cbi(ans, ADC_VOLT_MODE);
kaushalpkk 0:f9e13080204a 57 sbi(ans, ADC_TEMP_MODE);
kaushalpkk 0:f9e13080204a 58 break;
kaushalpkk 0:f9e13080204a 59 case ADC_SLEEP:
kaushalpkk 0:f9e13080204a 60 cbi(ans, ADC_VOLT_MODE);
kaushalpkk 0:f9e13080204a 61 cbi(ans, ADC_TEMP_MODE);
kaushalpkk 0:f9e13080204a 62 break;
kaushalpkk 0:f9e13080204a 63 default:
kaushalpkk 0:f9e13080204a 64
kaushalpkk 0:f9e13080204a 65 break;
kaushalpkk 0:f9e13080204a 66 }
kaushalpkk 0:f9e13080204a 67 setControlReg(ans);
kaushalpkk 0:f9e13080204a 68 }
kaushalpkk 0:f9e13080204a 69
Howardoid 1:fff66354c6eb 70 void LTC2942::setPrescaler(int val){
kaushalpkk 0:f9e13080204a 71 if(val <= 7) {
kaushalpkk 0:f9e13080204a 72 char ans = getControlReg();
kaushalpkk 0:f9e13080204a 73
kaushalpkk 0:f9e13080204a 74 if((val & 0x01) != 0) {
kaushalpkk 0:f9e13080204a 75 sbi(ans, PRESCALER_0);
kaushalpkk 0:f9e13080204a 76 } else {
kaushalpkk 0:f9e13080204a 77 cbi(ans, PRESCALER_0);
kaushalpkk 0:f9e13080204a 78 }
kaushalpkk 0:f9e13080204a 79 if((val & 0x02) != 0) {
kaushalpkk 0:f9e13080204a 80 sbi(ans, PRESCALER_1);
kaushalpkk 0:f9e13080204a 81 } else {
kaushalpkk 0:f9e13080204a 82 cbi(ans, PRESCALER_1);
kaushalpkk 0:f9e13080204a 83 }
kaushalpkk 0:f9e13080204a 84 if((val & 0x04) != 0) {
kaushalpkk 0:f9e13080204a 85 sbi(ans, PRESCALER_2);
kaushalpkk 0:f9e13080204a 86 } else {
kaushalpkk 0:f9e13080204a 87 cbi(ans, PRESCALER_2);
kaushalpkk 0:f9e13080204a 88 }
kaushalpkk 0:f9e13080204a 89 setControlReg(ans);
kaushalpkk 0:f9e13080204a 90
kaushalpkk 0:f9e13080204a 91 _presc = (float)getPrescaler();
kaushalpkk 0:f9e13080204a 92
kaushalpkk 0:f9e13080204a 93 } else {
kaushalpkk 0:f9e13080204a 94
kaushalpkk 0:f9e13080204a 95 }
kaushalpkk 0:f9e13080204a 96 }
kaushalpkk 0:f9e13080204a 97
Howardoid 1:fff66354c6eb 98 int LTC2942::getPrescaler(){
kaushalpkk 0:f9e13080204a 99 char res = 0x00;
kaushalpkk 0:f9e13080204a 100 char ans = getControlReg();
kaushalpkk 0:f9e13080204a 101
kaushalpkk 0:f9e13080204a 102 if((ans & _BV(PRESCALER_0)) != 0) {
kaushalpkk 0:f9e13080204a 103 sbi(res, 0x00);
kaushalpkk 0:f9e13080204a 104 } else {
kaushalpkk 0:f9e13080204a 105 cbi(res, 0x00);
kaushalpkk 0:f9e13080204a 106 }
kaushalpkk 0:f9e13080204a 107 if((ans & _BV(PRESCALER_1)) != 0) {
kaushalpkk 0:f9e13080204a 108 sbi(res, 0x01);
kaushalpkk 0:f9e13080204a 109 } else {
kaushalpkk 0:f9e13080204a 110 cbi(res, 0x01);
kaushalpkk 0:f9e13080204a 111 }
kaushalpkk 0:f9e13080204a 112 if((ans & _BV(PRESCALER_2)) != 0) {
kaushalpkk 0:f9e13080204a 113 sbi(res, 0x02);
kaushalpkk 0:f9e13080204a 114 } else {
kaushalpkk 0:f9e13080204a 115 cbi(res, 0x02);
kaushalpkk 0:f9e13080204a 116 }
kaushalpkk 0:f9e13080204a 117 ans = getControlReg();
kaushalpkk 0:f9e13080204a 118 return (int)(pow(2,(float)ans));
kaushalpkk 0:f9e13080204a 119
kaushalpkk 0:f9e13080204a 120 }
kaushalpkk 0:f9e13080204a 121
Howardoid 1:fff66354c6eb 122 void LTC2942::configALCC(int modeSel){
kaushalpkk 0:f9e13080204a 123 char ans = getControlReg();
kaushalpkk 0:f9e13080204a 124
kaushalpkk 0:f9e13080204a 125 switch(modeSel) {
kaushalpkk 0:f9e13080204a 126 case ALCC_ALERT:
kaushalpkk 0:f9e13080204a 127 sbi(ans, ALCC_ALERT_MODE);
kaushalpkk 0:f9e13080204a 128 cbi(ans, ALCC_CHRGC_MODE);
kaushalpkk 0:f9e13080204a 129 break;
kaushalpkk 0:f9e13080204a 130 case ALCC_CCOMP:
kaushalpkk 0:f9e13080204a 131 cbi(ans, ALCC_ALERT_MODE);
kaushalpkk 0:f9e13080204a 132 sbi(ans, ALCC_CHRGC_MODE);
kaushalpkk 0:f9e13080204a 133 break;
kaushalpkk 0:f9e13080204a 134 case ALCC_OFF:
kaushalpkk 0:f9e13080204a 135 cbi(ans, ALCC_ALERT_MODE);
kaushalpkk 0:f9e13080204a 136 cbi(ans, ALCC_CHRGC_MODE);
kaushalpkk 0:f9e13080204a 137 break;
kaushalpkk 0:f9e13080204a 138 default:
kaushalpkk 0:f9e13080204a 139
kaushalpkk 0:f9e13080204a 140 break;
kaushalpkk 0:f9e13080204a 141 }
kaushalpkk 0:f9e13080204a 142 setControlReg(ans);
kaushalpkk 0:f9e13080204a 143 }
kaushalpkk 0:f9e13080204a 144
Howardoid 1:fff66354c6eb 145 void LTC2942::shutdown(){
kaushalpkk 0:f9e13080204a 146 char ans = 0x00;
kaushalpkk 0:f9e13080204a 147 ans = getControlReg();
kaushalpkk 0:f9e13080204a 148 sbi(ans,IC_SHUTDOWN);
kaushalpkk 0:f9e13080204a 149 setControlReg(ans);
kaushalpkk 0:f9e13080204a 150 }
kaushalpkk 0:f9e13080204a 151
Howardoid 1:fff66354c6eb 152 void LTC2942::wake(){
kaushalpkk 0:f9e13080204a 153 char ans = 0x00;
kaushalpkk 0:f9e13080204a 154 ans = getControlReg();
kaushalpkk 0:f9e13080204a 155 cbi(ans,IC_SHUTDOWN);
kaushalpkk 0:f9e13080204a 156 setControlReg(ans);
kaushalpkk 0:f9e13080204a 157 }
kaushalpkk 0:f9e13080204a 158
Howardoid 1:fff66354c6eb 159 int LTC2942::accumulatedChargeReg(){
kaushalpkk 0:f9e13080204a 160 char inn = ACC_MSB;
kaushalpkk 0:f9e13080204a 161 char outt[2];
kaushalpkk 0:f9e13080204a 162 _i2c.write( _addr, &inn, 1 ,true );
kaushalpkk 0:f9e13080204a 163 _i2c.read( _addr, outt, 2 );
kaushalpkk 0:f9e13080204a 164 int accChg = (int)outt[0];
kaushalpkk 0:f9e13080204a 165 accChg = (accChg*256)+ outt[1];
kaushalpkk 0:f9e13080204a 166 return accChg;
kaushalpkk 0:f9e13080204a 167 }
kaushalpkk 0:f9e13080204a 168
Howardoid 1:fff66354c6eb 169 float LTC2942::accumulatedCharge(){
kaushalpkk 0:f9e13080204a 170 int reg = accumulatedChargeReg();
kaushalpkk 0:f9e13080204a 171 float res = ((float)accumulatedChargeReg()/_battMax)*100;
kaushalpkk 0:f9e13080204a 172 return res;
kaushalpkk 0:f9e13080204a 173 }
kaushalpkk 0:f9e13080204a 174
Howardoid 1:fff66354c6eb 175 void LTC2942::accumulatedChargeReg(int inp){
kaushalpkk 0:f9e13080204a 176 shutdown();
kaushalpkk 0:f9e13080204a 177 char cmd[3];
kaushalpkk 0:f9e13080204a 178
kaushalpkk 0:f9e13080204a 179 cmd[0] = ACC_MSB;
kaushalpkk 0:f9e13080204a 180 cmd[1] = (0xFF00 & inp) >> 8;
kaushalpkk 0:f9e13080204a 181 cmd[2] = (0x00FF & inp);
kaushalpkk 0:f9e13080204a 182 _i2c.write(_addr, cmd, 3, true);
kaushalpkk 0:f9e13080204a 183 wake();
kaushalpkk 0:f9e13080204a 184 }
kaushalpkk 0:f9e13080204a 185
Howardoid 1:fff66354c6eb 186 void LTC2942::accumulatedCharge(float inp){
kaushalpkk 0:f9e13080204a 187 inp = (inp/100)*_battMax;
kaushalpkk 0:f9e13080204a 188 accumulatedChargeReg(inp);
kaushalpkk 0:f9e13080204a 189 }
kaushalpkk 0:f9e13080204a 190
Howardoid 1:fff66354c6eb 191 void LTC2942::setChargeThresholdLow(float prect){
kaushalpkk 0:f9e13080204a 192 char cmd[3];
kaushalpkk 0:f9e13080204a 193 prect = (prect/100)*_battMax;
kaushalpkk 0:f9e13080204a 194
kaushalpkk 0:f9e13080204a 195 cmd[0] = CHRG_THL_MSB;
kaushalpkk 0:f9e13080204a 196 cmd[1] = (0xFF00 & (int)prect) >> 8;
kaushalpkk 0:f9e13080204a 197 cmd[2] = (0x00FF & (int)prect);
kaushalpkk 0:f9e13080204a 198 _i2c.write(_addr, cmd, 2, true);
kaushalpkk 0:f9e13080204a 199 }
kaushalpkk 0:f9e13080204a 200
Howardoid 1:fff66354c6eb 201 void LTC2942::setChargeThresholdHigh(float prect){
kaushalpkk 0:f9e13080204a 202 char cmd[3];
kaushalpkk 0:f9e13080204a 203 prect = (prect/100)*_battMax;
kaushalpkk 0:f9e13080204a 204
kaushalpkk 0:f9e13080204a 205 cmd[0] = CHRG_THH_MSB;
kaushalpkk 0:f9e13080204a 206 cmd[1] = (0xFF00 & (int)prect) >> 8;
kaushalpkk 0:f9e13080204a 207 cmd[2] = (0x00FF & (int)prect);
kaushalpkk 0:f9e13080204a 208 _i2c.write(_addr, cmd, 2, true);
kaushalpkk 0:f9e13080204a 209 }
kaushalpkk 0:f9e13080204a 210
Howardoid 1:fff66354c6eb 211 float LTC2942::voltage(){
kaushalpkk 0:f9e13080204a 212 char inn = VOLT_MSB;
kaushalpkk 0:f9e13080204a 213 char outt[2];
kaushalpkk 0:f9e13080204a 214 _i2c.write( _addr, &inn, 1 ,true );
kaushalpkk 0:f9e13080204a 215 _i2c.read( _addr, outt, 2 );
kaushalpkk 0:f9e13080204a 216 int vtemp = (int)outt[0];
kaushalpkk 0:f9e13080204a 217 vtemp = (vtemp*256)+ outt[1];
kaushalpkk 0:f9e13080204a 218 float vol = 6 * ((float)vtemp / 65535);
kaushalpkk 0:f9e13080204a 219 return vol;
kaushalpkk 0:f9e13080204a 220 }
kaushalpkk 0:f9e13080204a 221
Howardoid 1:fff66354c6eb 222 void LTC2942::setVoltageThresholdLow(float inp){
kaushalpkk 0:f9e13080204a 223 char cmd[2];
kaushalpkk 0:f9e13080204a 224 int ans = (int)(inp *65535)/6;
kaushalpkk 0:f9e13080204a 225 ans = ans >> 8;
kaushalpkk 0:f9e13080204a 226 cmd[0] = VOLT_THL;
kaushalpkk 0:f9e13080204a 227 cmd[1] = (char)ans;
kaushalpkk 0:f9e13080204a 228 _i2c.write(_addr, cmd, 2, true);
kaushalpkk 0:f9e13080204a 229 }
kaushalpkk 0:f9e13080204a 230
Howardoid 1:fff66354c6eb 231 void LTC2942::setVoltageThresholdHigh(float inp){
kaushalpkk 0:f9e13080204a 232 char cmd[2];
kaushalpkk 0:f9e13080204a 233 int ans = (int)(inp *65535)/6;
kaushalpkk 0:f9e13080204a 234 ans = ans >> 8;
kaushalpkk 0:f9e13080204a 235 cmd[0] = VOLT_THH;
kaushalpkk 0:f9e13080204a 236 cmd[1] = (char)ans;
kaushalpkk 0:f9e13080204a 237 _i2c.write(_addr, cmd, 2, true);
kaushalpkk 0:f9e13080204a 238 }
kaushalpkk 0:f9e13080204a 239
kaushalpkk 0:f9e13080204a 240
Howardoid 1:fff66354c6eb 241 float LTC2942::temperature(){
kaushalpkk 0:f9e13080204a 242 char inn = TEMP_MSB;
kaushalpkk 0:f9e13080204a 243 char outt[2];
kaushalpkk 0:f9e13080204a 244 _i2c.write( _addr, &inn, 1 ,true );
kaushalpkk 0:f9e13080204a 245 _i2c.read( _addr, outt, 2 );
kaushalpkk 0:f9e13080204a 246 int ttemp = (int)outt[0];
kaushalpkk 0:f9e13080204a 247 ttemp = (ttemp*256)+ outt[1];
kaushalpkk 0:f9e13080204a 248 float tempp = (600 * ((float)ttemp / 65535)) - 273.15;
kaushalpkk 0:f9e13080204a 249 return tempp;
kaushalpkk 0:f9e13080204a 250 }
kaushalpkk 0:f9e13080204a 251
Howardoid 1:fff66354c6eb 252 void LTC2942::setTemperatureThresholdLow(float inp){
kaushalpkk 0:f9e13080204a 253 int ans = (int)(((inp+273.15)*65535)/600);
kaushalpkk 0:f9e13080204a 254 ans = ans >> 8;
kaushalpkk 0:f9e13080204a 255 char cmd[2];
kaushalpkk 0:f9e13080204a 256 cmd[0] = TEMPERATURE_THL;
kaushalpkk 0:f9e13080204a 257 cmd[1] = ans;
kaushalpkk 0:f9e13080204a 258 _i2c.write(_addr, cmd, 2, true);
kaushalpkk 0:f9e13080204a 259 }
kaushalpkk 0:f9e13080204a 260
Howardoid 1:fff66354c6eb 261 void LTC2942::setTemperatureThresholdHigh(float inp){
kaushalpkk 0:f9e13080204a 262 int ans = (int)(((inp+273.15)*65535)/600);
kaushalpkk 0:f9e13080204a 263 ans = ans >> 8;
kaushalpkk 0:f9e13080204a 264 char cmd[2];
kaushalpkk 0:f9e13080204a 265 cmd[0] = TEMPERATURE_THH;
kaushalpkk 0:f9e13080204a 266 cmd[1] = ans;
kaushalpkk 0:f9e13080204a 267 _i2c.write(_addr, cmd, 2, true);
kaushalpkk 0:f9e13080204a 268 }
kaushalpkk 0:f9e13080204a 269
Howardoid 1:fff66354c6eb 270 void LTC2942::readAll(){
kaushalpkk 0:f9e13080204a 271 char cmd[16];
kaushalpkk 0:f9e13080204a 272 cmd[0] = REG_STATUS;
kaushalpkk 0:f9e13080204a 273 _i2c.write(_addr, cmd, 1, true);
kaushalpkk 0:f9e13080204a 274 _i2c.read(_addr, cmd, 16); // read the two-byte echo result
kaushalpkk 0:f9e13080204a 275 DEBUG("===================================================\r\n");
kaushalpkk 0:f9e13080204a 276 DEBUG("REG_STATUS [%X] \r\n",cmd[REG_STATUS]);
kaushalpkk 0:f9e13080204a 277 DEBUG("REG_CONTROL [%X] \r\n",cmd[REG_CONTROL]);
kaushalpkk 0:f9e13080204a 278 DEBUG("ACC_CHARGE [%X %X] \r\n",cmd[ACC_MSB],cmd[ACC_LSB]);
kaushalpkk 0:f9e13080204a 279 DEBUG("CHRG_THH [%X %X] \r\n",cmd[CHRG_THH_MSB],cmd[CHRG_THH_LSB]);
kaushalpkk 0:f9e13080204a 280 DEBUG("CHRG_THL [%X %X] \r\n",cmd[CHRG_THL_MSB],cmd[CHRG_THL_LSB]);
kaushalpkk 0:f9e13080204a 281 DEBUG("VOLTAGE [%X %X] \r\n",cmd[VOLT_MSB],cmd[VOLT_LSB]);
kaushalpkk 0:f9e13080204a 282 DEBUG("VOLT_THH [%X] \r\n",cmd[VOLT_THH]);
kaushalpkk 0:f9e13080204a 283 DEBUG("VOLT_THL [%X] \r\n",cmd[VOLT_THL]);
kaushalpkk 0:f9e13080204a 284 DEBUG("TEMPERATURE [%X %X] \r\n",cmd[TEMP_MSB],cmd[TEMP_LSB]);
kaushalpkk 0:f9e13080204a 285 DEBUG("TEMPERATURE_THH [%X] \r\n",cmd[TEMPERATURE_THH]);
kaushalpkk 0:f9e13080204a 286 DEBUG("TEMPERATURE_THL [%X] \r\n",cmd[TEMPERATURE_THL]);
kaushalpkk 0:f9e13080204a 287 DEBUG("===================================================\r\n");
kaushalpkk 0:f9e13080204a 288 DEBUG("\r\n");
kaushalpkk 0:f9e13080204a 289 }
kaushalpkk 0:f9e13080204a 290
Howardoid 1:fff66354c6eb 291 int LTC2942::alertResponse(){
kaushalpkk 0:f9e13080204a 292 char reg = getStatusReg();
kaushalpkk 0:f9e13080204a 293 char ans;
kaushalpkk 0:f9e13080204a 294 char cmd= 0x19;
kaushalpkk 0:f9e13080204a 295 _i2c.read(cmd, &ans, 1);
kaushalpkk 0:f9e13080204a 296 if(ans == 0xC8){
kaushalpkk 0:f9e13080204a 297 DEBUG("alert = %x, reg = %x\r\n", ans,reg);
kaushalpkk 0:f9e13080204a 298 return reg;
kaushalpkk 0:f9e13080204a 299 }else
kaushalpkk 0:f9e13080204a 300 return -1;
kaushalpkk 0:f9e13080204a 301 }
kaushalpkk 0:f9e13080204a 302
Howardoid 1:fff66354c6eb 303 char LTC2942::getControlReg()
kaushalpkk 0:f9e13080204a 304 {
kaushalpkk 0:f9e13080204a 305 char cmd;
kaushalpkk 0:f9e13080204a 306 char ans;
kaushalpkk 0:f9e13080204a 307 cmd= REG_CONTROL;
kaushalpkk 0:f9e13080204a 308 _i2c.write(_addr, &cmd, 1, true);
kaushalpkk 0:f9e13080204a 309 _i2c.read(_addr, &ans, 1);
kaushalpkk 0:f9e13080204a 310
kaushalpkk 0:f9e13080204a 311 return ans;
kaushalpkk 0:f9e13080204a 312 }
kaushalpkk 0:f9e13080204a 313
Howardoid 1:fff66354c6eb 314 char LTC2942::getStatusReg()
kaushalpkk 0:f9e13080204a 315 {
kaushalpkk 0:f9e13080204a 316 char cmd;
kaushalpkk 0:f9e13080204a 317 char ans;
kaushalpkk 0:f9e13080204a 318 cmd= REG_STATUS;
kaushalpkk 0:f9e13080204a 319 _i2c.write(_addr, &cmd, 1, true);
kaushalpkk 0:f9e13080204a 320 _i2c.read(_addr, &ans, 1);
kaushalpkk 0:f9e13080204a 321
kaushalpkk 0:f9e13080204a 322 return ans;
kaushalpkk 0:f9e13080204a 323 }
kaushalpkk 0:f9e13080204a 324
Howardoid 1:fff66354c6eb 325 void LTC2942::setControlReg(char inp)
kaushalpkk 0:f9e13080204a 326 {
kaushalpkk 0:f9e13080204a 327 char cmd[2];
kaushalpkk 0:f9e13080204a 328 cmd[0] = REG_CONTROL;
kaushalpkk 0:f9e13080204a 329 cmd[1] = inp;
kaushalpkk 0:f9e13080204a 330 _i2c.write(_addr, cmd, 2, true);
kaushalpkk 0:f9e13080204a 331 }