Project

Dependencies:   Hotboards_keypad TextLCD eeprom

Committer:
shivanandgowdakr
Date:
Tue Oct 23 08:12:53 2018 +0000
Revision:
0:194ff03a2e6a
Child:
1:1894419d5def
HI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shivanandgowdakr 0:194ff03a2e6a 1
shivanandgowdakr 0:194ff03a2e6a 2
shivanandgowdakr 0:194ff03a2e6a 3 // Example
shivanandgowdakr 0:194ff03a2e6a 4
shivanandgowdakr 0:194ff03a2e6a 5 #include <string>
shivanandgowdakr 0:194ff03a2e6a 6 #include "mbed.h"
shivanandgowdakr 0:194ff03a2e6a 7 #include "eeprom.h"
shivanandgowdakr 0:194ff03a2e6a 8
shivanandgowdakr 0:194ff03a2e6a 9 #define EEPROM_ADDR 0x02 // I2C EEPROM address is 0x00
shivanandgowdakr 0:194ff03a2e6a 10
shivanandgowdakr 0:194ff03a2e6a 11 #define SDA D14 // I2C SDA pin
shivanandgowdakr 0:194ff03a2e6a 12 #define SCL D15 // I2C SCL pin
shivanandgowdakr 0:194ff03a2e6a 13
shivanandgowdakr 0:194ff03a2e6a 14 #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
shivanandgowdakr 0:194ff03a2e6a 15 #define MAX(X,Y) ((X) > (Y) ? (X) : (Y))
shivanandgowdakr 0:194ff03a2e6a 16
shivanandgowdakr 0:194ff03a2e6a 17 extern float G_time;
shivanandgowdakr 0:194ff03a2e6a 18 extern float Y_time;
shivanandgowdakr 0:194ff03a2e6a 19 extern float R_time;
shivanandgowdakr 0:194ff03a2e6a 20
shivanandgowdakr 0:194ff03a2e6a 21
shivanandgowdakr 0:194ff03a2e6a 22 int32_t eeprom_size,max_size;
shivanandgowdakr 0:194ff03a2e6a 23 typedef struct _MyData {
shivanandgowdakr 0:194ff03a2e6a 24 int16_t sdata;
shivanandgowdakr 0:194ff03a2e6a 25 int32_t idata;
shivanandgowdakr 0:194ff03a2e6a 26 float fdata;
shivanandgowdakr 0:194ff03a2e6a 27 } MyData;
shivanandgowdakr 0:194ff03a2e6a 28
shivanandgowdakr 0:194ff03a2e6a 29 static void myerror(std::string msg)
shivanandgowdakr 0:194ff03a2e6a 30 {
shivanandgowdakr 0:194ff03a2e6a 31 printf("Error %s\n",msg.c_str());
shivanandgowdakr 0:194ff03a2e6a 32 exit(1);
shivanandgowdakr 0:194ff03a2e6a 33 }
shivanandgowdakr 0:194ff03a2e6a 34
shivanandgowdakr 0:194ff03a2e6a 35 void StoreCurrentMode(int32_t idata)
shivanandgowdakr 0:194ff03a2e6a 36 {
shivanandgowdakr 0:194ff03a2e6a 37 EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10
shivanandgowdakr 0:194ff03a2e6a 38 eeprom_size = ep.getSize();
shivanandgowdakr 0:194ff03a2e6a 39 max_size = MIN(eeprom_size,256);
shivanandgowdakr 0:194ff03a2e6a 40 ep.write((uint32_t)(eeprom_size - 200),(int32_t)idata); // long write at address eeprom_size - 12
shivanandgowdakr 0:194ff03a2e6a 41 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 42 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 43 // printf("\n");
shivanandgowdakr 0:194ff03a2e6a 44 ep.read((eeprom_size - 12),(int32_t&)idata);
shivanandgowdakr 0:194ff03a2e6a 45 // printf("TransDC Read %d\r\n",idata);
shivanandgowdakr 0:194ff03a2e6a 46 }
shivanandgowdakr 0:194ff03a2e6a 47
shivanandgowdakr 0:194ff03a2e6a 48
shivanandgowdakr 0:194ff03a2e6a 49
shivanandgowdakr 0:194ff03a2e6a 50 int32_t readCurrentMode()
shivanandgowdakr 0:194ff03a2e6a 51 {
shivanandgowdakr 0:194ff03a2e6a 52 int32_t idata;
shivanandgowdakr 0:194ff03a2e6a 53 EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10
shivanandgowdakr 0:194ff03a2e6a 54 eeprom_size = ep.getSize();
shivanandgowdakr 0:194ff03a2e6a 55 max_size = MIN(eeprom_size,256);
shivanandgowdakr 0:194ff03a2e6a 56 ep.read((eeprom_size - 200),(int32_t&)idata);
shivanandgowdakr 0:194ff03a2e6a 57
shivanandgowdakr 0:194ff03a2e6a 58 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 59 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 60 // printf("\n");
shivanandgowdakr 0:194ff03a2e6a 61 // printf("Trans Down Count Read %d\r\n",idata);
shivanandgowdakr 0:194ff03a2e6a 62 return idata;
shivanandgowdakr 0:194ff03a2e6a 63 }
shivanandgowdakr 0:194ff03a2e6a 64
shivanandgowdakr 0:194ff03a2e6a 65 bool WriteCorresspondingTimes(uint32_t currentMode, float gTime,float yTime,float rTime)
shivanandgowdakr 0:194ff03a2e6a 66 {
shivanandgowdakr 0:194ff03a2e6a 67 EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10
shivanandgowdakr 0:194ff03a2e6a 68 eeprom_size = ep.getSize();
shivanandgowdakr 0:194ff03a2e6a 69 max_size = MIN(eeprom_size,256);
shivanandgowdakr 0:194ff03a2e6a 70
shivanandgowdakr 0:194ff03a2e6a 71 uint32_t addr = eeprom_size - (currentMode*12);
shivanandgowdakr 0:194ff03a2e6a 72 ep.write(addr,(float)gTime); // float write at address eeprom_size - 8
shivanandgowdakr 0:194ff03a2e6a 73 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 74 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 75
shivanandgowdakr 0:194ff03a2e6a 76 // Test read short, long, float
shivanandgowdakr 0:194ff03a2e6a 77 printf("\nGreen Time : (%f) :\n",gTime);
shivanandgowdakr 0:194ff03a2e6a 78
shivanandgowdakr 0:194ff03a2e6a 79
shivanandgowdakr 0:194ff03a2e6a 80 addr = eeprom_size - ((currentMode*12)-4);
shivanandgowdakr 0:194ff03a2e6a 81 ep.write(addr,(float)yTime); // float write at address eeprom_size - 8
shivanandgowdakr 0:194ff03a2e6a 82 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 83 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 84
shivanandgowdakr 0:194ff03a2e6a 85 // Test read short, long, float
shivanandgowdakr 0:194ff03a2e6a 86 printf("\nYellow Time : (%f) :\n",yTime);
shivanandgowdakr 0:194ff03a2e6a 87
shivanandgowdakr 0:194ff03a2e6a 88 addr = eeprom_size - ((currentMode*12)-8);
shivanandgowdakr 0:194ff03a2e6a 89 ep.write(addr,(float)rTime); // float write at address eeprom_size - 8
shivanandgowdakr 0:194ff03a2e6a 90 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 91 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 92
shivanandgowdakr 0:194ff03a2e6a 93 // Test read short, long, float
shivanandgowdakr 0:194ff03a2e6a 94 printf("\nRed Time : (%f) :\n",rTime);
shivanandgowdakr 0:194ff03a2e6a 95
shivanandgowdakr 0:194ff03a2e6a 96
shivanandgowdakr 0:194ff03a2e6a 97 }
shivanandgowdakr 0:194ff03a2e6a 98
shivanandgowdakr 0:194ff03a2e6a 99
shivanandgowdakr 0:194ff03a2e6a 100 bool ReadCorresspondingTimes(uint32_t currentMode, float *gTime,float *yTime,float *rTime)
shivanandgowdakr 0:194ff03a2e6a 101 {
shivanandgowdakr 0:194ff03a2e6a 102 float fdata=0.0;
shivanandgowdakr 0:194ff03a2e6a 103 EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10
shivanandgowdakr 0:194ff03a2e6a 104 eeprom_size = ep.getSize();
shivanandgowdakr 0:194ff03a2e6a 105 max_size = MIN(eeprom_size,256);
shivanandgowdakr 0:194ff03a2e6a 106 ep.read((eeprom_size - (currentMode*12)),(float&)fdata);
shivanandgowdakr 0:194ff03a2e6a 107
shivanandgowdakr 0:194ff03a2e6a 108 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 109 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 110 // printf("\n");
shivanandgowdakr 0:194ff03a2e6a 111 // printf("Trans Down Count Read %d\r\n",idata);
shivanandgowdakr 0:194ff03a2e6a 112 *gTime=fdata;
shivanandgowdakr 0:194ff03a2e6a 113 fdata=0.0;
shivanandgowdakr 0:194ff03a2e6a 114 ep.read((eeprom_size - (currentMode*12)-4),(float&)fdata);
shivanandgowdakr 0:194ff03a2e6a 115
shivanandgowdakr 0:194ff03a2e6a 116 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 117 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 118 // printf("\n");
shivanandgowdakr 0:194ff03a2e6a 119 // printf("Trans Down Count Read %d\r\n",idata);
shivanandgowdakr 0:194ff03a2e6a 120 *yTime=fdata;
shivanandgowdakr 0:194ff03a2e6a 121 fdata=0.0;
shivanandgowdakr 0:194ff03a2e6a 122 ep.read((eeprom_size - (currentMode*12)-8),(float&)fdata);
shivanandgowdakr 0:194ff03a2e6a 123
shivanandgowdakr 0:194ff03a2e6a 124 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 125 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 126 // printf("\n");
shivanandgowdakr 0:194ff03a2e6a 127 // printf("Trans Down Count Read %d\r\n",idata);
shivanandgowdakr 0:194ff03a2e6a 128 *rTime=fdata;
shivanandgowdakr 0:194ff03a2e6a 129 }
shivanandgowdakr 0:194ff03a2e6a 130
shivanandgowdakr 0:194ff03a2e6a 131
shivanandgowdakr 0:194ff03a2e6a 132
shivanandgowdakr 0:194ff03a2e6a 133 void Last_Saved_Mode()
shivanandgowdakr 0:194ff03a2e6a 134 {
shivanandgowdakr 0:194ff03a2e6a 135 //float Gtime=0,Ytime=0, Rtime=0;
shivanandgowdakr 0:194ff03a2e6a 136 int32_t CurrentMode= readCurrentMode();
shivanandgowdakr 0:194ff03a2e6a 137 bool flag= ReadCorresspondingTimes( CurrentMode, &G_time,&Y_time, &R_time);
shivanandgowdakr 0:194ff03a2e6a 138 }