memory read and write

Dependencies:   eeprom mbed

Committer:
sameera0824
Date:
Tue Feb 07 14:08:37 2017 +0000
Revision:
0:af6898dbc5ab
eep read and write

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sameera0824 0:af6898dbc5ab 1 #include "mbed.h"
sameera0824 0:af6898dbc5ab 2 #include <string>
sameera0824 0:af6898dbc5ab 3 #include "eeprom.h"
sameera0824 0:af6898dbc5ab 4
sameera0824 0:af6898dbc5ab 5
sameera0824 0:af6898dbc5ab 6 #define EEPROM_ADDR 0x0 // I2c EEPROM address is 0x00
sameera0824 0:af6898dbc5ab 7
sameera0824 0:af6898dbc5ab 8 #define SDA p9 // I2C SDA pin
sameera0824 0:af6898dbc5ab 9 #define SCL p10 // I2C SCL pin
sameera0824 0:af6898dbc5ab 10
sameera0824 0:af6898dbc5ab 11 #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
sameera0824 0:af6898dbc5ab 12 #define MAX(X,Y) ((X) > (Y) ? (X) : (Y))
sameera0824 0:af6898dbc5ab 13
sameera0824 0:af6898dbc5ab 14 #define MB_ID 0x00
sameera0824 0:af6898dbc5ab 15 #define NO_OF_DEV 0x01
sameera0824 0:af6898dbc5ab 16 #define DEV_1_ID 0x02
sameera0824 0:af6898dbc5ab 17 #define DEV_1_ST 0x03
sameera0824 0:af6898dbc5ab 18 #define DEV_1_VAL 0x04
sameera0824 0:af6898dbc5ab 19 #define DEV_2_ID 0x05
sameera0824 0:af6898dbc5ab 20 #define DEV_2_ST 0x06
sameera0824 0:af6898dbc5ab 21 #define DEV_2_VAL 0x07
sameera0824 0:af6898dbc5ab 22 #define DEV_3_ID 0x08
sameera0824 0:af6898dbc5ab 23 #define DEV_3_VAL 0x09
sameera0824 0:af6898dbc5ab 24 #define DEV_4_ID 0x0A
sameera0824 0:af6898dbc5ab 25 #define DEV_4_ST 0x0B
sameera0824 0:af6898dbc5ab 26 #define DEV_4_VAL 0x0C
sameera0824 0:af6898dbc5ab 27
sameera0824 0:af6898dbc5ab 28 int mb_ID = 0x00;
sameera0824 0:af6898dbc5ab 29 int NOno_of_dev = 0x00;
sameera0824 0:af6898dbc5ab 30 int dev_1_id = 0x00;
sameera0824 0:af6898dbc5ab 31 int dev_1_st = 0x00;
sameera0824 0:af6898dbc5ab 32 int dev_1_val = 0x00;
sameera0824 0:af6898dbc5ab 33 int dev_2_id = 0x00;
sameera0824 0:af6898dbc5ab 34 int dev_2_st = 0x00;
sameera0824 0:af6898dbc5ab 35 int dev_2_val = 0x00;
sameera0824 0:af6898dbc5ab 36 int dev_3_id = 0x00;
sameera0824 0:af6898dbc5ab 37 int dev_3_st = 0x00;
sameera0824 0:af6898dbc5ab 38 int dev_3_val = 0x00;
sameera0824 0:af6898dbc5ab 39 int dev_4_id = 0x00;
sameera0824 0:af6898dbc5ab 40 int dev_5_st = 0x00;
sameera0824 0:af6898dbc5ab 41 int dev_6_val = 0x00;
sameera0824 0:af6898dbc5ab 42
sameera0824 0:af6898dbc5ab 43
sameera0824 0:af6898dbc5ab 44 typedef struct _MyData {
sameera0824 0:af6898dbc5ab 45 int16_t sdata;
sameera0824 0:af6898dbc5ab 46 int32_t idata;
sameera0824 0:af6898dbc5ab 47 float fdata;
sameera0824 0:af6898dbc5ab 48 } MyData;
sameera0824 0:af6898dbc5ab 49
sameera0824 0:af6898dbc5ab 50
sameera0824 0:af6898dbc5ab 51 //static void myerror(std::string msg)
sameera0824 0:af6898dbc5ab 52 //{
sameera0824 0:af6898dbc5ab 53 // printf("Error %s\n",msg.c_str());
sameera0824 0:af6898dbc5ab 54 // exit(1);
sameera0824 0:af6898dbc5ab 55 //}
sameera0824 0:af6898dbc5ab 56
sameera0824 0:af6898dbc5ab 57 int ID_Map(int8_t id)
sameera0824 0:af6898dbc5ab 58 {
sameera0824 0:af6898dbc5ab 59 int return_val =0;
sameera0824 0:af6898dbc5ab 60
sameera0824 0:af6898dbc5ab 61 if (id == 0x01) //ethernet
sameera0824 0:af6898dbc5ab 62 return_val=DEV_1_ID;
sameera0824 0:af6898dbc5ab 63
sameera0824 0:af6898dbc5ab 64 else if (id == 0x02) //CAN
sameera0824 0:af6898dbc5ab 65 return_val=DEV_2_ID;
sameera0824 0:af6898dbc5ab 66
sameera0824 0:af6898dbc5ab 67 else if (id ==0x03) //tem
sameera0824 0:af6898dbc5ab 68 return_val=DEV_3_ID;
sameera0824 0:af6898dbc5ab 69
sameera0824 0:af6898dbc5ab 70 else if (id == 0x04) //aceslometer
sameera0824 0:af6898dbc5ab 71 return_val=DEV_3_ID;
sameera0824 0:af6898dbc5ab 72
sameera0824 0:af6898dbc5ab 73 else
sameera0824 0:af6898dbc5ab 74 return_val= -1;
sameera0824 0:af6898dbc5ab 75
sameera0824 0:af6898dbc5ab 76 return return_val;
sameera0824 0:af6898dbc5ab 77 }
sameera0824 0:af6898dbc5ab 78
sameera0824 0:af6898dbc5ab 79 bool healthWrite( int8_t id, int8_t status, int8_t val)
sameera0824 0:af6898dbc5ab 80 {
sameera0824 0:af6898dbc5ab 81 EEPROM eep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10
sameera0824 0:af6898dbc5ab 82 int8_t add = ID_Map(id);
sameera0824 0:af6898dbc5ab 83 bool return_val = false;
sameera0824 0:af6898dbc5ab 84 if (add == 0)
sameera0824 0:af6898dbc5ab 85 {
sameera0824 0:af6898dbc5ab 86 printf("\r\n EEPROM not working..!!!");
sameera0824 0:af6898dbc5ab 87 return_val = false;
sameera0824 0:af6898dbc5ab 88 }
sameera0824 0:af6898dbc5ab 89 else if (add == -1)
sameera0824 0:af6898dbc5ab 90 {
sameera0824 0:af6898dbc5ab 91 printf("\r\n Wrong Memory address..!!!");
sameera0824 0:af6898dbc5ab 92 return_val = false;
sameera0824 0:af6898dbc5ab 93 }
sameera0824 0:af6898dbc5ab 94 else
sameera0824 0:af6898dbc5ab 95 {
sameera0824 0:af6898dbc5ab 96
sameera0824 0:af6898dbc5ab 97 eep.write(add,id);
sameera0824 0:af6898dbc5ab 98 if(eep.getError() != 0)
sameera0824 0:af6898dbc5ab 99 return_val = false;
sameera0824 0:af6898dbc5ab 100 else
sameera0824 0:af6898dbc5ab 101 return_val = true;
sameera0824 0:af6898dbc5ab 102
sameera0824 0:af6898dbc5ab 103 eep.write(add+1,status);
sameera0824 0:af6898dbc5ab 104 if(eep.getError() != 0)
sameera0824 0:af6898dbc5ab 105 return_val = false;
sameera0824 0:af6898dbc5ab 106 else
sameera0824 0:af6898dbc5ab 107 return_val = true;
sameera0824 0:af6898dbc5ab 108
sameera0824 0:af6898dbc5ab 109 eep.write(add+2,val);
sameera0824 0:af6898dbc5ab 110 if(eep.getError() != 0)
sameera0824 0:af6898dbc5ab 111 return_val = false;
sameera0824 0:af6898dbc5ab 112 else
sameera0824 0:af6898dbc5ab 113 return_val = true;
sameera0824 0:af6898dbc5ab 114 }
sameera0824 0:af6898dbc5ab 115
sameera0824 0:af6898dbc5ab 116 //printf("\r\n Memory \r\n");
sameera0824 0:af6898dbc5ab 117 //printf("\r\n %3d \r\n",i);
sameera0824 0:af6898dbc5ab 118 //printf("\r\n Value is \r\n");
sameera0824 0:af6898dbc5ab 119 //printf("\r\n %3d \r\n",ival);
sameera0824 0:af6898dbc5ab 120
sameera0824 0:af6898dbc5ab 121 return return_val;
sameera0824 0:af6898dbc5ab 122 }
sameera0824 0:af6898dbc5ab 123
sameera0824 0:af6898dbc5ab 124 int healthReadStatus( int8_t id)
sameera0824 0:af6898dbc5ab 125 {
sameera0824 0:af6898dbc5ab 126 EEPROM eep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10
sameera0824 0:af6898dbc5ab 127 int8_t add = ID_Map(id);
sameera0824 0:af6898dbc5ab 128 int return_val = -1;
sameera0824 0:af6898dbc5ab 129 int8_t Status;
sameera0824 0:af6898dbc5ab 130 if (add == 0)
sameera0824 0:af6898dbc5ab 131 {
sameera0824 0:af6898dbc5ab 132 printf("\r\n EEPROM not working..!!!");
sameera0824 0:af6898dbc5ab 133 return_val = -1;
sameera0824 0:af6898dbc5ab 134 }
sameera0824 0:af6898dbc5ab 135 else if (add == -1)
sameera0824 0:af6898dbc5ab 136 {
sameera0824 0:af6898dbc5ab 137 printf("\r\n Wrong Memory address..!!!");
sameera0824 0:af6898dbc5ab 138 return_val = -1;
sameera0824 0:af6898dbc5ab 139 }
sameera0824 0:af6898dbc5ab 140 else
sameera0824 0:af6898dbc5ab 141 {
sameera0824 0:af6898dbc5ab 142 eep.read(add+1,Status);
sameera0824 0:af6898dbc5ab 143 if (eep.getError() != 0)
sameera0824 0:af6898dbc5ab 144 return_val = -1;
sameera0824 0:af6898dbc5ab 145
sameera0824 0:af6898dbc5ab 146 else return_val=Status;
sameera0824 0:af6898dbc5ab 147 }
sameera0824 0:af6898dbc5ab 148 return return_val;
sameera0824 0:af6898dbc5ab 149
sameera0824 0:af6898dbc5ab 150 }
sameera0824 0:af6898dbc5ab 151 int healthReadValue( int8_t id)
sameera0824 0:af6898dbc5ab 152 {
sameera0824 0:af6898dbc5ab 153 EEPROM eep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10
sameera0824 0:af6898dbc5ab 154 int8_t add = ID_Map(id);
sameera0824 0:af6898dbc5ab 155 int8_t val;
sameera0824 0:af6898dbc5ab 156 int8_t return_val = -1;
sameera0824 0:af6898dbc5ab 157 if (add == 0)
sameera0824 0:af6898dbc5ab 158 {
sameera0824 0:af6898dbc5ab 159 printf("\r\n EEPROM not working..!!!");
sameera0824 0:af6898dbc5ab 160 return_val = -1;
sameera0824 0:af6898dbc5ab 161 }
sameera0824 0:af6898dbc5ab 162 else if (add == -1)
sameera0824 0:af6898dbc5ab 163 {
sameera0824 0:af6898dbc5ab 164 printf("\r\n Wrong Memory address request..!!!");
sameera0824 0:af6898dbc5ab 165 return_val = -1;
sameera0824 0:af6898dbc5ab 166 }
sameera0824 0:af6898dbc5ab 167 else
sameera0824 0:af6898dbc5ab 168 {
sameera0824 0:af6898dbc5ab 169 eep.read(add+2,val);
sameera0824 0:af6898dbc5ab 170 if(eep.getError() != 0)
sameera0824 0:af6898dbc5ab 171 return_val = -1;
sameera0824 0:af6898dbc5ab 172
sameera0824 0:af6898dbc5ab 173 else
sameera0824 0:af6898dbc5ab 174 return_val = val;
sameera0824 0:af6898dbc5ab 175
sameera0824 0:af6898dbc5ab 176 }
sameera0824 0:af6898dbc5ab 177 return return_val;
sameera0824 0:af6898dbc5ab 178 }
sameera0824 0:af6898dbc5ab 179
sameera0824 0:af6898dbc5ab 180 int main() {
sameera0824 0:af6898dbc5ab 181 EEPROM eep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10
sameera0824 0:af6898dbc5ab 182 //uint8_t data[256],data_r[256];
sameera0824 0:af6898dbc5ab 183 //int8_t ival;
sameera0824 0:af6898dbc5ab 184 //uint16_t s;
sameera0824 0:af6898dbc5ab 185 //int16_t sdata,sdata_r;
sameera0824 0:af6898dbc5ab 186 //int32_t ldata[1024];
sameera0824 0:af6898dbc5ab 187 int32_t max_size,eeprom_size;
sameera0824 0:af6898dbc5ab 188 //uint32_t addr;
sameera0824 0:af6898dbc5ab 189 //int32_t idata,idata_r;
sameera0824 0:af6898dbc5ab 190 //uint32_t i; //,j,k,l,t,id;
sameera0824 0:af6898dbc5ab 191 //float fdata,fdata_r;
sameera0824 0:af6898dbc5ab 192 //MyData md,md_r;
sameera0824 0:af6898dbc5ab 193
sameera0824 0:af6898dbc5ab 194 eeprom_size = eep.getSize();
sameera0824 0:af6898dbc5ab 195 max_size = MIN(eeprom_size,256);
sameera0824 0:af6898dbc5ab 196
sameera0824 0:af6898dbc5ab 197 printf("\r\n Test EEPROM I2C model %s of %d bytes\r\n",eep.getName(),eeprom_size);
sameera0824 0:af6898dbc5ab 198
sameera0824 0:af6898dbc5ab 199 int8_t id =0x02;
sameera0824 0:af6898dbc5ab 200
sameera0824 0:af6898dbc5ab 201 //healthWrite( int8_t id, int8_t status, int8_t val)
sameera0824 0:af6898dbc5ab 202 bool helthW = healthWrite( id ,0x01, 0x05);
sameera0824 0:af6898dbc5ab 203
sameera0824 0:af6898dbc5ab 204 if (helthW == true)
sameera0824 0:af6898dbc5ab 205 {
sameera0824 0:af6898dbc5ab 206 printf("\r\n helth write successfull \r\n");
sameera0824 0:af6898dbc5ab 207 }
sameera0824 0:af6898dbc5ab 208 else
sameera0824 0:af6898dbc5ab 209 {
sameera0824 0:af6898dbc5ab 210 printf("\r\n helth write NOT successfull\r\n");
sameera0824 0:af6898dbc5ab 211 }
sameera0824 0:af6898dbc5ab 212 ///////////////////////////////////////////////////////////////////////
sameera0824 0:af6898dbc5ab 213 int helthRS = healthReadStatus(id);
sameera0824 0:af6898dbc5ab 214
sameera0824 0:af6898dbc5ab 215 if (helthRS == -1)
sameera0824 0:af6898dbc5ab 216 {
sameera0824 0:af6898dbc5ab 217 printf("\r\n helth read NOT successfull...!!! \r\n");
sameera0824 0:af6898dbc5ab 218 }
sameera0824 0:af6898dbc5ab 219 else
sameera0824 0:af6898dbc5ab 220 {
sameera0824 0:af6898dbc5ab 221 printf("\r\n device %X Status %X \r\n",id,helthRS);
sameera0824 0:af6898dbc5ab 222 }
sameera0824 0:af6898dbc5ab 223 /////////////////////////////////////////////////////////////////////
sameera0824 0:af6898dbc5ab 224 int helthRV = healthReadValue(id);
sameera0824 0:af6898dbc5ab 225 if (helthRV == -1)
sameera0824 0:af6898dbc5ab 226 {
sameera0824 0:af6898dbc5ab 227 printf("\r\n helth read NOT successfull...!!! \r\n");
sameera0824 0:af6898dbc5ab 228 }
sameera0824 0:af6898dbc5ab 229 else
sameera0824 0:af6898dbc5ab 230 {
sameera0824 0:af6898dbc5ab 231 printf("\r\n device %X Value %X \r\n",id, helthRV);
sameera0824 0:af6898dbc5ab 232 }
sameera0824 0:af6898dbc5ab 233 //////////////////////////////////////////////////////////////////
sameera0824 0:af6898dbc5ab 234 //
sameera0824 0:af6898dbc5ab 235 // i=2;
sameera0824 0:af6898dbc5ab 236 //
sameera0824 0:af6898dbc5ab 237 // eep.read(i,ival);
sameera0824 0:af6898dbc5ab 238 // if(eep.getError() != 0)
sameera0824 0:af6898dbc5ab 239 // myerror(eep.getErrorMessage());
sameera0824 0:af6898dbc5ab 240 //
sameera0824 0:af6898dbc5ab 241 // printf("\r\n Memory \r\n");
sameera0824 0:af6898dbc5ab 242 // printf("\r\n %3d \r\n",i);
sameera0824 0:af6898dbc5ab 243 // printf("\r\n Value is \r\n");
sameera0824 0:af6898dbc5ab 244 // printf("\r\n %3d \r\n",ival);
sameera0824 0:af6898dbc5ab 245 //
sameera0824 0:af6898dbc5ab 246 // ival = 3;
sameera0824 0:af6898dbc5ab 247 //
sameera0824 0:af6898dbc5ab 248 // eep.write(i,ival);
sameera0824 0:af6898dbc5ab 249 // if(eep.getError() != 0)
sameera0824 0:af6898dbc5ab 250 // myerror(eep.getErrorMessage());
sameera0824 0:af6898dbc5ab 251 //
sameera0824 0:af6898dbc5ab 252 // printf("\r\n Memory \r\n");
sameera0824 0:af6898dbc5ab 253 // printf("\r\n %3d \r\n",i);
sameera0824 0:af6898dbc5ab 254 // printf("\r\n Value is \r\n");
sameera0824 0:af6898dbc5ab 255 // printf("\r\n %3d \r\n",ival);
sameera0824 0:af6898dbc5ab 256
sameera0824 0:af6898dbc5ab 257
sameera0824 0:af6898dbc5ab 258 while(1) {
sameera0824 0:af6898dbc5ab 259
sameera0824 0:af6898dbc5ab 260 }
sameera0824 0:af6898dbc5ab 261 }