Read EEPROM Program for OB2021

Dependencies:   mbed EEPROM_lib

main.cpp

Committer:
imadaemi
Date:
2021-08-08
Revision:
0:a74bb96348b9

File content as of revision 0:a74bb96348b9:

#include "mbed.h"
#include "EEPROM_lib.h"

// ***************************************************
// コンストラクタ
// ***************************************************
Serial pc(USBTX, USBRX, 230400);
I2C i2c_bus(p28, p27);

EEPROM_lib EEPROM(i2c_bus, 4);

DigitalOut pinA(p21);
DigitalOut pinB(p22);
DigitalOut pinC(p23);

// ***************************************************
// 関数の宣言
// ***************************************************
void setEEPROMGroup(int group_num);

// ***************************************************
// メイン関数
// ***************************************************
int main() {
    pc.printf("Please Input '7' to Start Progeam\r\n");
    
    while(1) {
        if(pc.readable()){
            int c = pc.getc();
            pc.printf("Input: %c\r\n", c);
            if(c == '7'){
                break;
            }
        }
    }
    
    /*
    int ptr;
    float n = 0;
    int eeprom_ptr = 0;
    */
    
    char data[128];
    int num, block;
    char ADDR_H, ADDR_L;
    
    num = 1;
    //block = 0;
    //ADDR_H = ADDR_L = 0x00;
    
    //setEEPROMGroup(0);
    for(int j = 0; j < 4; j ++){
        pc.printf("Start to read %d EEPROM\r\n",j);
        
        setEEPROMGroup(j);
        num = 1;
        block = 0;
        ADDR_H = ADDR_L = 0x00;
        
        for(int i = 0; i < 4096; i ++){
            switch(i){
                case 512:
                num = 1;
                block = 1;
                /*
                pc.printf("********************\r\n");
                pc.printf("num : %d, block %d\r\n",num,block);
                pc.printf("********************\r\n");
                */
                break;
                
                case 1024:
                num = 2;
                block = 0;
                /*
                pc.printf("********************\r\n");
                pc.printf("num : %d, block %d\r\n",num,block);
                pc.printf("********************\r\n");
                */
                break;
                
                case 1536:
                num = 2;
                block = 1;
                /*
                pc.printf("********************\r\n");
                pc.printf("num : %d, block %d\r\n",num,block);
                pc.printf("********************\r\n");
                */
                break;
                
                case 2048:
                num = 3;
                block = 0;
                /*
                pc.printf("********************\r\n");
                pc.printf("num : %d, block %d\r\n",num,block);
                pc.printf("********************\r\n");
                */
                break;
                
                case 2560:
                num = 3;
                block = 1;
                /*
                pc.printf("********************\r\n");
                pc.printf("num : %d, block %d\r\n",num,block);
                pc.printf("********************\r\n");
                */
                break;
                
                case 3072:
                num = 4;
                block = 0;
                /*
                pc.printf("********************\r\n");
                pc.printf("num : %d, block %d\r\n",num,block);
                pc.printf("********************\r\n");
                */
                break;
                
                case 3584:
                num = 4;
                block = 1;
                /*
                pc.printf("********************\r\n");
                pc.printf("num : %d, block %d\r\n",num,block);
                pc.printf("********************\r\n");
                */
                break;
                
            }
            
            EEPROM.readMultiByte(num, block, ADDR_H, ADDR_L, data, 128);
            /*
            for(int x = 0; x < 128; x ++){
                pc.printf("%02x ", data[x]);
            }
            pc.printf("\r\n");
            */
            int eep_buf = 0;
            
            float eep_data_f;
            int eep_data_i;
            char eep_data_c;
            
            eep_data_c = *reinterpret_cast<char*>(&data[eep_buf]);
            eep_buf += 1;
            pc.printf("%d ", eep_data_c);
            
            eep_data_i = *reinterpret_cast<int*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%d ", eep_data_i);
            
            //eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            //eep_buf += 4;
            //pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_c = *reinterpret_cast<char*>(&data[eep_buf]);
            eep_buf += 1;
            pc.printf("%d ", eep_data_c);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_f = *reinterpret_cast<float*>(&data[eep_buf]);
            eep_buf += 4;
            pc.printf("%f ", eep_data_f);
            
            eep_data_c = *reinterpret_cast<char*>(&data[eep_buf]);
            eep_buf += 1;
            pc.printf("%d ", eep_data_c);
            
            eep_data_c = *reinterpret_cast<char*>(&data[eep_buf]);
            eep_buf += 1;
            pc.printf("%d ", eep_data_c);
            
            eep_data_c = *reinterpret_cast<char*>(&data[eep_buf]);
            eep_buf += 1;
            pc.printf("%d ", eep_data_c); 
            
            pc.printf("\r\n"); 
            
            if(ADDR_L == 0x00){
                ADDR_L = 0x80;
            }
            else{
                ADDR_L = 0x00;
                ADDR_H ++;
            }
        }
    }
}

// ***************************************************
// マルチプレクサで使うEEPROMを変更する
// ***************************************************
void setEEPROMGroup(int group_num){
    switch(group_num){
        case 0:
        pinA = 0;
        pinB = 0;
        pinC = 0;
        break;
        
        case 1:
        pinA = 1;
        pinB = 0;
        pinC = 0;
        break;
        
        case 2:
        pinA = 0;
        pinB = 1;
        pinC = 0;
        break;
        
        case 3:
        pinA = 1;
        pinB = 1;
        pinC = 0;
        break;
    }
}