Project
Dependencies: Hotboards_keypad TextLCD eeprom
Diff: i2ceeprom.cpp
- Revision:
- 1:1894419d5def
- Parent:
- 0:194ff03a2e6a
diff -r 194ff03a2e6a -r 1894419d5def i2ceeprom.cpp --- a/i2ceeprom.cpp Tue Oct 23 08:12:53 2018 +0000 +++ b/i2ceeprom.cpp Mon Sep 16 14:05:54 2019 +0000 @@ -1,19 +1,46 @@ - -// Example - -#include <string> #include "mbed.h" +#include <string> #include "eeprom.h" +#include "i2ceeprom.h" -#define EEPROM_ADDR 0x02 // I2C EEPROM address is 0x00 +#define EEPROM_ADDR 0x0 // I2c EEPROM address is 0x00 -#define SDA D14 // I2C SDA pin +#define SDA D14 // I2C SDA pin #define SCL D15 // I2C SCL pin #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) #define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) +#define MB_ID 0x00 +#define NO_OF_DEV 0x01 +#define DEV_1_ID 0x02 +#define DEV_1_ST 0x03 +#define DEV_1_VAL 0x04 +#define DEV_2_ID 0x05 +#define DEV_2_ST 0x06 +#define DEV_2_VAL 0x07 +#define DEV_3_ID 0x08 +#define DEV_3_VAL 0x09 +#define DEV_4_ID 0x0A +#define DEV_4_ST 0x0B +#define DEV_4_VAL 0x0C + +int mb_ID = 0x00; +int NOno_of_dev = 0x00; +int dev_1_id = 0x00; +int dev_1_st = 0x00; +int dev_1_val = 0x00; +int dev_2_id = 0x00; +int dev_2_st = 0x00; +int dev_2_val = 0x00; +int dev_3_id = 0x00; +int dev_3_st = 0x00; +int dev_3_val = 0x00; +int dev_4_id = 0x00; +int dev_5_st = 0x00; +int dev_6_val = 0x00; + extern float G_time; extern float Y_time; extern float R_time; @@ -34,15 +61,15 @@ void StoreCurrentMode(int32_t idata) { - EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10 + EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 eeprom_size = ep.getSize(); - max_size = MIN(eeprom_size,256); - ep.write((uint32_t)(eeprom_size - 200),(int32_t)idata); // long write at address eeprom_size - 12 + max_size = MAX(eeprom_size,256); + ep.write(10,(int32_t)idata); // long write at address eeprom_size - 12 if(ep.getError() != 0) myerror(ep.getErrorMessage()); -// printf("\n"); - ep.read((eeprom_size - 12),(int32_t&)idata); - // printf("TransDC Read %d\r\n",idata); + printf("\n"); + ep.read(10,(int32_t&)idata); +// printf("TransDC Read %d\r\n",idata); } @@ -50,25 +77,26 @@ int32_t readCurrentMode() { int32_t idata; - EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10 + EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 eeprom_size = ep.getSize(); - max_size = MIN(eeprom_size,256); - ep.read((eeprom_size - 200),(int32_t&)idata); + max_size = MAX(eeprom_size,256); + printf(" Max Size =:%d\r\n",max_size); + ep.read(10,(int32_t&)idata); if(ep.getError() != 0) myerror(ep.getErrorMessage()); -// printf("\n"); - // printf("Trans Down Count Read %d\r\n",idata); + //printf("\n"); +// printf("Trans Down Count Read %d\r\n",idata); return idata; } bool WriteCorresspondingTimes(uint32_t currentMode, float gTime,float yTime,float rTime) { - EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10 + EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 eeprom_size = ep.getSize(); - max_size = MIN(eeprom_size,256); + max_size = MAX(eeprom_size-200,256); - uint32_t addr = eeprom_size - (currentMode*12); + uint32_t addr = 100*currentMode; ep.write(addr,(float)gTime); // float write at address eeprom_size - 8 if(ep.getError() != 0) myerror(ep.getErrorMessage()); @@ -77,7 +105,7 @@ printf("\nGreen Time : (%f) :\n",gTime); - addr = eeprom_size - ((currentMode*12)-4); + addr = 100*currentMode +4; ep.write(addr,(float)yTime); // float write at address eeprom_size - 8 if(ep.getError() != 0) myerror(ep.getErrorMessage()); @@ -85,7 +113,7 @@ // Test read short, long, float printf("\nYellow Time : (%f) :\n",yTime); - addr = eeprom_size - ((currentMode*12)-8); + addr = 100*currentMode +8; ep.write(addr,(float)rTime); // float write at address eeprom_size - 8 if(ep.getError() != 0) myerror(ep.getErrorMessage()); @@ -100,32 +128,33 @@ bool ReadCorresspondingTimes(uint32_t currentMode, float *gTime,float *yTime,float *rTime) { float fdata=0.0; - EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10 + EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 eeprom_size = ep.getSize(); - max_size = MIN(eeprom_size,256); - ep.read((eeprom_size - (currentMode*12)),(float&)fdata); - + printf("Size is : %d",eeprom_size); + max_size = MAX(eeprom_size-200,256); + printf(" Here 1\r\n"); + uint32_t addr=currentMode*100; + ep.read(addr,fdata); + *gTime=fdata; + + fdata=0; + addr = 100*currentMode +4; +// ep.read((uint32_t)(max_size - ((currentMode*12)-4)),fdata); + ep.read(addr,fdata); + *yTime=fdata; + fdata=0; + addr = 100*currentMode +8; +// ep.read((uint32_t)(max_size - ((currentMode*12)-8)),fdata); +ep.read(addr,fdata); + *rTime=fdata; + printf("1 : %f\r\n",*gTime); + printf("2 : %f\r\n",*yTime); + printf("3 : %f\r\n",*rTime); + if(ep.getError() != 0) myerror(ep.getErrorMessage()); -// printf("\n"); - // printf("Trans Down Count Read %d\r\n",idata); - *gTime=fdata; - fdata=0.0; - ep.read((eeprom_size - (currentMode*12)-4),(float&)fdata); + - if(ep.getError() != 0) - myerror(ep.getErrorMessage()); -// printf("\n"); - // printf("Trans Down Count Read %d\r\n",idata); - *yTime=fdata; - fdata=0.0; - ep.read((eeprom_size - (currentMode*12)-8),(float&)fdata); - - if(ep.getError() != 0) - myerror(ep.getErrorMessage()); -// printf("\n"); - // printf("Trans Down Count Read %d\r\n",idata); - *rTime=fdata; }