Project

Dependencies:   Hotboards_keypad TextLCD eeprom

Revision:
0:194ff03a2e6a
Child:
1:1894419d5def
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/i2ceeprom.cpp	Tue Oct 23 08:12:53 2018 +0000
@@ -0,0 +1,138 @@
+
+
+// Example
+
+#include <string>
+#include "mbed.h"
+#include "eeprom.h"
+
+#define EEPROM_ADDR 0x02   // I2C EEPROM address is 0x00
+
+#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))
+
+extern float G_time;
+extern float Y_time;
+extern float R_time;
+
+
+int32_t eeprom_size,max_size;
+typedef struct _MyData {
+                         int16_t sdata;
+                         int32_t idata;
+                         float fdata;
+                       } MyData;
+
+static void myerror(std::string msg)
+{
+  printf("Error %s\n",msg.c_str());
+  exit(1);
+}
+
+void StoreCurrentMode(int32_t idata)
+{
+  EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128);  // 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
+  if(ep.getError() != 0)
+    myerror(ep.getErrorMessage());
+//    printf("\n");    
+    ep.read((eeprom_size - 12),(int32_t&)idata);
+   // printf("TransDC Read %d\r\n",idata);
+}
+
+
+
+int32_t readCurrentMode()
+{
+  int32_t idata;
+  EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128);  // 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);
+ 
+ if(ep.getError() != 0)
+    myerror(ep.getErrorMessage());
+//    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_size = ep.getSize();
+  max_size =  MIN(eeprom_size,256);
+  
+    uint32_t addr = eeprom_size - (currentMode*12);
+  ep.write(addr,(float)gTime); // float write at address eeprom_size - 8
+  if(ep.getError() != 0)
+    myerror(ep.getErrorMessage());
+  
+  // Test read short, long, float
+  printf("\nGreen Time : (%f) :\n",gTime);  
+ 
+  
+  addr = eeprom_size - ((currentMode*12)-4);
+  ep.write(addr,(float)yTime); // float write at address eeprom_size - 8
+  if(ep.getError() != 0)
+    myerror(ep.getErrorMessage());
+  
+  // Test read short, long, float
+  printf("\nYellow Time : (%f) :\n",yTime);  
+  
+     addr = eeprom_size - ((currentMode*12)-8);
+  ep.write(addr,(float)rTime); // float write at address eeprom_size - 8
+  if(ep.getError() != 0)
+    myerror(ep.getErrorMessage());
+  
+  // Test read short, long, float
+  printf("\nRed Time : (%f) :\n",rTime);  
+
+
+}
+
+
+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_size = ep.getSize();
+  max_size = MIN(eeprom_size,256);
+ ep.read((eeprom_size - (currentMode*12)),(float&)fdata);
+
+ 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; 
+}
+
+
+
+void Last_Saved_Mode()
+{
+  //float Gtime=0,Ytime=0, Rtime=0;
+  int32_t CurrentMode= readCurrentMode();  
+  bool flag= ReadCorresspondingTimes( CurrentMode, &G_time,&Y_time, &R_time);   
+}
\ No newline at end of file