diff options
author | Cristian Maglie <c.maglie@bug.st> | 2013-05-29 18:30:36 +0200 |
---|---|---|
committer | Cristian Maglie <c.maglie@bug.st> | 2013-05-29 18:30:36 +0200 |
commit | d90fcca5839d13d57ed527d4009b78d22dafbde7 (patch) | |
tree | 768b98af21e5075846184dd3de41ae0c22e75e20 /libraries/Robot_Control/EEPROM_I2C.cpp | |
parent | 7207108255a772474b322151cb0fd113e8030afe (diff) | |
parent | ef4e8c65373f531ce6d37ff226a21fc9b358ff29 (diff) |
Merged 1.0.5
Diffstat (limited to 'libraries/Robot_Control/EEPROM_I2C.cpp')
-rw-r--r-- | libraries/Robot_Control/EEPROM_I2C.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/libraries/Robot_Control/EEPROM_I2C.cpp b/libraries/Robot_Control/EEPROM_I2C.cpp new file mode 100644 index 0000000..dd12695 --- /dev/null +++ b/libraries/Robot_Control/EEPROM_I2C.cpp @@ -0,0 +1,62 @@ +#include "EEPROM_I2C.h" +#include <Wire.h> + +#if ARDUINO >= 100 +#include "Arduino.h" +#else +#include "WProgram.h" +#endif + +void EEPROM_I2C::begin(){ + Wire.begin(); +} + +void EEPROM_I2C::writeByte(unsigned int eeaddress, byte data){ + int rdata = data; + this->_beginTransmission(eeaddress); + Wire.write(rdata); + this->_endTransmission(); +} + +byte EEPROM_I2C::readByte(unsigned int eeaddress){ + int rdata; + this->_beginTransmission(eeaddress); + this->_endTransmission(); + + Wire.requestFrom(DEVICEADDRESS,1); + if (Wire.available()) rdata = Wire.read(); + return rdata; +} + +void EEPROM_I2C::writePage(unsigned int eeaddress, byte* data, byte length ){ + this->_beginTransmission(eeaddress); + + byte c; + + for ( c = 0; c < length; c++) + Wire.write(data[c]); + + this->_endTransmission(); + + delay(10); // need some delay +} + +void EEPROM_I2C::readBuffer(unsigned int eeaddress, byte *buffer, int length ){ + this->_beginTransmission(eeaddress); + this->_endTransmission(); + Wire.requestFrom(DEVICEADDRESS,length); + + for ( int c = 0; c < length; c++ ) + if (Wire.available()) buffer[c] = Wire.read(); +} + + + +void EEPROM_I2C::_beginTransmission(unsigned int eeaddress){ + Wire.beginTransmission(DEVICEADDRESS); + Wire.write((eeaddress >> 8)); // Address High Byte + Wire.write((eeaddress & 0xFF)); // Address Low Byte +} +void EEPROM_I2C::_endTransmission(){ + Wire.endTransmission(); +}
\ No newline at end of file |