1Mbit EEPROMを便利に使うためのライブラリ

Dependents:   EEPROM_Reset_Program EEPROM_Encode_Program SWAN_IZU2019_v1 Hybrid_OB2021_eeprom ... more

Committer:
Sigma884
Date:
Sun May 23 07:57:49 2021 +0000
Revision:
5:0dd9675460e6
Parent:
3:d040fa9b5bb9
Add changing "ptr" function to setWriteAddr

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sigma884 0:a945081a4a9e 1 #include "mbed.h"
Sigma884 0:a945081a4a9e 2 #include "EEPROM_lib.h"
Sigma884 0:a945081a4a9e 3
Sigma884 0:a945081a4a9e 4 EEPROM_lib::EEPROM_lib(I2C &user_i2c, int num){
Sigma884 0:a945081a4a9e 5 i2c = &user_i2c;
Sigma884 0:a945081a4a9e 6 i2c -> frequency(400000);
Sigma884 0:a945081a4a9e 7
Sigma884 0:a945081a4a9e 8 max_num = num;
Sigma884 0:a945081a4a9e 9 buff_ptr = 0;
Sigma884 0:a945081a4a9e 10 ptr[3] = ptr[2] = ptr[1] = ptr[0] = 0x00;
Sigma884 0:a945081a4a9e 11 }
Sigma884 0:a945081a4a9e 12
Sigma884 0:a945081a4a9e 13 void EEPROM_lib::writeByte(int num, int block, char ADDR_H, char ADDR_L, char DATA){
Sigma884 0:a945081a4a9e 14 if(num > max_num){
Sigma884 0:a945081a4a9e 15 return;
Sigma884 0:a945081a4a9e 16 }
Sigma884 0:a945081a4a9e 17 switch(num){
Sigma884 0:a945081a4a9e 18 case 1:
Sigma884 0:a945081a4a9e 19 slave = EEPROM_ADDR_00_0;
Sigma884 0:a945081a4a9e 20 break;
Sigma884 0:a945081a4a9e 21
Sigma884 0:a945081a4a9e 22 case 2:
Sigma884 0:a945081a4a9e 23 slave = EEPROM_ADDR_01_0;
Sigma884 0:a945081a4a9e 24 break;
Sigma884 0:a945081a4a9e 25
Sigma884 0:a945081a4a9e 26 case 3:
Sigma884 0:a945081a4a9e 27 slave = EEPROM_ADDR_10_0;
Sigma884 0:a945081a4a9e 28 break;
Sigma884 0:a945081a4a9e 29
Sigma884 0:a945081a4a9e 30 case 4:
Sigma884 0:a945081a4a9e 31 slave = EEPROM_ADDR_11_0;
Sigma884 0:a945081a4a9e 32 break;
Sigma884 0:a945081a4a9e 33 }
Sigma884 0:a945081a4a9e 34 if(block == 1){
Sigma884 0:a945081a4a9e 35 slave = slave | 0x08;
Sigma884 0:a945081a4a9e 36 }
Sigma884 0:a945081a4a9e 37 cmd[0] = ADDR_H;
Sigma884 0:a945081a4a9e 38 cmd[1] = ADDR_L;
Sigma884 0:a945081a4a9e 39 cmd[2] = DATA;
Sigma884 0:a945081a4a9e 40
Sigma884 0:a945081a4a9e 41 i2c -> write(slave, cmd, 3);
Sigma884 0:a945081a4a9e 42 wait_us(EEPROM_WAIT_US);
Sigma884 0:a945081a4a9e 43 }
Sigma884 0:a945081a4a9e 44
Sigma884 0:a945081a4a9e 45 void EEPROM_lib::writePage(int num, int block, char ADDR_H, char ADDR_L, char *DATA){
Sigma884 0:a945081a4a9e 46 if(num > max_num){
Sigma884 0:a945081a4a9e 47 return;
Sigma884 0:a945081a4a9e 48 }
Sigma884 0:a945081a4a9e 49 switch(num){
Sigma884 0:a945081a4a9e 50 case 1:
Sigma884 0:a945081a4a9e 51 slave = EEPROM_ADDR_00_0;
Sigma884 0:a945081a4a9e 52 break;
Sigma884 0:a945081a4a9e 53
Sigma884 0:a945081a4a9e 54 case 2:
Sigma884 0:a945081a4a9e 55 slave = EEPROM_ADDR_01_0;
Sigma884 0:a945081a4a9e 56 break;
Sigma884 0:a945081a4a9e 57
Sigma884 0:a945081a4a9e 58 case 3:
Sigma884 0:a945081a4a9e 59 slave = EEPROM_ADDR_10_0;
Sigma884 0:a945081a4a9e 60 break;
Sigma884 0:a945081a4a9e 61
Sigma884 0:a945081a4a9e 62 case 4:
Sigma884 0:a945081a4a9e 63 slave = EEPROM_ADDR_11_0;
Sigma884 0:a945081a4a9e 64 break;
Sigma884 0:a945081a4a9e 65 }
Sigma884 0:a945081a4a9e 66 if(block == 1){
Sigma884 0:a945081a4a9e 67 slave = slave | 0x08;
Sigma884 0:a945081a4a9e 68 }
Sigma884 0:a945081a4a9e 69 cmd[0] = ADDR_H;
Sigma884 0:a945081a4a9e 70 cmd[1] = ADDR_L;
Sigma884 0:a945081a4a9e 71 for(int i = 2; i < 130; i ++){
Sigma884 0:a945081a4a9e 72 cmd[i] = DATA[i-2];
Sigma884 0:a945081a4a9e 73 }
Sigma884 0:a945081a4a9e 74
Sigma884 0:a945081a4a9e 75 i2c -> write(slave, cmd, 130);
Sigma884 0:a945081a4a9e 76 wait_us(EEPROM_WAIT_US);
Sigma884 0:a945081a4a9e 77 }
Sigma884 0:a945081a4a9e 78
Sigma884 0:a945081a4a9e 79 void EEPROM_lib::setWriteAddr(int num, int block, char ADDR_H, char ADDR_L){
Sigma884 0:a945081a4a9e 80 if(num > max_num){
Sigma884 0:a945081a4a9e 81 return;
Sigma884 0:a945081a4a9e 82 }
Sigma884 0:a945081a4a9e 83 switch(num){
Sigma884 0:a945081a4a9e 84 case 1:
Sigma884 0:a945081a4a9e 85 slave = EEPROM_ADDR_00_0;
Sigma884 0:a945081a4a9e 86 break;
Sigma884 0:a945081a4a9e 87
Sigma884 0:a945081a4a9e 88 case 2:
Sigma884 0:a945081a4a9e 89 slave = EEPROM_ADDR_01_0;
Sigma884 0:a945081a4a9e 90 break;
Sigma884 0:a945081a4a9e 91
Sigma884 0:a945081a4a9e 92 case 3:
Sigma884 0:a945081a4a9e 93 slave = EEPROM_ADDR_10_0;
Sigma884 0:a945081a4a9e 94 break;
Sigma884 0:a945081a4a9e 95
Sigma884 0:a945081a4a9e 96 case 4:
Sigma884 0:a945081a4a9e 97 slave = EEPROM_ADDR_11_0;
Sigma884 0:a945081a4a9e 98 break;
Sigma884 0:a945081a4a9e 99 }
Sigma884 0:a945081a4a9e 100 if(block == 1){
Sigma884 0:a945081a4a9e 101 slave = slave | 0x08;
Sigma884 0:a945081a4a9e 102 }
Sigma884 0:a945081a4a9e 103 cmd[0] = ADDR_H;
Sigma884 0:a945081a4a9e 104 cmd[1] = ADDR_L;
Sigma884 5:0dd9675460e6 105
Sigma884 5:0dd9675460e6 106 ptr[0] = (char)num - 1;
Sigma884 5:0dd9675460e6 107 ptr[1] = (char)block;
Sigma884 5:0dd9675460e6 108 ptr[2] = ADDR_H;
Sigma884 5:0dd9675460e6 109 ptr[3] = ADDR_L;
Sigma884 0:a945081a4a9e 110 }
Sigma884 0:a945081a4a9e 111
Sigma884 0:a945081a4a9e 112 int EEPROM_lib::chargeBuff(char DATA){
Sigma884 0:a945081a4a9e 113 if(buff_ptr < 128){
Sigma884 0:a945081a4a9e 114 EEPROM_cast.c = DATA;
Sigma884 0:a945081a4a9e 115 cmd[buff_ptr + 2] = EEPROM_cast.cast[0];
Sigma884 0:a945081a4a9e 116
Sigma884 0:a945081a4a9e 117 buff_ptr ++;
Sigma884 0:a945081a4a9e 118 }
Sigma884 0:a945081a4a9e 119 return buff_ptr;
Sigma884 0:a945081a4a9e 120 }
Sigma884 0:a945081a4a9e 121
Sigma884 0:a945081a4a9e 122 int EEPROM_lib::chargeBuff(bool DATA){
Sigma884 0:a945081a4a9e 123 if(buff_ptr < 128){
Sigma884 0:a945081a4a9e 124 EEPROM_cast.b = DATA;
Sigma884 0:a945081a4a9e 125 cmd[buff_ptr + 2] = EEPROM_cast.cast[0];
Sigma884 0:a945081a4a9e 126
Sigma884 0:a945081a4a9e 127 buff_ptr ++;
Sigma884 0:a945081a4a9e 128 }
Sigma884 0:a945081a4a9e 129 return buff_ptr;
Sigma884 0:a945081a4a9e 130 }
Sigma884 0:a945081a4a9e 131
Sigma884 0:a945081a4a9e 132 int EEPROM_lib::chargeBuff(int DATA){
Sigma884 0:a945081a4a9e 133 if(buff_ptr < 128 - 3){
Sigma884 0:a945081a4a9e 134 EEPROM_cast.i = DATA;
Sigma884 3:d040fa9b5bb9 135 cmd[buff_ptr + 2] = EEPROM_cast.cast[0];
Sigma884 3:d040fa9b5bb9 136 cmd[buff_ptr + 3] = EEPROM_cast.cast[1];
Sigma884 3:d040fa9b5bb9 137 cmd[buff_ptr + 4] = EEPROM_cast.cast[2];
Sigma884 3:d040fa9b5bb9 138 cmd[buff_ptr + 5] = EEPROM_cast.cast[3];
Sigma884 0:a945081a4a9e 139
Sigma884 0:a945081a4a9e 140 buff_ptr += 4;
Sigma884 0:a945081a4a9e 141 }
Sigma884 0:a945081a4a9e 142 return buff_ptr;
Sigma884 0:a945081a4a9e 143 }
Sigma884 0:a945081a4a9e 144
Sigma884 0:a945081a4a9e 145 int EEPROM_lib::chargeBuff(short DATA){
Sigma884 0:a945081a4a9e 146 if(buff_ptr < 128 - 1){
Sigma884 0:a945081a4a9e 147 EEPROM_cast.s = DATA;
Sigma884 3:d040fa9b5bb9 148 cmd[buff_ptr + 2] = EEPROM_cast.cast[0];
Sigma884 3:d040fa9b5bb9 149 cmd[buff_ptr + 3] = EEPROM_cast.cast[1];
Sigma884 0:a945081a4a9e 150
Sigma884 0:a945081a4a9e 151 buff_ptr += 2;
Sigma884 0:a945081a4a9e 152 }
Sigma884 0:a945081a4a9e 153 return buff_ptr;
Sigma884 0:a945081a4a9e 154 }
Sigma884 0:a945081a4a9e 155
Sigma884 0:a945081a4a9e 156 int EEPROM_lib::chargeBuff(long long DATA){
Sigma884 0:a945081a4a9e 157 if(buff_ptr < 128 - 7){
Sigma884 0:a945081a4a9e 158 EEPROM_cast.ll = DATA;
Sigma884 3:d040fa9b5bb9 159 cmd[buff_ptr + 2] = EEPROM_cast.cast[0];
Sigma884 3:d040fa9b5bb9 160 cmd[buff_ptr + 3] = EEPROM_cast.cast[1];
Sigma884 3:d040fa9b5bb9 161 cmd[buff_ptr + 4] = EEPROM_cast.cast[2];
Sigma884 3:d040fa9b5bb9 162 cmd[buff_ptr + 5] = EEPROM_cast.cast[3];
Sigma884 3:d040fa9b5bb9 163 cmd[buff_ptr + 6] = EEPROM_cast.cast[4];
Sigma884 3:d040fa9b5bb9 164 cmd[buff_ptr + 7] = EEPROM_cast.cast[5];
Sigma884 3:d040fa9b5bb9 165 cmd[buff_ptr + 8] = EEPROM_cast.cast[6];
Sigma884 3:d040fa9b5bb9 166 cmd[buff_ptr + 9] = EEPROM_cast.cast[7];
Sigma884 0:a945081a4a9e 167
Sigma884 0:a945081a4a9e 168 buff_ptr += 8;
Sigma884 0:a945081a4a9e 169 }
Sigma884 0:a945081a4a9e 170 return buff_ptr;
Sigma884 0:a945081a4a9e 171 }
Sigma884 0:a945081a4a9e 172
Sigma884 0:a945081a4a9e 173 int EEPROM_lib::chargeBuff(float DATA){
Sigma884 0:a945081a4a9e 174 if(buff_ptr < 128 - 3){
Sigma884 0:a945081a4a9e 175 EEPROM_cast.f = DATA;
Sigma884 3:d040fa9b5bb9 176 cmd[buff_ptr + 2] = EEPROM_cast.cast[0];
Sigma884 3:d040fa9b5bb9 177 cmd[buff_ptr + 3] = EEPROM_cast.cast[1];
Sigma884 3:d040fa9b5bb9 178 cmd[buff_ptr + 4] = EEPROM_cast.cast[2];
Sigma884 3:d040fa9b5bb9 179 cmd[buff_ptr + 5] = EEPROM_cast.cast[3];
Sigma884 0:a945081a4a9e 180
Sigma884 0:a945081a4a9e 181 buff_ptr += 4;
Sigma884 0:a945081a4a9e 182 }
Sigma884 0:a945081a4a9e 183 return buff_ptr;
Sigma884 0:a945081a4a9e 184 }
Sigma884 0:a945081a4a9e 185
Sigma884 0:a945081a4a9e 186 int EEPROM_lib::chargeBuff(double DATA){
Sigma884 0:a945081a4a9e 187 if(buff_ptr < 128 - 7){
Sigma884 0:a945081a4a9e 188 EEPROM_cast.d = DATA;
Sigma884 3:d040fa9b5bb9 189 cmd[buff_ptr + 2] = EEPROM_cast.cast[0];
Sigma884 3:d040fa9b5bb9 190 cmd[buff_ptr + 3] = EEPROM_cast.cast[1];
Sigma884 3:d040fa9b5bb9 191 cmd[buff_ptr + 4] = EEPROM_cast.cast[2];
Sigma884 3:d040fa9b5bb9 192 cmd[buff_ptr + 5] = EEPROM_cast.cast[3];
Sigma884 3:d040fa9b5bb9 193 cmd[buff_ptr + 6] = EEPROM_cast.cast[4];
Sigma884 3:d040fa9b5bb9 194 cmd[buff_ptr + 7] = EEPROM_cast.cast[5];
Sigma884 3:d040fa9b5bb9 195 cmd[buff_ptr + 8] = EEPROM_cast.cast[6];
Sigma884 3:d040fa9b5bb9 196 cmd[buff_ptr + 9] = EEPROM_cast.cast[7];
Sigma884 0:a945081a4a9e 197
Sigma884 0:a945081a4a9e 198 buff_ptr += 8;
Sigma884 0:a945081a4a9e 199 }
Sigma884 0:a945081a4a9e 200 return buff_ptr;
Sigma884 0:a945081a4a9e 201 }
Sigma884 0:a945081a4a9e 202
Sigma884 0:a945081a4a9e 203 void EEPROM_lib::writeBuff(){
Sigma884 0:a945081a4a9e 204 for(int i = buff_ptr+2; i < 130; i ++){
Sigma884 0:a945081a4a9e 205 cmd[i] = 0x00;
Sigma884 0:a945081a4a9e 206 }
Sigma884 0:a945081a4a9e 207 i2c -> write(slave, cmd, 130);
Sigma884 0:a945081a4a9e 208 wait_us(EEPROM_WAIT_US);
Sigma884 0:a945081a4a9e 209
Sigma884 0:a945081a4a9e 210 buff_ptr = 0;
Sigma884 0:a945081a4a9e 211 }
Sigma884 0:a945081a4a9e 212
Sigma884 0:a945081a4a9e 213 int EEPROM_lib::setNextPage(){
Sigma884 0:a945081a4a9e 214 if(cmd[1] == 0x00){
Sigma884 0:a945081a4a9e 215 cmd[1] = 0x80;
Sigma884 0:a945081a4a9e 216 ptr[3] = cmd[1];
Sigma884 0:a945081a4a9e 217 }
Sigma884 0:a945081a4a9e 218 else{
Sigma884 0:a945081a4a9e 219 cmd[1] = 0x00;
Sigma884 0:a945081a4a9e 220 ptr[3] = cmd[1];
Sigma884 0:a945081a4a9e 221 if(cmd[0] == 0xFF){
Sigma884 0:a945081a4a9e 222 cmd[0] = 0x00;
Sigma884 0:a945081a4a9e 223 ptr[2] = cmd[0];
Sigma884 0:a945081a4a9e 224 switch(slave){
Sigma884 0:a945081a4a9e 225 case EEPROM_ADDR_00_0:
Sigma884 0:a945081a4a9e 226 slave = EEPROM_ADDR_00_1;
Sigma884 0:a945081a4a9e 227 ptr[0] = 0x00;
Sigma884 0:a945081a4a9e 228 ptr[1] = 0x01;
Sigma884 0:a945081a4a9e 229 break;
Sigma884 0:a945081a4a9e 230
Sigma884 0:a945081a4a9e 231 case EEPROM_ADDR_00_1:
Sigma884 0:a945081a4a9e 232 slave = EEPROM_ADDR_01_0;
Sigma884 0:a945081a4a9e 233 ptr[0] = 0x01;
Sigma884 0:a945081a4a9e 234 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 235 break;
Sigma884 0:a945081a4a9e 236
Sigma884 0:a945081a4a9e 237 case EEPROM_ADDR_01_0:
Sigma884 0:a945081a4a9e 238 slave = EEPROM_ADDR_01_1;
Sigma884 0:a945081a4a9e 239 ptr[0] = 0x01;
Sigma884 0:a945081a4a9e 240 ptr[1] = 0x01;
Sigma884 0:a945081a4a9e 241 break;
Sigma884 0:a945081a4a9e 242
Sigma884 0:a945081a4a9e 243 case EEPROM_ADDR_01_1:
Sigma884 0:a945081a4a9e 244 slave = EEPROM_ADDR_10_0;
Sigma884 0:a945081a4a9e 245 ptr[0] = 0x02;
Sigma884 0:a945081a4a9e 246 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 247 break;
Sigma884 0:a945081a4a9e 248
Sigma884 0:a945081a4a9e 249 case EEPROM_ADDR_10_0:
Sigma884 0:a945081a4a9e 250 slave = EEPROM_ADDR_10_1;
Sigma884 0:a945081a4a9e 251 ptr[0] = 0x02;
Sigma884 0:a945081a4a9e 252 ptr[1] = 0x01;
Sigma884 0:a945081a4a9e 253 break;
Sigma884 0:a945081a4a9e 254
Sigma884 0:a945081a4a9e 255 case EEPROM_ADDR_10_1:
Sigma884 0:a945081a4a9e 256 slave = EEPROM_ADDR_11_0;
Sigma884 0:a945081a4a9e 257 ptr[0] = 0x03;
Sigma884 0:a945081a4a9e 258 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 259 break;
Sigma884 0:a945081a4a9e 260
Sigma884 0:a945081a4a9e 261 case EEPROM_ADDR_11_0:
Sigma884 0:a945081a4a9e 262 slave = EEPROM_ADDR_11_1;
Sigma884 0:a945081a4a9e 263 ptr[0] = 0x03;
Sigma884 0:a945081a4a9e 264 ptr[1] = 0x01;
Sigma884 0:a945081a4a9e 265 break;
Sigma884 0:a945081a4a9e 266
Sigma884 0:a945081a4a9e 267 case EEPROM_ADDR_11_1:
Sigma884 0:a945081a4a9e 268 slave = 0x00;
Sigma884 0:a945081a4a9e 269 ptr[0] = 0x04;
Sigma884 0:a945081a4a9e 270 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 271 }
Sigma884 0:a945081a4a9e 272 }
Sigma884 0:a945081a4a9e 273 else{
Sigma884 0:a945081a4a9e 274 cmd[0] ++;
Sigma884 0:a945081a4a9e 275 ptr[2] = cmd[0];
Sigma884 0:a945081a4a9e 276 switch(slave){
Sigma884 0:a945081a4a9e 277 case EEPROM_ADDR_00_0:
Sigma884 0:a945081a4a9e 278 ptr[0] = 0x00;
Sigma884 0:a945081a4a9e 279 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 280 break;
Sigma884 0:a945081a4a9e 281
Sigma884 0:a945081a4a9e 282 case EEPROM_ADDR_00_1:
Sigma884 0:a945081a4a9e 283 ptr[0] = 0x00;
Sigma884 0:a945081a4a9e 284 ptr[1] = 0x01;
Sigma884 0:a945081a4a9e 285 break;
Sigma884 0:a945081a4a9e 286
Sigma884 0:a945081a4a9e 287 case EEPROM_ADDR_01_0:
Sigma884 0:a945081a4a9e 288 ptr[0] = 0x01;
Sigma884 0:a945081a4a9e 289 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 290 break;
Sigma884 0:a945081a4a9e 291
Sigma884 0:a945081a4a9e 292 case EEPROM_ADDR_01_1:
Sigma884 0:a945081a4a9e 293 ptr[0] = 0x01;
Sigma884 0:a945081a4a9e 294 ptr[1] = 0x01;
Sigma884 0:a945081a4a9e 295 break;
Sigma884 0:a945081a4a9e 296
Sigma884 0:a945081a4a9e 297 case EEPROM_ADDR_10_0:
Sigma884 0:a945081a4a9e 298 ptr[0] = 0x02;
Sigma884 0:a945081a4a9e 299 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 300 break;
Sigma884 0:a945081a4a9e 301
Sigma884 0:a945081a4a9e 302 case EEPROM_ADDR_10_1:
Sigma884 0:a945081a4a9e 303 ptr[0] = 0x02;
Sigma884 0:a945081a4a9e 304 ptr[1] = 0x01;
Sigma884 0:a945081a4a9e 305 break;
Sigma884 0:a945081a4a9e 306
Sigma884 0:a945081a4a9e 307 case EEPROM_ADDR_11_0:
Sigma884 0:a945081a4a9e 308 ptr[0] = 0x03;
Sigma884 0:a945081a4a9e 309 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 310 break;
Sigma884 0:a945081a4a9e 311
Sigma884 0:a945081a4a9e 312 case EEPROM_ADDR_11_1:
Sigma884 0:a945081a4a9e 313 ptr[0] = 0x03;
Sigma884 0:a945081a4a9e 314 ptr[1] = 0x01;
Sigma884 0:a945081a4a9e 315 break;
Sigma884 0:a945081a4a9e 316 }
Sigma884 0:a945081a4a9e 317 }
Sigma884 0:a945081a4a9e 318 }
Sigma884 0:a945081a4a9e 319
Sigma884 0:a945081a4a9e 320 switch(max_num){
Sigma884 0:a945081a4a9e 321 case 1:
Sigma884 0:a945081a4a9e 322 if(ptr[0] > 0x00){
Sigma884 0:a945081a4a9e 323 slave = 0x00;
Sigma884 0:a945081a4a9e 324 cmd[0] = 0x00;
Sigma884 0:a945081a4a9e 325 cmd[1] = 0x00;
Sigma884 0:a945081a4a9e 326 ptr[0] = 0x01;
Sigma884 0:a945081a4a9e 327 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 328 ptr[2] = 0x00;
Sigma884 0:a945081a4a9e 329 ptr[3] = 0x00;
Sigma884 0:a945081a4a9e 330 }
Sigma884 0:a945081a4a9e 331 break;
Sigma884 0:a945081a4a9e 332
Sigma884 0:a945081a4a9e 333 case 2:
Sigma884 0:a945081a4a9e 334 if(ptr[0] > 0x01){
Sigma884 0:a945081a4a9e 335 slave = 0x00;
Sigma884 0:a945081a4a9e 336 cmd[0] = 0x00;
Sigma884 0:a945081a4a9e 337 cmd[1] = 0x00;
Sigma884 0:a945081a4a9e 338 ptr[0] = 0x02;
Sigma884 0:a945081a4a9e 339 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 340 ptr[2] = 0x00;
Sigma884 0:a945081a4a9e 341 ptr[3] = 0x00;
Sigma884 0:a945081a4a9e 342 }
Sigma884 0:a945081a4a9e 343 break;
Sigma884 0:a945081a4a9e 344
Sigma884 0:a945081a4a9e 345 case 3:
Sigma884 0:a945081a4a9e 346 if(ptr[0] > 0x02){
Sigma884 0:a945081a4a9e 347 slave = 0x00;
Sigma884 0:a945081a4a9e 348 cmd[0] = 0x00;
Sigma884 0:a945081a4a9e 349 cmd[1] = 0x00;
Sigma884 0:a945081a4a9e 350 ptr[0] = 0x03;
Sigma884 0:a945081a4a9e 351 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 352 ptr[2] = 0x00;
Sigma884 0:a945081a4a9e 353 ptr[3] = 0x00;
Sigma884 0:a945081a4a9e 354 }
Sigma884 0:a945081a4a9e 355 break;
Sigma884 0:a945081a4a9e 356
Sigma884 0:a945081a4a9e 357 case 4:
Sigma884 0:a945081a4a9e 358 if(ptr[0] > 0x03){
Sigma884 0:a945081a4a9e 359 slave = 0x00;
Sigma884 0:a945081a4a9e 360 cmd[0] = 0x00;
Sigma884 0:a945081a4a9e 361 cmd[1] = 0x00;
Sigma884 0:a945081a4a9e 362 ptr[0] = 0x04;
Sigma884 0:a945081a4a9e 363 ptr[1] = 0x00;
Sigma884 0:a945081a4a9e 364 ptr[2] = 0x00;
Sigma884 0:a945081a4a9e 365 ptr[3] = 0x00;
Sigma884 0:a945081a4a9e 366 }
Sigma884 0:a945081a4a9e 367 break;
Sigma884 0:a945081a4a9e 368 }
Sigma884 0:a945081a4a9e 369
Sigma884 0:a945081a4a9e 370 return (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3];
Sigma884 0:a945081a4a9e 371 }
Sigma884 0:a945081a4a9e 372
Sigma884 0:a945081a4a9e 373 char EEPROM_lib::readByte(int num, int block, char ADDR_H, char ADDR_L){
Sigma884 0:a945081a4a9e 374 if(num > max_num){
Sigma884 0:a945081a4a9e 375 return 0x00;
Sigma884 0:a945081a4a9e 376 }
Sigma884 0:a945081a4a9e 377 switch(num){
Sigma884 0:a945081a4a9e 378 case 1:
Sigma884 0:a945081a4a9e 379 slave = EEPROM_ADDR_00_0;
Sigma884 0:a945081a4a9e 380 break;
Sigma884 0:a945081a4a9e 381
Sigma884 0:a945081a4a9e 382 case 2:
Sigma884 0:a945081a4a9e 383 slave = EEPROM_ADDR_01_0;
Sigma884 0:a945081a4a9e 384 break;
Sigma884 0:a945081a4a9e 385
Sigma884 0:a945081a4a9e 386 case 3:
Sigma884 0:a945081a4a9e 387 slave = EEPROM_ADDR_10_0;
Sigma884 0:a945081a4a9e 388 break;
Sigma884 0:a945081a4a9e 389
Sigma884 0:a945081a4a9e 390 case 4:
Sigma884 0:a945081a4a9e 391 slave = EEPROM_ADDR_11_0;
Sigma884 0:a945081a4a9e 392 break;
Sigma884 0:a945081a4a9e 393 }
Sigma884 0:a945081a4a9e 394 if(block == 1){
Sigma884 0:a945081a4a9e 395 slave = slave | 0x08;
Sigma884 0:a945081a4a9e 396 }
Sigma884 0:a945081a4a9e 397 cmd[0] = ADDR_H;
Sigma884 0:a945081a4a9e 398 cmd[1] = ADDR_L;
Sigma884 0:a945081a4a9e 399
Sigma884 0:a945081a4a9e 400 i2c -> write(slave, cmd, 2);
Sigma884 0:a945081a4a9e 401 i2c -> read(slave | 1, cmd, 1);
Sigma884 0:a945081a4a9e 402
Sigma884 0:a945081a4a9e 403 return cmd[0];
Sigma884 0:a945081a4a9e 404 }
Sigma884 0:a945081a4a9e 405
Sigma884 0:a945081a4a9e 406 void EEPROM_lib::readMultiByte(int num, int block, char ADDR_H, char ADDR_L, char *DATA, int size){
Sigma884 0:a945081a4a9e 407 if(num > max_num){
Sigma884 0:a945081a4a9e 408 return;
Sigma884 0:a945081a4a9e 409 }
Sigma884 0:a945081a4a9e 410 switch(num){
Sigma884 0:a945081a4a9e 411 case 1:
Sigma884 0:a945081a4a9e 412 slave = EEPROM_ADDR_00_0;
Sigma884 0:a945081a4a9e 413 break;
Sigma884 0:a945081a4a9e 414
Sigma884 0:a945081a4a9e 415 case 2:
Sigma884 0:a945081a4a9e 416 slave = EEPROM_ADDR_01_0;
Sigma884 0:a945081a4a9e 417 break;
Sigma884 0:a945081a4a9e 418
Sigma884 0:a945081a4a9e 419 case 3:
Sigma884 0:a945081a4a9e 420 slave = EEPROM_ADDR_10_0;
Sigma884 0:a945081a4a9e 421 break;
Sigma884 0:a945081a4a9e 422
Sigma884 0:a945081a4a9e 423 case 4:
Sigma884 0:a945081a4a9e 424 slave = EEPROM_ADDR_11_0;
Sigma884 0:a945081a4a9e 425 break;
Sigma884 0:a945081a4a9e 426 }
Sigma884 0:a945081a4a9e 427 if(block == 1){
Sigma884 0:a945081a4a9e 428 slave = slave | 0x08;
Sigma884 0:a945081a4a9e 429 }
Sigma884 0:a945081a4a9e 430 cmd[0] = ADDR_H;
Sigma884 0:a945081a4a9e 431 cmd[1] = ADDR_L;
Sigma884 0:a945081a4a9e 432
Sigma884 0:a945081a4a9e 433 i2c -> write(slave, cmd, 2);
Sigma884 0:a945081a4a9e 434 i2c -> read(slave | 1, DATA, size);
Sigma884 0:a945081a4a9e 435 }