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

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //Author: Kuldip Maharjan
00002 //Email : kuldipmaharjan@gmail.com
00003 //Anyone can use this code if it helps in their projects or 
00004 //for learning programing in mbed besides for commercial purposes
00005 
00006 
00007 // This code does some basic stuff with an 24LC256 memory chip
00008 
00009 #include "mbed.h"
00010 
00011 I2C i2c(p28, p27);  // sda, scl
00012 //DigitalOut wp(p29); // write protect
00013 
00014 int main()
00015 {
00016     //wp = 0; // disable write protect
00017     printf("Writing bytes 0-16\n");
00018 
00019     char data[3];
00020     for(int i=0; i<16; i++) {
00021         data[0] = 0;     // MSB address
00022         data[1] = i;     // LSB address
00023         data[2] = i * 3; // data
00024         if(i2c.write(0xA0, data, 3)) {
00025             error("Write failed\n");
00026         }
00027         while(i2c.write(0xA0, NULL, 0)); // wait to complete
00028     }
00029 
00030     data[0] = 0;       // MSB address
00031     data[1] = 255;     // LSB address
00032     data[2] = 'A';     // data
00033     if(i2c.write(0xA0, data, 3)) {
00034         error("Write failed\n");
00035     }
00036     while(i2c.write(0xA0, NULL, 0)); // wait to complete
00037 
00038     printf("Setting read pointer to 0\n");
00039 
00040     data[0] = 0;                   // MSB address
00041     data[1] = 0;                   // LSB address
00042     if(i2c.write(0xA0, data, 2)) { // send address, but no data
00043         error("Write failed\n");
00044     }
00045 
00046     printf("Reading back data bytes 0-16\n");
00047     
00048     char response[1];
00049     for(int i=0; i<256; i++) {
00050         if(i2c.read(0xA0, response, 1)) {
00051             error("Read failed\n");
00052         }
00053         printf("address %03d = 0x%02X\n", i, response[0]);
00054     }
00055 
00056 }