EEPROMの中身を全てリセットするためのプログラム.I2C接続ピンの変更以外はそのまま実行でOK.全て0xFFで書き換える(上書き). ※注意※それまでに書き込んだ内容の復元はできません!!データのバックアップの確認をしてください.

Dependencies:   mbed EEPROM_lib

Files at this revision

API Documentation at this revision

Comitter:
Sigma884
Date:
Tue Feb 12 13:21:11 2019 +0000
Commit message:
EEPROM Reset Program

Changed in this revision

EEPROM_lib.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 7f857a8838eb EEPROM_lib.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EEPROM_lib.lib	Tue Feb 12 13:21:11 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/PQ_Hybrid_Electrical_Equipment_Team/code/EEPROM_lib/#096ff58b3f5c
diff -r 000000000000 -r 7f857a8838eb main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Feb 12 13:21:11 2019 +0000
@@ -0,0 +1,121 @@
+#include "mbed.h"
+#include "EEPROM_lib.h"
+
+Serial pc(USBTX, USBRX, 115200);
+I2C i2c_bus(p28, p27);
+
+EEPROM_lib EEPROM(i2c_bus, 4);
+
+int main() {
+    wait(1.0f);
+    
+    pc.printf("\r\n");
+    pc.printf("EEPROM Reset Program\r\n");
+    pc.printf("Please Input 'E' (large E) to Start : ");
+    while(1){
+        if(pc.getc() == 'E'){
+            pc.printf("START\r\n\n");
+            break;
+        }
+    }
+    
+    pc.printf("EEPROM Reset...");
+    EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
+    int ptr;
+    while(1){
+        while(1){
+            ptr = EEPROM.chargeBuff((char)0xFF);
+            if(ptr == 128){
+                EEPROM.writeBuff();
+                ptr = EEPROM.setNextPage();
+                //pc.printf("Page : %08x\r\n", ptr);
+                pc.printf(".");
+                break;
+            }
+        }
+        if(ptr >= 0x04000000){ 
+            break;
+        }
+    }
+    pc.printf("Complete!!\r\n");
+    
+    
+    pc.printf("Checking...");
+    wait(0.5f);
+    
+    char ADDR_H, ADDR_L;
+    int num, block;
+    char data[128];
+    int error_count = 0;
+    
+    ADDR_H = ADDR_L = 0x00;
+    num = 1;
+    block = 0;
+    
+    for(int i = 0; i < 4096; i ++){
+        switch(i){
+            case 512:
+            num = 1;
+            block = 1;
+            break;
+            
+            case 1024:
+            num = 2;
+            block = 0;
+            break;
+            
+            case 1536:
+            num = 2;
+            block = 1;
+            break;
+            
+            case 2048:
+            num = 3;
+            block = 0;
+            break;
+            
+            case 2560:
+            num = 3;
+            block = 1;
+            break;
+            
+            case 3072:
+            num = 4;
+            block = 0;
+            break;
+            
+            case 3584:
+            num = 4;
+            block = 1;
+            break;
+        }
+        
+        EEPROM.readMultiByte(num, block, ADDR_H, ADDR_L, data, 128);
+        //pc.printf("%d %01d %02x %02x\r\n", num, block, ADDR_H, ADDR_L);
+        pc.printf(".");
+        for(int x = 0; x < 128; x ++){
+            if(data[x] != 0xFF){
+                pc.printf("Error at %1d %01d %02x %02x\r\n", num, block, ADDR_H, ADDR_L+x);
+                error_count ++;
+            }
+        }
+        
+        if(ADDR_L == 0x00){
+            ADDR_L = 0x80;
+        }
+        else{
+            ADDR_L = 0x00;
+            ADDR_H ++;
+        }
+    }
+    
+    if(error_count != 0){
+        pc.printf("System find Error.\r\nPlease Check Connection and Settings.\r\n");
+    }
+    else{
+        pc.printf("Complete!!\r\nConnected EEPROM Are All Reseted.\r\n");
+    }
+    
+    while(1) {
+    }
+}
diff -r 000000000000 -r 7f857a8838eb mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Feb 12 13:21:11 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc
\ No newline at end of file