EEPROMの中身を全てリセットするためのプログラム.I2C接続ピンの変更以外はそのまま実行でOK.全て0xFFで書き換える(上書き). ※注意※それまでに書き込んだ内容の復元はできません!!データのバックアップの確認をしてください.
Dependencies: mbed EEPROM_lib
main.cpp@0:7f857a8838eb, 2019-02-12 (annotated)
- Committer:
- Sigma884
- Date:
- Tue Feb 12 13:21:11 2019 +0000
- Revision:
- 0:7f857a8838eb
EEPROM Reset Program
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sigma884 | 0:7f857a8838eb | 1 | #include "mbed.h" |
Sigma884 | 0:7f857a8838eb | 2 | #include "EEPROM_lib.h" |
Sigma884 | 0:7f857a8838eb | 3 | |
Sigma884 | 0:7f857a8838eb | 4 | Serial pc(USBTX, USBRX, 115200); |
Sigma884 | 0:7f857a8838eb | 5 | I2C i2c_bus(p28, p27); |
Sigma884 | 0:7f857a8838eb | 6 | |
Sigma884 | 0:7f857a8838eb | 7 | EEPROM_lib EEPROM(i2c_bus, 4); |
Sigma884 | 0:7f857a8838eb | 8 | |
Sigma884 | 0:7f857a8838eb | 9 | int main() { |
Sigma884 | 0:7f857a8838eb | 10 | wait(1.0f); |
Sigma884 | 0:7f857a8838eb | 11 | |
Sigma884 | 0:7f857a8838eb | 12 | pc.printf("\r\n"); |
Sigma884 | 0:7f857a8838eb | 13 | pc.printf("EEPROM Reset Program\r\n"); |
Sigma884 | 0:7f857a8838eb | 14 | pc.printf("Please Input 'E' (large E) to Start : "); |
Sigma884 | 0:7f857a8838eb | 15 | while(1){ |
Sigma884 | 0:7f857a8838eb | 16 | if(pc.getc() == 'E'){ |
Sigma884 | 0:7f857a8838eb | 17 | pc.printf("START\r\n\n"); |
Sigma884 | 0:7f857a8838eb | 18 | break; |
Sigma884 | 0:7f857a8838eb | 19 | } |
Sigma884 | 0:7f857a8838eb | 20 | } |
Sigma884 | 0:7f857a8838eb | 21 | |
Sigma884 | 0:7f857a8838eb | 22 | pc.printf("EEPROM Reset..."); |
Sigma884 | 0:7f857a8838eb | 23 | EEPROM.setWriteAddr(1, 0, 0x00, 0x00); |
Sigma884 | 0:7f857a8838eb | 24 | int ptr; |
Sigma884 | 0:7f857a8838eb | 25 | while(1){ |
Sigma884 | 0:7f857a8838eb | 26 | while(1){ |
Sigma884 | 0:7f857a8838eb | 27 | ptr = EEPROM.chargeBuff((char)0xFF); |
Sigma884 | 0:7f857a8838eb | 28 | if(ptr == 128){ |
Sigma884 | 0:7f857a8838eb | 29 | EEPROM.writeBuff(); |
Sigma884 | 0:7f857a8838eb | 30 | ptr = EEPROM.setNextPage(); |
Sigma884 | 0:7f857a8838eb | 31 | //pc.printf("Page : %08x\r\n", ptr); |
Sigma884 | 0:7f857a8838eb | 32 | pc.printf("."); |
Sigma884 | 0:7f857a8838eb | 33 | break; |
Sigma884 | 0:7f857a8838eb | 34 | } |
Sigma884 | 0:7f857a8838eb | 35 | } |
Sigma884 | 0:7f857a8838eb | 36 | if(ptr >= 0x04000000){ |
Sigma884 | 0:7f857a8838eb | 37 | break; |
Sigma884 | 0:7f857a8838eb | 38 | } |
Sigma884 | 0:7f857a8838eb | 39 | } |
Sigma884 | 0:7f857a8838eb | 40 | pc.printf("Complete!!\r\n"); |
Sigma884 | 0:7f857a8838eb | 41 | |
Sigma884 | 0:7f857a8838eb | 42 | |
Sigma884 | 0:7f857a8838eb | 43 | pc.printf("Checking..."); |
Sigma884 | 0:7f857a8838eb | 44 | wait(0.5f); |
Sigma884 | 0:7f857a8838eb | 45 | |
Sigma884 | 0:7f857a8838eb | 46 | char ADDR_H, ADDR_L; |
Sigma884 | 0:7f857a8838eb | 47 | int num, block; |
Sigma884 | 0:7f857a8838eb | 48 | char data[128]; |
Sigma884 | 0:7f857a8838eb | 49 | int error_count = 0; |
Sigma884 | 0:7f857a8838eb | 50 | |
Sigma884 | 0:7f857a8838eb | 51 | ADDR_H = ADDR_L = 0x00; |
Sigma884 | 0:7f857a8838eb | 52 | num = 1; |
Sigma884 | 0:7f857a8838eb | 53 | block = 0; |
Sigma884 | 0:7f857a8838eb | 54 | |
Sigma884 | 0:7f857a8838eb | 55 | for(int i = 0; i < 4096; i ++){ |
Sigma884 | 0:7f857a8838eb | 56 | switch(i){ |
Sigma884 | 0:7f857a8838eb | 57 | case 512: |
Sigma884 | 0:7f857a8838eb | 58 | num = 1; |
Sigma884 | 0:7f857a8838eb | 59 | block = 1; |
Sigma884 | 0:7f857a8838eb | 60 | break; |
Sigma884 | 0:7f857a8838eb | 61 | |
Sigma884 | 0:7f857a8838eb | 62 | case 1024: |
Sigma884 | 0:7f857a8838eb | 63 | num = 2; |
Sigma884 | 0:7f857a8838eb | 64 | block = 0; |
Sigma884 | 0:7f857a8838eb | 65 | break; |
Sigma884 | 0:7f857a8838eb | 66 | |
Sigma884 | 0:7f857a8838eb | 67 | case 1536: |
Sigma884 | 0:7f857a8838eb | 68 | num = 2; |
Sigma884 | 0:7f857a8838eb | 69 | block = 1; |
Sigma884 | 0:7f857a8838eb | 70 | break; |
Sigma884 | 0:7f857a8838eb | 71 | |
Sigma884 | 0:7f857a8838eb | 72 | case 2048: |
Sigma884 | 0:7f857a8838eb | 73 | num = 3; |
Sigma884 | 0:7f857a8838eb | 74 | block = 0; |
Sigma884 | 0:7f857a8838eb | 75 | break; |
Sigma884 | 0:7f857a8838eb | 76 | |
Sigma884 | 0:7f857a8838eb | 77 | case 2560: |
Sigma884 | 0:7f857a8838eb | 78 | num = 3; |
Sigma884 | 0:7f857a8838eb | 79 | block = 1; |
Sigma884 | 0:7f857a8838eb | 80 | break; |
Sigma884 | 0:7f857a8838eb | 81 | |
Sigma884 | 0:7f857a8838eb | 82 | case 3072: |
Sigma884 | 0:7f857a8838eb | 83 | num = 4; |
Sigma884 | 0:7f857a8838eb | 84 | block = 0; |
Sigma884 | 0:7f857a8838eb | 85 | break; |
Sigma884 | 0:7f857a8838eb | 86 | |
Sigma884 | 0:7f857a8838eb | 87 | case 3584: |
Sigma884 | 0:7f857a8838eb | 88 | num = 4; |
Sigma884 | 0:7f857a8838eb | 89 | block = 1; |
Sigma884 | 0:7f857a8838eb | 90 | break; |
Sigma884 | 0:7f857a8838eb | 91 | } |
Sigma884 | 0:7f857a8838eb | 92 | |
Sigma884 | 0:7f857a8838eb | 93 | EEPROM.readMultiByte(num, block, ADDR_H, ADDR_L, data, 128); |
Sigma884 | 0:7f857a8838eb | 94 | //pc.printf("%d %01d %02x %02x\r\n", num, block, ADDR_H, ADDR_L); |
Sigma884 | 0:7f857a8838eb | 95 | pc.printf("."); |
Sigma884 | 0:7f857a8838eb | 96 | for(int x = 0; x < 128; x ++){ |
Sigma884 | 0:7f857a8838eb | 97 | if(data[x] != 0xFF){ |
Sigma884 | 0:7f857a8838eb | 98 | pc.printf("Error at %1d %01d %02x %02x\r\n", num, block, ADDR_H, ADDR_L+x); |
Sigma884 | 0:7f857a8838eb | 99 | error_count ++; |
Sigma884 | 0:7f857a8838eb | 100 | } |
Sigma884 | 0:7f857a8838eb | 101 | } |
Sigma884 | 0:7f857a8838eb | 102 | |
Sigma884 | 0:7f857a8838eb | 103 | if(ADDR_L == 0x00){ |
Sigma884 | 0:7f857a8838eb | 104 | ADDR_L = 0x80; |
Sigma884 | 0:7f857a8838eb | 105 | } |
Sigma884 | 0:7f857a8838eb | 106 | else{ |
Sigma884 | 0:7f857a8838eb | 107 | ADDR_L = 0x00; |
Sigma884 | 0:7f857a8838eb | 108 | ADDR_H ++; |
Sigma884 | 0:7f857a8838eb | 109 | } |
Sigma884 | 0:7f857a8838eb | 110 | } |
Sigma884 | 0:7f857a8838eb | 111 | |
Sigma884 | 0:7f857a8838eb | 112 | if(error_count != 0){ |
Sigma884 | 0:7f857a8838eb | 113 | pc.printf("System find Error.\r\nPlease Check Connection and Settings.\r\n"); |
Sigma884 | 0:7f857a8838eb | 114 | } |
Sigma884 | 0:7f857a8838eb | 115 | else{ |
Sigma884 | 0:7f857a8838eb | 116 | pc.printf("Complete!!\r\nConnected EEPROM Are All Reseted.\r\n"); |
Sigma884 | 0:7f857a8838eb | 117 | } |
Sigma884 | 0:7f857a8838eb | 118 | |
Sigma884 | 0:7f857a8838eb | 119 | while(1) { |
Sigma884 | 0:7f857a8838eb | 120 | } |
Sigma884 | 0:7f857a8838eb | 121 | } |