Project
Dependencies: Hotboards_keypad TextLCD eeprom
i2ceeprom.cpp@1:1894419d5def, 2019-09-16 (annotated)
- Committer:
- shivanandgowdakr
- Date:
- Mon Sep 16 14:05:54 2019 +0000
- Revision:
- 1:1894419d5def
- Parent:
- 0:194ff03a2e6a
Time Controlled Switch Display
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shivanandgowdakr | 0:194ff03a2e6a | 1 | |
shivanandgowdakr | 0:194ff03a2e6a | 2 | #include "mbed.h" |
shivanandgowdakr | 1:1894419d5def | 3 | #include <string> |
shivanandgowdakr | 0:194ff03a2e6a | 4 | #include "eeprom.h" |
shivanandgowdakr | 1:1894419d5def | 5 | #include "i2ceeprom.h" |
shivanandgowdakr | 0:194ff03a2e6a | 6 | |
shivanandgowdakr | 1:1894419d5def | 7 | #define EEPROM_ADDR 0x0 // I2c EEPROM address is 0x00 |
shivanandgowdakr | 0:194ff03a2e6a | 8 | |
shivanandgowdakr | 1:1894419d5def | 9 | #define SDA D14 // I2C SDA pin |
shivanandgowdakr | 0:194ff03a2e6a | 10 | #define SCL D15 // I2C SCL pin |
shivanandgowdakr | 0:194ff03a2e6a | 11 | |
shivanandgowdakr | 0:194ff03a2e6a | 12 | #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) |
shivanandgowdakr | 0:194ff03a2e6a | 13 | #define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) |
shivanandgowdakr | 0:194ff03a2e6a | 14 | |
shivanandgowdakr | 1:1894419d5def | 15 | #define MB_ID 0x00 |
shivanandgowdakr | 1:1894419d5def | 16 | #define NO_OF_DEV 0x01 |
shivanandgowdakr | 1:1894419d5def | 17 | #define DEV_1_ID 0x02 |
shivanandgowdakr | 1:1894419d5def | 18 | #define DEV_1_ST 0x03 |
shivanandgowdakr | 1:1894419d5def | 19 | #define DEV_1_VAL 0x04 |
shivanandgowdakr | 1:1894419d5def | 20 | #define DEV_2_ID 0x05 |
shivanandgowdakr | 1:1894419d5def | 21 | #define DEV_2_ST 0x06 |
shivanandgowdakr | 1:1894419d5def | 22 | #define DEV_2_VAL 0x07 |
shivanandgowdakr | 1:1894419d5def | 23 | #define DEV_3_ID 0x08 |
shivanandgowdakr | 1:1894419d5def | 24 | #define DEV_3_VAL 0x09 |
shivanandgowdakr | 1:1894419d5def | 25 | #define DEV_4_ID 0x0A |
shivanandgowdakr | 1:1894419d5def | 26 | #define DEV_4_ST 0x0B |
shivanandgowdakr | 1:1894419d5def | 27 | #define DEV_4_VAL 0x0C |
shivanandgowdakr | 1:1894419d5def | 28 | |
shivanandgowdakr | 1:1894419d5def | 29 | int mb_ID = 0x00; |
shivanandgowdakr | 1:1894419d5def | 30 | int NOno_of_dev = 0x00; |
shivanandgowdakr | 1:1894419d5def | 31 | int dev_1_id = 0x00; |
shivanandgowdakr | 1:1894419d5def | 32 | int dev_1_st = 0x00; |
shivanandgowdakr | 1:1894419d5def | 33 | int dev_1_val = 0x00; |
shivanandgowdakr | 1:1894419d5def | 34 | int dev_2_id = 0x00; |
shivanandgowdakr | 1:1894419d5def | 35 | int dev_2_st = 0x00; |
shivanandgowdakr | 1:1894419d5def | 36 | int dev_2_val = 0x00; |
shivanandgowdakr | 1:1894419d5def | 37 | int dev_3_id = 0x00; |
shivanandgowdakr | 1:1894419d5def | 38 | int dev_3_st = 0x00; |
shivanandgowdakr | 1:1894419d5def | 39 | int dev_3_val = 0x00; |
shivanandgowdakr | 1:1894419d5def | 40 | int dev_4_id = 0x00; |
shivanandgowdakr | 1:1894419d5def | 41 | int dev_5_st = 0x00; |
shivanandgowdakr | 1:1894419d5def | 42 | int dev_6_val = 0x00; |
shivanandgowdakr | 1:1894419d5def | 43 | |
shivanandgowdakr | 0:194ff03a2e6a | 44 | extern float G_time; |
shivanandgowdakr | 0:194ff03a2e6a | 45 | extern float Y_time; |
shivanandgowdakr | 0:194ff03a2e6a | 46 | extern float R_time; |
shivanandgowdakr | 0:194ff03a2e6a | 47 | |
shivanandgowdakr | 0:194ff03a2e6a | 48 | |
shivanandgowdakr | 0:194ff03a2e6a | 49 | int32_t eeprom_size,max_size; |
shivanandgowdakr | 0:194ff03a2e6a | 50 | typedef struct _MyData { |
shivanandgowdakr | 0:194ff03a2e6a | 51 | int16_t sdata; |
shivanandgowdakr | 0:194ff03a2e6a | 52 | int32_t idata; |
shivanandgowdakr | 0:194ff03a2e6a | 53 | float fdata; |
shivanandgowdakr | 0:194ff03a2e6a | 54 | } MyData; |
shivanandgowdakr | 0:194ff03a2e6a | 55 | |
shivanandgowdakr | 0:194ff03a2e6a | 56 | static void myerror(std::string msg) |
shivanandgowdakr | 0:194ff03a2e6a | 57 | { |
shivanandgowdakr | 0:194ff03a2e6a | 58 | printf("Error %s\n",msg.c_str()); |
shivanandgowdakr | 0:194ff03a2e6a | 59 | exit(1); |
shivanandgowdakr | 0:194ff03a2e6a | 60 | } |
shivanandgowdakr | 0:194ff03a2e6a | 61 | |
shivanandgowdakr | 0:194ff03a2e6a | 62 | void StoreCurrentMode(int32_t idata) |
shivanandgowdakr | 0:194ff03a2e6a | 63 | { |
shivanandgowdakr | 1:1894419d5def | 64 | EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 |
shivanandgowdakr | 0:194ff03a2e6a | 65 | eeprom_size = ep.getSize(); |
shivanandgowdakr | 1:1894419d5def | 66 | max_size = MAX(eeprom_size,256); |
shivanandgowdakr | 1:1894419d5def | 67 | ep.write(10,(int32_t)idata); // long write at address eeprom_size - 12 |
shivanandgowdakr | 0:194ff03a2e6a | 68 | if(ep.getError() != 0) |
shivanandgowdakr | 0:194ff03a2e6a | 69 | myerror(ep.getErrorMessage()); |
shivanandgowdakr | 1:1894419d5def | 70 | printf("\n"); |
shivanandgowdakr | 1:1894419d5def | 71 | ep.read(10,(int32_t&)idata); |
shivanandgowdakr | 1:1894419d5def | 72 | // printf("TransDC Read %d\r\n",idata); |
shivanandgowdakr | 0:194ff03a2e6a | 73 | } |
shivanandgowdakr | 0:194ff03a2e6a | 74 | |
shivanandgowdakr | 0:194ff03a2e6a | 75 | |
shivanandgowdakr | 0:194ff03a2e6a | 76 | |
shivanandgowdakr | 0:194ff03a2e6a | 77 | int32_t readCurrentMode() |
shivanandgowdakr | 0:194ff03a2e6a | 78 | { |
shivanandgowdakr | 0:194ff03a2e6a | 79 | int32_t idata; |
shivanandgowdakr | 1:1894419d5def | 80 | EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 |
shivanandgowdakr | 0:194ff03a2e6a | 81 | eeprom_size = ep.getSize(); |
shivanandgowdakr | 1:1894419d5def | 82 | max_size = MAX(eeprom_size,256); |
shivanandgowdakr | 1:1894419d5def | 83 | printf(" Max Size =:%d\r\n",max_size); |
shivanandgowdakr | 1:1894419d5def | 84 | ep.read(10,(int32_t&)idata); |
shivanandgowdakr | 0:194ff03a2e6a | 85 | |
shivanandgowdakr | 0:194ff03a2e6a | 86 | if(ep.getError() != 0) |
shivanandgowdakr | 0:194ff03a2e6a | 87 | myerror(ep.getErrorMessage()); |
shivanandgowdakr | 1:1894419d5def | 88 | //printf("\n"); |
shivanandgowdakr | 1:1894419d5def | 89 | // printf("Trans Down Count Read %d\r\n",idata); |
shivanandgowdakr | 0:194ff03a2e6a | 90 | return idata; |
shivanandgowdakr | 0:194ff03a2e6a | 91 | } |
shivanandgowdakr | 0:194ff03a2e6a | 92 | |
shivanandgowdakr | 0:194ff03a2e6a | 93 | bool WriteCorresspondingTimes(uint32_t currentMode, float gTime,float yTime,float rTime) |
shivanandgowdakr | 0:194ff03a2e6a | 94 | { |
shivanandgowdakr | 1:1894419d5def | 95 | EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 |
shivanandgowdakr | 0:194ff03a2e6a | 96 | eeprom_size = ep.getSize(); |
shivanandgowdakr | 1:1894419d5def | 97 | max_size = MAX(eeprom_size-200,256); |
shivanandgowdakr | 0:194ff03a2e6a | 98 | |
shivanandgowdakr | 1:1894419d5def | 99 | uint32_t addr = 100*currentMode; |
shivanandgowdakr | 0:194ff03a2e6a | 100 | ep.write(addr,(float)gTime); // float write at address eeprom_size - 8 |
shivanandgowdakr | 0:194ff03a2e6a | 101 | if(ep.getError() != 0) |
shivanandgowdakr | 0:194ff03a2e6a | 102 | myerror(ep.getErrorMessage()); |
shivanandgowdakr | 0:194ff03a2e6a | 103 | |
shivanandgowdakr | 0:194ff03a2e6a | 104 | // Test read short, long, float |
shivanandgowdakr | 0:194ff03a2e6a | 105 | printf("\nGreen Time : (%f) :\n",gTime); |
shivanandgowdakr | 0:194ff03a2e6a | 106 | |
shivanandgowdakr | 0:194ff03a2e6a | 107 | |
shivanandgowdakr | 1:1894419d5def | 108 | addr = 100*currentMode +4; |
shivanandgowdakr | 0:194ff03a2e6a | 109 | ep.write(addr,(float)yTime); // float write at address eeprom_size - 8 |
shivanandgowdakr | 0:194ff03a2e6a | 110 | if(ep.getError() != 0) |
shivanandgowdakr | 0:194ff03a2e6a | 111 | myerror(ep.getErrorMessage()); |
shivanandgowdakr | 0:194ff03a2e6a | 112 | |
shivanandgowdakr | 0:194ff03a2e6a | 113 | // Test read short, long, float |
shivanandgowdakr | 0:194ff03a2e6a | 114 | printf("\nYellow Time : (%f) :\n",yTime); |
shivanandgowdakr | 0:194ff03a2e6a | 115 | |
shivanandgowdakr | 1:1894419d5def | 116 | addr = 100*currentMode +8; |
shivanandgowdakr | 0:194ff03a2e6a | 117 | ep.write(addr,(float)rTime); // float write at address eeprom_size - 8 |
shivanandgowdakr | 0:194ff03a2e6a | 118 | if(ep.getError() != 0) |
shivanandgowdakr | 0:194ff03a2e6a | 119 | myerror(ep.getErrorMessage()); |
shivanandgowdakr | 0:194ff03a2e6a | 120 | |
shivanandgowdakr | 0:194ff03a2e6a | 121 | // Test read short, long, float |
shivanandgowdakr | 0:194ff03a2e6a | 122 | printf("\nRed Time : (%f) :\n",rTime); |
shivanandgowdakr | 0:194ff03a2e6a | 123 | |
shivanandgowdakr | 0:194ff03a2e6a | 124 | |
shivanandgowdakr | 0:194ff03a2e6a | 125 | } |
shivanandgowdakr | 0:194ff03a2e6a | 126 | |
shivanandgowdakr | 0:194ff03a2e6a | 127 | |
shivanandgowdakr | 0:194ff03a2e6a | 128 | bool ReadCorresspondingTimes(uint32_t currentMode, float *gTime,float *yTime,float *rTime) |
shivanandgowdakr | 0:194ff03a2e6a | 129 | { |
shivanandgowdakr | 0:194ff03a2e6a | 130 | float fdata=0.0; |
shivanandgowdakr | 1:1894419d5def | 131 | EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 |
shivanandgowdakr | 0:194ff03a2e6a | 132 | eeprom_size = ep.getSize(); |
shivanandgowdakr | 1:1894419d5def | 133 | printf("Size is : %d",eeprom_size); |
shivanandgowdakr | 1:1894419d5def | 134 | max_size = MAX(eeprom_size-200,256); |
shivanandgowdakr | 1:1894419d5def | 135 | printf(" Here 1\r\n"); |
shivanandgowdakr | 1:1894419d5def | 136 | uint32_t addr=currentMode*100; |
shivanandgowdakr | 1:1894419d5def | 137 | ep.read(addr,fdata); |
shivanandgowdakr | 1:1894419d5def | 138 | *gTime=fdata; |
shivanandgowdakr | 1:1894419d5def | 139 | |
shivanandgowdakr | 1:1894419d5def | 140 | fdata=0; |
shivanandgowdakr | 1:1894419d5def | 141 | addr = 100*currentMode +4; |
shivanandgowdakr | 1:1894419d5def | 142 | // ep.read((uint32_t)(max_size - ((currentMode*12)-4)),fdata); |
shivanandgowdakr | 1:1894419d5def | 143 | ep.read(addr,fdata); |
shivanandgowdakr | 1:1894419d5def | 144 | *yTime=fdata; |
shivanandgowdakr | 1:1894419d5def | 145 | fdata=0; |
shivanandgowdakr | 1:1894419d5def | 146 | addr = 100*currentMode +8; |
shivanandgowdakr | 1:1894419d5def | 147 | // ep.read((uint32_t)(max_size - ((currentMode*12)-8)),fdata); |
shivanandgowdakr | 1:1894419d5def | 148 | ep.read(addr,fdata); |
shivanandgowdakr | 1:1894419d5def | 149 | *rTime=fdata; |
shivanandgowdakr | 1:1894419d5def | 150 | printf("1 : %f\r\n",*gTime); |
shivanandgowdakr | 1:1894419d5def | 151 | printf("2 : %f\r\n",*yTime); |
shivanandgowdakr | 1:1894419d5def | 152 | printf("3 : %f\r\n",*rTime); |
shivanandgowdakr | 1:1894419d5def | 153 | |
shivanandgowdakr | 0:194ff03a2e6a | 154 | if(ep.getError() != 0) |
shivanandgowdakr | 0:194ff03a2e6a | 155 | myerror(ep.getErrorMessage()); |
shivanandgowdakr | 1:1894419d5def | 156 | |
shivanandgowdakr | 0:194ff03a2e6a | 157 | |
shivanandgowdakr | 0:194ff03a2e6a | 158 | } |
shivanandgowdakr | 0:194ff03a2e6a | 159 | |
shivanandgowdakr | 0:194ff03a2e6a | 160 | |
shivanandgowdakr | 0:194ff03a2e6a | 161 | |
shivanandgowdakr | 0:194ff03a2e6a | 162 | void Last_Saved_Mode() |
shivanandgowdakr | 0:194ff03a2e6a | 163 | { |
shivanandgowdakr | 0:194ff03a2e6a | 164 | //float Gtime=0,Ytime=0, Rtime=0; |
shivanandgowdakr | 0:194ff03a2e6a | 165 | int32_t CurrentMode= readCurrentMode(); |
shivanandgowdakr | 0:194ff03a2e6a | 166 | bool flag= ReadCorresspondingTimes( CurrentMode, &G_time,&Y_time, &R_time); |
shivanandgowdakr | 0:194ff03a2e6a | 167 | } |