Kuldip Maharjan
/
24LC256
This code does some basic stuff with an 24LC256 memory chip
main.cpp@0:4e50b868c5dc, 2014-01-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |