EEPROM Multiplexer test

Dependencies:   mbed EEPROM_lib

main.cpp

Committer:
imadaemi
Date:
2021-05-23
Revision:
0:659448bed797
Child:
1:de11b189ee57

File content as of revision 0:659448bed797:

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

Serial pc(USBTX, USBRX, 230400);
I2C i2c_bus(p28, p27);
EEPROM_lib EEPROM(i2c_bus, 1);
DigitalOut pinA(p21);
DigitalOut pinB(p22);
DigitalOut pinC(p23);

void setEEPROMGroup(int group_num);

int main() {
    
    while(1) {
        if(pc.readable()){
            int c = pc.getc();
            pc.printf("Input: %c\r\n", c);
            if(c == '7'){
                break;
            }
        }
    }
    
    int ptr, n = 0;
    for(int ii = 0; ii < 2; ii ++){
        pc.printf("Start to write %d EEPROM\r\n",ii);
        setEEPROMGroup(ii);
        EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
        while(1){
            while(1){
                ptr = EEPROM.chargeBuff((int)n++);
                if(ptr == 128){
                    EEPROM.writeBuff();
                    ptr = EEPROM.setNextPage();
                    break;
                }
            }
            if(ptr == 0x01000000){
                ptr = 0;
                break;
            }
        }
    }
    
    
    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 < 2; j ++){
        pc.printf("Start to read %d EEPROM\r\n",j);
        setEEPROMGroup(j);
        for(int i = 0; i < 1024; i ++){
            switch(i){
                case 512:
                num = 1;
                block = 1;
                break;
                
                case 1024:
                num = 2;
                block = 0;
                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");
            
            if(ADDR_L == 0x00){
                ADDR_L = 0x80;
            }
            else{
                ADDR_L = 0x00;
                ADDR_H ++;
            }
        }
    }
    /*
    while(1) {
        if(pc.readable()){
            int c = pc.getc();
            pc.printf("Input: %c\r\n", c);
            setEEPROMGroup(c-48);
        }
    }
    */
}

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;
    }
}