Simon Ford
/
Test24LC256
main.cpp@0:ebb4c3fcf4a9, 2009-09-08 (annotated)
- Committer:
- simon
- Date:
- Tue Sep 08 11:50:46 2009 +0000
- Revision:
- 0:ebb4c3fcf4a9
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
simon | 0:ebb4c3fcf4a9 | 1 | // Test24LC256 hello world example |
simon | 0:ebb4c3fcf4a9 | 2 | // Copyright (c) 2009, sford |
simon | 0:ebb4c3fcf4a9 | 3 | // Released under the MIT License: http://mbed.org/license/mit |
simon | 0:ebb4c3fcf4a9 | 4 | // |
simon | 0:ebb4c3fcf4a9 | 5 | // Does some basic stuff with an 24LC256 to show it is working |
simon | 0:ebb4c3fcf4a9 | 6 | |
simon | 0:ebb4c3fcf4a9 | 7 | #include "mbed.h" |
simon | 0:ebb4c3fcf4a9 | 8 | |
simon | 0:ebb4c3fcf4a9 | 9 | I2C i2c(p28, p27); // sda, scl |
simon | 0:ebb4c3fcf4a9 | 10 | DigitalOut wp(p29); // write protect |
simon | 0:ebb4c3fcf4a9 | 11 | |
simon | 0:ebb4c3fcf4a9 | 12 | int main() { |
simon | 0:ebb4c3fcf4a9 | 13 | |
simon | 0:ebb4c3fcf4a9 | 14 | wp = 0; // disable write protect |
simon | 0:ebb4c3fcf4a9 | 15 | |
simon | 0:ebb4c3fcf4a9 | 16 | printf("Writing bytes 0-16\n"); |
simon | 0:ebb4c3fcf4a9 | 17 | |
simon | 0:ebb4c3fcf4a9 | 18 | char data[3]; |
simon | 0:ebb4c3fcf4a9 | 19 | for(int i=0; i<16; i++) { |
simon | 0:ebb4c3fcf4a9 | 20 | data[0] = 0; // MSB address |
simon | 0:ebb4c3fcf4a9 | 21 | data[1] = i; // LSB address |
simon | 0:ebb4c3fcf4a9 | 22 | data[2] = i * 3; // data |
simon | 0:ebb4c3fcf4a9 | 23 | if(i2c.write(0xA0, data, 3)) { |
simon | 0:ebb4c3fcf4a9 | 24 | error("Write failed\n"); |
simon | 0:ebb4c3fcf4a9 | 25 | } |
simon | 0:ebb4c3fcf4a9 | 26 | while(i2c.write(0xA0, NULL, 0)); // wait to complete |
simon | 0:ebb4c3fcf4a9 | 27 | } |
simon | 0:ebb4c3fcf4a9 | 28 | |
simon | 0:ebb4c3fcf4a9 | 29 | printf("Setting read pointer to 0\n"); |
simon | 0:ebb4c3fcf4a9 | 30 | |
simon | 0:ebb4c3fcf4a9 | 31 | data[0] = 0; // MSB address |
simon | 0:ebb4c3fcf4a9 | 32 | data[1] = 0; // LSB address |
simon | 0:ebb4c3fcf4a9 | 33 | if(i2c.write(0xA0, data, 2)) { // send address, but no data |
simon | 0:ebb4c3fcf4a9 | 34 | error("Write failed\n"); |
simon | 0:ebb4c3fcf4a9 | 35 | } |
simon | 0:ebb4c3fcf4a9 | 36 | |
simon | 0:ebb4c3fcf4a9 | 37 | printf("Reading back data bytes 0-16\n"); |
simon | 0:ebb4c3fcf4a9 | 38 | |
simon | 0:ebb4c3fcf4a9 | 39 | char response[1]; |
simon | 0:ebb4c3fcf4a9 | 40 | for(int i=0; i<16; i++) { |
simon | 0:ebb4c3fcf4a9 | 41 | if(i2c.read(0xA0, response, 1)) { |
simon | 0:ebb4c3fcf4a9 | 42 | error("Read failed\n"); |
simon | 0:ebb4c3fcf4a9 | 43 | } |
simon | 0:ebb4c3fcf4a9 | 44 | printf("address %03d = 0x%02X\n", i, response[0]); |
simon | 0:ebb4c3fcf4a9 | 45 | } |
simon | 0:ebb4c3fcf4a9 | 46 | |
simon | 0:ebb4c3fcf4a9 | 47 | } |