![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
EEPROM Multiplexer test
Dependencies: mbed EEPROM_lib
main.cpp
- Committer:
- imadaemi
- Date:
- 2021-06-02
- Revision:
- 2:bd7fad3dc62e
- Parent:
- 1:de11b189ee57
File content as of revision 2:bd7fad3dc62e:
#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() { 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, n = 0; int eeprom_ptr = 0; /* // *************************************************** **Write:buff_ptrとptrを混同してるからうまくいかないプログラム // *************************************************** 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; } } } */ // *************************************************** // Write:buff_ptrとptrの混同問題を解決したあとのプログラム // *************************************************** for(int i = 0; i < 4; i++){ pc.printf("Start to write %d EEPROM\r\n", i); setEEPROMGroup(i); EEPROM.setWriteAddr(1, 0, 0x00, 0x00); while(1){ ptr = EEPROM.chargeBuff((int)n++); //ptr = EEPROM.chargeBuff((char)0xff); if(ptr == 128){ EEPROM.writeBuff(); //ptr = EEPROM.setNextPage(); eeprom_ptr = EEPROM.setNextPage(); //pc.printf("eeprom_ptr: %08x\r\n", eeprom_ptr); } if(eeprom_ptr == 0x01000000){ ptr = 0; eeprom_ptr = 0; break; } } } // *************************************************** // Read // *************************************************** 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); block = 0; ADDR_H = ADDR_L = 0x00; 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 ++; } } } // *************************************************** // 入力した数字の文字列をint型として受け取る // *************************************************** /* while(1) { if(pc.readable()){ int c = pc.getc(); pc.printf("Input: %c\r\n", c); setEEPROMGroup(c-48); } } */ } // *************************************************** // マルチプレクサで使う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; } }