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 BufferedSerial ConfigFile
ROBOFRIEN_SUB_FUNC/eeprom.h@1:9530746906b6, 2018-11-28 (annotated)
- Committer:
- skyyoungsik
- Date:
- Wed Nov 28 13:06:23 2018 +0000
- Revision:
- 1:9530746906b6
- Parent:
- 0:3473b92e991e
test1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
skyyoungsik | 1:9530746906b6 | 1 | #define eeprom_length 255 |
skyyoungsik | 0:3473b92e991e | 2 | |
skyyoungsik | 0:3473b92e991e | 3 | |
skyyoungsik | 0:3473b92e991e | 4 | LocalFileSystem local("local"); // Create the local filesystem under the name "local" |
skyyoungsik | 0:3473b92e991e | 5 | |
skyyoungsik | 0:3473b92e991e | 6 | volatile int eeprom_address[eeprom_length],eeprom_data[eeprom_length]; |
skyyoungsik | 0:3473b92e991e | 7 | void eeprom_init(){ |
skyyoungsik | 1:9530746906b6 | 8 | int eeprom_chksum; |
skyyoungsik | 0:3473b92e991e | 9 | FILE *file = fopen("/local/eeprom.txt", "r"); // Open "out.txt" on the local file system for writing |
skyyoungsik | 0:3473b92e991e | 10 | if(file == NULL){ |
skyyoungsik | 0:3473b92e991e | 11 | FILE *file = fopen("/local/eeprom.txt", "w"); // Write "out.txt ~~// |
skyyoungsik | 0:3473b92e991e | 12 | for(int i=0; i<eeprom_length; i++){ |
skyyoungsik | 0:3473b92e991e | 13 | fprintf(file, "%d\t%d\r\n", i, 0); |
skyyoungsik | 1:9530746906b6 | 14 | wait(0.0001); |
skyyoungsik | 0:3473b92e991e | 15 | } |
skyyoungsik | 0:3473b92e991e | 16 | }else{ |
skyyoungsik | 0:3473b92e991e | 17 | for(int i=0; i<eeprom_length; i++) {eeprom_address[i] = 0; eeprom_data[i] = 0; } |
skyyoungsik | 0:3473b92e991e | 18 | for(int i=0; i<eeprom_length; i++){ |
skyyoungsik | 0:3473b92e991e | 19 | fscanf(file,"%d\t%d\r\n",&eeprom_address[i], &eeprom_data[i]); |
skyyoungsik | 1:9530746906b6 | 20 | wait(0.0001); |
skyyoungsik | 1:9530746906b6 | 21 | } |
skyyoungsik | 1:9530746906b6 | 22 | int tmp; |
skyyoungsik | 1:9530746906b6 | 23 | fscanf(file,"%d\t%d\t\n",&tmp, &eeprom_chksum); |
skyyoungsik | 0:3473b92e991e | 24 | } |
skyyoungsik | 0:3473b92e991e | 25 | fclose(file); |
skyyoungsik | 1:9530746906b6 | 26 | int cal_eeprom_chksum = 0; |
skyyoungsik | 1:9530746906b6 | 27 | for(int i=0; i<eeprom_length; i++){ |
skyyoungsik | 1:9530746906b6 | 28 | cal_eeprom_chksum += eeprom_data[i]; |
skyyoungsik | 1:9530746906b6 | 29 | } |
skyyoungsik | 1:9530746906b6 | 30 | if( cal_eeprom_chksum != eeprom_chksum){ |
skyyoungsik | 1:9530746906b6 | 31 | while(1){ |
skyyoungsik | 1:9530746906b6 | 32 | DigitalOut myled1(LED1); |
skyyoungsik | 1:9530746906b6 | 33 | DigitalOut myled2(LED2); |
skyyoungsik | 1:9530746906b6 | 34 | DigitalOut myled3(LED3); |
skyyoungsik | 1:9530746906b6 | 35 | DigitalOut myled4(LED4); |
skyyoungsik | 1:9530746906b6 | 36 | myled1 = 1; myled2 = 1; myled3 = 1; myled4 = 1; |
skyyoungsik | 1:9530746906b6 | 37 | wait(1); |
skyyoungsik | 1:9530746906b6 | 38 | myled1 = 0; myled2 = 0; myled3 = 0; myled4 = 0; |
skyyoungsik | 1:9530746906b6 | 39 | wait(1); |
skyyoungsik | 1:9530746906b6 | 40 | } |
skyyoungsik | 1:9530746906b6 | 41 | } |
skyyoungsik | 0:3473b92e991e | 42 | } |
skyyoungsik | 0:3473b92e991e | 43 | |
skyyoungsik | 1:9530746906b6 | 44 | bool eeprom_refresh(){ |
skyyoungsik | 0:3473b92e991e | 45 | /// Write Data to EEPROM // |
skyyoungsik | 1:9530746906b6 | 46 | bool OUTPUT_VALUE = false; |
skyyoungsik | 1:9530746906b6 | 47 | int eeprom_chksum = 0; |
skyyoungsik | 1:9530746906b6 | 48 | __disable_irq(); |
skyyoungsik | 0:3473b92e991e | 49 | FILE *file = fopen("/local/eeprom.txt", "w"); // Open "out.txt" on the local file system for writing |
skyyoungsik | 1:9530746906b6 | 50 | // if(file != NULL){ |
skyyoungsik | 1:9530746906b6 | 51 | OUTPUT_VALUE = true; |
skyyoungsik | 1:9530746906b6 | 52 | for(int i=0; i<eeprom_length; i++){ |
skyyoungsik | 1:9530746906b6 | 53 | fprintf(file,"%d\t%d\r\n",i, eeprom_data[i]); |
skyyoungsik | 1:9530746906b6 | 54 | wait(0.0001); |
skyyoungsik | 1:9530746906b6 | 55 | eeprom_chksum += eeprom_data[i]; |
skyyoungsik | 1:9530746906b6 | 56 | } |
skyyoungsik | 1:9530746906b6 | 57 | fprintf(file,"%d\t%d",eeprom_length,eeprom_chksum); |
skyyoungsik | 1:9530746906b6 | 58 | // } |
skyyoungsik | 1:9530746906b6 | 59 | fclose(file); |
skyyoungsik | 1:9530746906b6 | 60 | __enable_irq(); |
skyyoungsik | 1:9530746906b6 | 61 | return OUTPUT_VALUE; |
skyyoungsik | 0:3473b92e991e | 62 | } |
skyyoungsik | 0:3473b92e991e | 63 | |
skyyoungsik | 0:3473b92e991e | 64 | void eeprom_write(int addr, int data){ |
skyyoungsik | 0:3473b92e991e | 65 | /// Change Data // |
skyyoungsik | 0:3473b92e991e | 66 | eeprom_data[addr] = data; |
skyyoungsik | 0:3473b92e991e | 67 | } |
skyyoungsik | 0:3473b92e991e | 68 | |
skyyoungsik | 0:3473b92e991e | 69 | |
skyyoungsik | 0:3473b92e991e | 70 | int eeprom_read(int addr){ |
skyyoungsik | 0:3473b92e991e | 71 | return eeprom_data[addr]; |
skyyoungsik | 0:3473b92e991e | 72 | |
skyyoungsik | 0:3473b92e991e | 73 | } |
skyyoungsik | 0:3473b92e991e | 74 |