EEprom i2c 24AA08 & 24LC08 (no Address pin) library control

Dependents:   accuBlast_display

Committer:
mederic
Date:
Wed Sep 10 08:57:38 2014 +0000
Revision:
0:e295d3596c85
first release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mederic 0:e295d3596c85 1 #include "Ee24xx08.h"
mederic 0:e295d3596c85 2
mederic 0:e295d3596c85 3
mederic 0:e295d3596c85 4 //***********************************/************************************
mederic 0:e295d3596c85 5 // Constructors //
mederic 0:e295d3596c85 6 //***********************************/************************************
mederic 0:e295d3596c85 7 Ee24xx08::Ee24xx08(I2C *i2c):_i2c(i2c)
mederic 0:e295d3596c85 8 {
mederic 0:e295d3596c85 9 }
mederic 0:e295d3596c85 10
mederic 0:e295d3596c85 11 //***********************************/************************************
mederic 0:e295d3596c85 12 // Public Methods //
mederic 0:e295d3596c85 13 //***********************************/************************************
mederic 0:e295d3596c85 14 bool Ee24xx08::write(const short addr, const char byte)
mederic 0:e295d3596c85 15 {
mederic 0:e295d3596c85 16 char i2cBuffer[2];
mederic 0:e295d3596c85 17 i2cBuffer[0] = (unsigned char)addr; //8lsb of address word
mederic 0:e295d3596c85 18 i2cBuffer[1] = byte; //byte to write
mederic 0:e295d3596c85 19 return _i2c->write(EE24xx08ADDR|((addr>>7)&0X0E),i2cBuffer,2); //i2c adress + page adress & data send
mederic 0:e295d3596c85 20 }
mederic 0:e295d3596c85 21
mederic 0:e295d3596c85 22 bool Ee24xx08::write(const short addr, const char* buffer,const int len)
mederic 0:e295d3596c85 23 {
mederic 0:e295d3596c85 24 char i2cBuffer[len+1];
mederic 0:e295d3596c85 25 i2cBuffer[0] = (unsigned char)addr;
mederic 0:e295d3596c85 26 memcpy(i2cBuffer+1,buffer,len);
mederic 0:e295d3596c85 27
mederic 0:e295d3596c85 28 return _i2c->write(EE24xx08ADDR|((addr>>7)&0X0E),i2cBuffer,len);
mederic 0:e295d3596c85 29 }
mederic 0:e295d3596c85 30
mederic 0:e295d3596c85 31 bool Ee24xx08::read(const short addr, char *byte)
mederic 0:e295d3596c85 32 {
mederic 0:e295d3596c85 33
mederic 0:e295d3596c85 34 if(_i2c->write(EE24xx08ADDR|((addr>>7)&0X0E),(char*)&addr,1,true))
mederic 0:e295d3596c85 35 {
mederic 0:e295d3596c85 36 return true;
mederic 0:e295d3596c85 37 }
mederic 0:e295d3596c85 38 return _i2c->read(EE24xx08ADDR|((addr>>7)&0X0E),byte,1);
mederic 0:e295d3596c85 39 }
mederic 0:e295d3596c85 40
mederic 0:e295d3596c85 41 bool Ee24xx08::read(const short addr, char *buffer, const int len)
mederic 0:e295d3596c85 42 {
mederic 0:e295d3596c85 43
mederic 0:e295d3596c85 44 if(_i2c->write(EE24xx08ADDR|((addr>>7)&0X0E),(char*)&addr,1,true))
mederic 0:e295d3596c85 45 {
mederic 0:e295d3596c85 46 return true;
mederic 0:e295d3596c85 47 }
mederic 0:e295d3596c85 48 return _i2c->read(EE24xx08ADDR|((addr>>7)&0X0E),buffer,len);
mederic 0:e295d3596c85 49 }