EEPROM Multiplexer test
Dependencies: mbed EEPROM_lib
Diff: main.cpp
- Revision:
- 0:659448bed797
- Child:
- 1:de11b189ee57
diff -r 000000000000 -r 659448bed797 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun May 23 06:46:00 2021 +0000 @@ -0,0 +1,125 @@ +#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; + } +}