diff options
author | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
---|---|---|
committer | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
commit | 177ad96f866714a4962be57f69cd3d5a6334cde1 (patch) | |
tree | 1072239986340d6a239adac924eddf2e1d1ca566 /libraries/Robot_Control/EEPROM_I2C.cpp | |
parent | 6cff36ac5e85c74bcb45cc53491ad69d64520b36 (diff) | |
parent | d90fcca5839d13d57ed527d4009b78d22dafbde7 (diff) |
Merge branch 'merge-1.0.5' into ide-1.5.x-discovery
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 |