Advertisement
trunet

24LC256 EEPROM on Maple

Jul 12th, 2011
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include "wirish.h"
  2. #include "i2c.h"
  3.  
  4. void writeEEPROM(unsigned int address, byte data );
  5. byte readEEPROM(unsigned int address );
  6.  
  7. void setup() {
  8.     i2c_master_enable(I2C1, 0);
  9.     uint8 buffer[256] = {0};
  10.     address = 0;
  11.     for (uint8 i=0;i<256;i++) {
  12.         buffer[i]=i;
  13.         writeEEPROM(i, buffer[i]);
  14.     }
  15. }
  16.  
  17. void writeEEPROM(unsigned int address, byte data) {
  18.     uint8 deviceaddress = 0b1010000;
  19.     i2c_msg msgWrite1;
  20.     uint8 bufWrite1[3];
  21.    
  22.     bufWrite1[0] = (uint8)((int)(address >> 8));
  23.     bufWrite1[1] = (uint8)((int)(address & 0xff));
  24.     bufWrite1[2] = data;
  25.    
  26.     msgWrite1.addr = deviceaddress;
  27.     msgWrite1.flags = 0;
  28.     msgWrite1.length = 3;
  29.     msgWrite1.data = bufWrite1;
  30.    
  31.     i2c_master_xfer(I2C1, &msgWrite1, 1, 500);
  32.     delay(5);
  33. }
  34.  
  35. byte readEEPROM(unsigned int address) {
  36.     uint8 deviceaddress = 0b1010000;
  37.     i2c_msg msgsRead[2];
  38.     uint8 bufReadAddress[2];
  39.     uint8 rdata = 0xFF;
  40.    
  41.     bufReadAddress[0] = (uint8)((int)(address >> 8));
  42.     bufReadAddress[1] = (uint8)((int)(address & 0xff));
  43.    
  44.     msgsRead[0].addr = deviceaddress;
  45.     msgsRead[0].flags = 0;
  46.     msgsRead[0].length = 2;
  47.     msgsRead[0].data = bufReadAddress;
  48.    
  49.     msgsRead[1].addr = deviceaddress;
  50.     msgsRead[1].flags = I2C_MSG_READ;
  51.     msgsRead[1].length = 1;
  52.     msgsRead[1].data = (uint8 *)rdata;
  53.    
  54.     i2c_master_xfer(I2C1, msgsRead, 2, 500);
  55.     return rdata;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement