EEprom i2c 24AA08 & 24LC08 (no Address pin) library control
Ee24xx08.cpp@0:e295d3596c85, 2014-09-10 (annotated)
- Committer:
- mederic
- Date:
- Wed Sep 10 08:57:38 2014 +0000
- Revision:
- 0:e295d3596c85
first release
Who changed what in which revision?
User | Revision | Line number | New 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 | } |