This code does some basic stuff with an 24LC256 memory chip

Dependencies:   mbed

Committer:
kuldipmaharjan
Date:
Wed Jan 08 00:39:28 2014 +0000
Revision:
0:4e50b868c5dc
This code does some basic stuff with an 24LC256 memory chip

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kuldipmaharjan 0:4e50b868c5dc 1 //Author: Kuldip Maharjan
kuldipmaharjan 0:4e50b868c5dc 2 //Email : kuldipmaharjan@gmail.com
kuldipmaharjan 0:4e50b868c5dc 3 //Anyone can use this code if it helps in their projects or
kuldipmaharjan 0:4e50b868c5dc 4 //for learning programing in mbed besides for commercial purposes
kuldipmaharjan 0:4e50b868c5dc 5
kuldipmaharjan 0:4e50b868c5dc 6
kuldipmaharjan 0:4e50b868c5dc 7 // This code does some basic stuff with an 24LC256 memory chip
kuldipmaharjan 0:4e50b868c5dc 8
kuldipmaharjan 0:4e50b868c5dc 9 #include "mbed.h"
kuldipmaharjan 0:4e50b868c5dc 10
kuldipmaharjan 0:4e50b868c5dc 11 I2C i2c(p28, p27); // sda, scl
kuldipmaharjan 0:4e50b868c5dc 12 //DigitalOut wp(p29); // write protect
kuldipmaharjan 0:4e50b868c5dc 13
kuldipmaharjan 0:4e50b868c5dc 14 int main()
kuldipmaharjan 0:4e50b868c5dc 15 {
kuldipmaharjan 0:4e50b868c5dc 16 //wp = 0; // disable write protect
kuldipmaharjan 0:4e50b868c5dc 17 printf("Writing bytes 0-16\n");
kuldipmaharjan 0:4e50b868c5dc 18
kuldipmaharjan 0:4e50b868c5dc 19 char data[3];
kuldipmaharjan 0:4e50b868c5dc 20 for(int i=0; i<16; i++) {
kuldipmaharjan 0:4e50b868c5dc 21 data[0] = 0; // MSB address
kuldipmaharjan 0:4e50b868c5dc 22 data[1] = i; // LSB address
kuldipmaharjan 0:4e50b868c5dc 23 data[2] = i * 3; // data
kuldipmaharjan 0:4e50b868c5dc 24 if(i2c.write(0xA0, data, 3)) {
kuldipmaharjan 0:4e50b868c5dc 25 error("Write failed\n");
kuldipmaharjan 0:4e50b868c5dc 26 }
kuldipmaharjan 0:4e50b868c5dc 27 while(i2c.write(0xA0, NULL, 0)); // wait to complete
kuldipmaharjan 0:4e50b868c5dc 28 }
kuldipmaharjan 0:4e50b868c5dc 29
kuldipmaharjan 0:4e50b868c5dc 30 data[0] = 0; // MSB address
kuldipmaharjan 0:4e50b868c5dc 31 data[1] = 255; // LSB address
kuldipmaharjan 0:4e50b868c5dc 32 data[2] = 'A'; // data
kuldipmaharjan 0:4e50b868c5dc 33 if(i2c.write(0xA0, data, 3)) {
kuldipmaharjan 0:4e50b868c5dc 34 error("Write failed\n");
kuldipmaharjan 0:4e50b868c5dc 35 }
kuldipmaharjan 0:4e50b868c5dc 36 while(i2c.write(0xA0, NULL, 0)); // wait to complete
kuldipmaharjan 0:4e50b868c5dc 37
kuldipmaharjan 0:4e50b868c5dc 38 printf("Setting read pointer to 0\n");
kuldipmaharjan 0:4e50b868c5dc 39
kuldipmaharjan 0:4e50b868c5dc 40 data[0] = 0; // MSB address
kuldipmaharjan 0:4e50b868c5dc 41 data[1] = 0; // LSB address
kuldipmaharjan 0:4e50b868c5dc 42 if(i2c.write(0xA0, data, 2)) { // send address, but no data
kuldipmaharjan 0:4e50b868c5dc 43 error("Write failed\n");
kuldipmaharjan 0:4e50b868c5dc 44 }
kuldipmaharjan 0:4e50b868c5dc 45
kuldipmaharjan 0:4e50b868c5dc 46 printf("Reading back data bytes 0-16\n");
kuldipmaharjan 0:4e50b868c5dc 47
kuldipmaharjan 0:4e50b868c5dc 48 char response[1];
kuldipmaharjan 0:4e50b868c5dc 49 for(int i=0; i<256; i++) {
kuldipmaharjan 0:4e50b868c5dc 50 if(i2c.read(0xA0, response, 1)) {
kuldipmaharjan 0:4e50b868c5dc 51 error("Read failed\n");
kuldipmaharjan 0:4e50b868c5dc 52 }
kuldipmaharjan 0:4e50b868c5dc 53 printf("address %03d = 0x%02X\n", i, response[0]);
kuldipmaharjan 0:4e50b868c5dc 54 }
kuldipmaharjan 0:4e50b868c5dc 55
kuldipmaharjan 0:4e50b868c5dc 56 }