Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@1:8ded5dafc62c, 2020-06-21 (annotated)
- Committer:
- sasakisho
- Date:
- Sun Jun 21 01:37:56 2020 +0000
- Revision:
- 1:8ded5dafc62c
- Parent:
- 0:14e4f511a1bd
version1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| sasakisho | 0:14e4f511a1bd | 1 | #include "mbed.h" |
| sasakisho | 0:14e4f511a1bd | 2 | |
| sasakisho | 0:14e4f511a1bd | 3 | I2C i2c(p9, p10); |
| sasakisho | 0:14e4f511a1bd | 4 | Serial pc(USBTX, USBRX); |
| sasakisho | 0:14e4f511a1bd | 5 | |
| sasakisho | 0:14e4f511a1bd | 6 | #define ADDR 0xA0 |
| sasakisho | 0:14e4f511a1bd | 7 | |
| sasakisho | 0:14e4f511a1bd | 8 | int pointerAdddress = 0; |
| sasakisho | 0:14e4f511a1bd | 9 | char s[10]; |
| sasakisho | 0:14e4f511a1bd | 10 | |
| sasakisho | 0:14e4f511a1bd | 11 | |
| sasakisho | 0:14e4f511a1bd | 12 | // this function has 63 bytes write limit |
| sasakisho | 1:8ded5dafc62c | 13 | void EEPROM_write(char address, unsigned int eeaddress, char *data, int size) |
| sasakisho | 0:14e4f511a1bd | 14 | { |
| sasakisho | 0:14e4f511a1bd | 15 | char i2cBuffer[size + 2]; |
| sasakisho | 0:14e4f511a1bd | 16 | i2cBuffer[0] = (unsigned char)(eeaddress >> 8); // MSB |
| sasakisho | 0:14e4f511a1bd | 17 | i2cBuffer[1] = (unsigned char)(eeaddress & 0xFF00); // LSB |
| sasakisho | 0:14e4f511a1bd | 18 | |
| sasakisho | 0:14e4f511a1bd | 19 | for (int i = 0; i < size; i++) { |
| sasakisho | 0:14e4f511a1bd | 20 | i2cBuffer[i + 2] = data[i]; |
| sasakisho | 0:14e4f511a1bd | 21 | } |
| sasakisho | 0:14e4f511a1bd | 22 | |
| sasakisho | 0:14e4f511a1bd | 23 | int result = i2c.write(ADDR, i2cBuffer, size + 2); |
| sasakisho | 0:14e4f511a1bd | 24 | wait_ms(6); |
| sasakisho | 0:14e4f511a1bd | 25 | } |
| sasakisho | 0:14e4f511a1bd | 26 | |
| sasakisho | 0:14e4f511a1bd | 27 | // this function has no read limit |
| sasakisho | 1:8ded5dafc62c | 28 | void EEPROM_read(char address, unsigned int eeaddress, char *data, int size) |
| sasakisho | 0:14e4f511a1bd | 29 | { |
| sasakisho | 0:14e4f511a1bd | 30 | char i2cBuffer[2]; |
| sasakisho | 0:14e4f511a1bd | 31 | i2cBuffer[0] = (unsigned char)(eeaddress >> 8); // MSB |
| sasakisho | 0:14e4f511a1bd | 32 | i2cBuffer[1] = (unsigned char)(eeaddress & 0xFF00); // LSB |
| sasakisho | 0:14e4f511a1bd | 33 | |
| sasakisho | 0:14e4f511a1bd | 34 | // Reset eeprom pointer address |
| sasakisho | 0:14e4f511a1bd | 35 | int result = i2c.write(ADDR, i2cBuffer, 2); |
| sasakisho | 0:14e4f511a1bd | 36 | wait_ms(6); |
| sasakisho | 0:14e4f511a1bd | 37 | |
| sasakisho | 0:14e4f511a1bd | 38 | // Read eeprom |
| sasakisho | 0:14e4f511a1bd | 39 | i2c.read(ADDR, data, size); |
| sasakisho | 0:14e4f511a1bd | 40 | wait_ms(6); |
| sasakisho | 0:14e4f511a1bd | 41 | } |
| sasakisho | 0:14e4f511a1bd | 42 | |
| sasakisho | 0:14e4f511a1bd | 43 | int main() |
| sasakisho | 0:14e4f511a1bd | 44 | { |
| sasakisho | 0:14e4f511a1bd | 45 | int i, length; |
| sasakisho | 0:14e4f511a1bd | 46 | char data_read[1]; |
| sasakisho | 1:8ded5dafc62c | 47 | EEPROM_read(ADDR, pointerAdddress, data_read, 1); |
| sasakisho | 0:14e4f511a1bd | 48 | pc.printf("Previous data stored: %s\n", data_read); |
| sasakisho | 0:14e4f511a1bd | 49 | |
| sasakisho | 0:14e4f511a1bd | 50 | while(1) |
| sasakisho | 0:14e4f511a1bd | 51 | { |
| sasakisho | 1:8ded5dafc62c | 52 | |
| sasakisho | 1:8ded5dafc62c | 53 | s[0] = 'a'; |
| sasakisho | 0:14e4f511a1bd | 54 | |
| sasakisho | 0:14e4f511a1bd | 55 | // write tha data |
| sasakisho | 1:8ded5dafc62c | 56 | EEPROM_write(ADDR, pointerAdddress, s, 1); |
| sasakisho | 0:14e4f511a1bd | 57 | pc.printf("Data written: %s\n", s); |
| sasakisho | 0:14e4f511a1bd | 58 | |
| sasakisho | 0:14e4f511a1bd | 59 | // read the data |
| sasakisho | 1:8ded5dafc62c | 60 | EEPROM_read(ADDR, pointerAdddress, data_read, 1); |
| sasakisho | 0:14e4f511a1bd | 61 | pc.printf("Data read: %s\n", data_read); |
| sasakisho | 0:14e4f511a1bd | 62 | |
| sasakisho | 0:14e4f511a1bd | 63 | wait(1); |
| sasakisho | 0:14e4f511a1bd | 64 | } |
| sasakisho | 0:14e4f511a1bd | 65 | |
| sasakisho | 0:14e4f511a1bd | 66 | } |