Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "wirish.h"
- #include "i2c.h"
- void writeEEPROM(unsigned int address, byte data );
- byte readEEPROM(unsigned int address );
- void setup() {
- i2c_master_enable(I2C1, 0);
- uint8 buffer[256] = {0};
- address = 0;
- for (uint8 i=0;i<256;i++) {
- buffer[i]=i;
- writeEEPROM(i, buffer[i]);
- }
- }
- void writeEEPROM(unsigned int address, byte data) {
- uint8 deviceaddress = 0b1010000;
- i2c_msg msgWrite1;
- uint8 bufWrite1[3];
- bufWrite1[0] = (uint8)((int)(address >> 8));
- bufWrite1[1] = (uint8)((int)(address & 0xff));
- bufWrite1[2] = data;
- msgWrite1.addr = deviceaddress;
- msgWrite1.flags = 0;
- msgWrite1.length = 3;
- msgWrite1.data = bufWrite1;
- i2c_master_xfer(I2C1, &msgWrite1, 1, 500);
- delay(5);
- }
- byte readEEPROM(unsigned int address) {
- uint8 deviceaddress = 0b1010000;
- i2c_msg msgsRead[2];
- uint8 bufReadAddress[2];
- uint8 rdata = 0xFF;
- bufReadAddress[0] = (uint8)((int)(address >> 8));
- bufReadAddress[1] = (uint8)((int)(address & 0xff));
- msgsRead[0].addr = deviceaddress;
- msgsRead[0].flags = 0;
- msgsRead[0].length = 2;
- msgsRead[0].data = bufReadAddress;
- msgsRead[1].addr = deviceaddress;
- msgsRead[1].flags = I2C_MSG_READ;
- msgsRead[1].length = 1;
- msgsRead[1].data = (uint8 *)rdata;
- i2c_master_xfer(I2C1, msgsRead, 2, 500);
- return rdata;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement