199 lines
5.9 KiB
C++
199 lines
5.9 KiB
C++
/*
|
|
*
|
|
* Read and write demo of the AT24CX library
|
|
* Written by Christian Paul, 2014-11-24
|
|
*
|
|
*
|
|
*/
|
|
|
|
// include libraries
|
|
#include <Wire.h>
|
|
#include <AT24CX.h>
|
|
|
|
// EEPROM object
|
|
AT24CX mem(7,64);
|
|
|
|
// setup
|
|
void setup() {
|
|
// serial init
|
|
Serial.begin(115200);
|
|
Serial.println("AT24CX read/write demo");
|
|
Serial.println("----------------------");
|
|
}
|
|
|
|
// main loop
|
|
void loop() {
|
|
|
|
// read and write byte
|
|
Serial.println("Write 42 to address 12");
|
|
mem.write(0, 42);
|
|
Serial.println("Read byte from address 12 ...");
|
|
byte b = mem.read(0);
|
|
Serial.print("... read: ");
|
|
Serial.println(b, DEC);
|
|
Serial.println();
|
|
|
|
// read and write integer
|
|
Serial.println("Write 65000 to address 15");
|
|
mem.writeInt(15, 65000);
|
|
Serial.println("Read integer from address 15 ...");
|
|
unsigned int i = mem.readInt(15);
|
|
Serial.print("... read: ");
|
|
Serial.println(i, DEC);
|
|
Serial.println();
|
|
|
|
// read and write long
|
|
Serial.println("Write 3293732729 to address 20");
|
|
mem.writeLong(20, 3293732729UL);
|
|
Serial.println("Read long from address 20 ...");
|
|
unsigned long l = mem.readLong(20);
|
|
Serial.print("... read: ");
|
|
Serial.println(l, DEC);
|
|
Serial.println();
|
|
|
|
// read and write long
|
|
Serial.println("Write 1111111111 to address 31");
|
|
mem.writeLong(31, 1111111111);
|
|
Serial.println("Read long from address 31 ...");
|
|
unsigned long l2 = mem.readLong(31);
|
|
Serial.print("... read: ");
|
|
Serial.println(l2, DEC);
|
|
Serial.println();
|
|
|
|
// read and write float
|
|
Serial.println("Write 3.14 to address 40");
|
|
mem.writeFloat(40, 3.14);
|
|
Serial.println("Read float from address 40 ...");
|
|
float f = mem.readFloat(40);
|
|
Serial.print("... read: ");
|
|
Serial.println(f, DEC);
|
|
Serial.println();
|
|
|
|
// read and write double
|
|
Serial.println("Write 3.14159265359 to address 50");
|
|
mem.writeDouble(50, 3.14159265359);
|
|
Serial.println("Read double from address 50 ...");
|
|
double d = mem.readDouble(50);
|
|
Serial.print("... read: ");
|
|
Serial.println(d, DEC);
|
|
Serial.println();
|
|
|
|
// read and write char
|
|
Serial.print("Write chars: '");
|
|
char msg[] = "This is a message";
|
|
Serial.print(msg);
|
|
Serial.println("' to address 200");
|
|
mem.writeChars(200, msg, sizeof(msg));
|
|
Serial.println("Read chars from address 200 ...");
|
|
char msg2[30];
|
|
mem.readChars(200, msg2, sizeof(msg2));
|
|
Serial.print("... read: '");
|
|
Serial.print(msg2);
|
|
Serial.println("'");
|
|
Serial.println();
|
|
|
|
// write array of bytes
|
|
Serial.println("Write array of 80 bytes at address 1000");
|
|
byte xy[] = {0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9, // 10 x 3 = 30
|
|
10,11,12,13,14,15,16,17,18,19, // 10
|
|
120,121,122,123,124,125,126,127,128,129, // 10
|
|
130,131,132,133,134,135,136,137,138,139, // 10
|
|
200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219}; // 20
|
|
mem.write(0, (byte*)xy, sizeof(xy));
|
|
|
|
// read bytes with multiple steps
|
|
Serial.println("Read 80 single bytes starting at address 0");
|
|
for (int i=0; i<sizeof(xy); i++) {
|
|
byte sb = mem.read(i);
|
|
Serial.print("[");
|
|
Serial.print(i);
|
|
Serial.print("] = ");
|
|
Serial.println(sb);
|
|
}
|
|
Serial.println();
|
|
|
|
// read bytes with one step
|
|
Serial.println("Read 80 bytes with one operation at address 0");
|
|
byte z[80];
|
|
memset(&z[0], 32, sizeof(z));
|
|
mem.read(0, z, sizeof(z));
|
|
for (int i=0; i<sizeof(z); i++) {
|
|
Serial.print("[");
|
|
Serial.print(i);
|
|
Serial.print("] = ");
|
|
Serial.println(z[i]);
|
|
}
|
|
|
|
/*
|
|
Serial.println("Write 42 to address 12");
|
|
mem.write(32769, 100);
|
|
Serial.println("Read byte from address 12 ...");
|
|
byte b = mem.read(1);
|
|
Serial.print("... read: ");
|
|
Serial.println(b, DEC);
|
|
Serial.println();
|
|
*/
|
|
/*
|
|
double time_data = millis();
|
|
for(int i = 0;i <= 256;i++)
|
|
mem.write(i, i%255);
|
|
//Serial.println(String(i)+String(" = ")+mem.read(i));
|
|
time_data = (millis() - time_data)/1000;
|
|
Serial.println(String("finish! time = ") + time_data + String("S"));
|
|
Serial.println("Write 3293732729 to address 20");
|
|
mem.writeLong(20, 3293732729UL);
|
|
Serial.println("Read long from address 20 ...");
|
|
unsigned long l = mem.readLong(20);
|
|
Serial.print("... read: ");
|
|
Serial.println(l, DEC);
|
|
Serial.println();
|
|
for(int i = 0;i <= 256;i++)
|
|
Serial.println(String(i)+String(" = ")+mem.read(i));
|
|
//
|
|
|
|
Serial.println("Write array of 80 bytes at address 1000");
|
|
byte xy[] = {0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9, // 10 x 3 = 30
|
|
10,11,12,13,14,15,16,17,18,19, // 10
|
|
120,121,122,123,124,125,126,127,128,129, // 10
|
|
130,131,132,133,134,135,136,137,138,139, // 10
|
|
200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219}; // 20
|
|
mem.write(0, (byte*)xy, sizeof(xy));
|
|
|
|
// read bytes with multiple steps
|
|
Serial.println("Read 80 single bytes starting at address 0");
|
|
for (int i=0; i<sizeof(xy); i++) {
|
|
byte sb = mem.read(i);
|
|
Serial.print("[");
|
|
Serial.print(i);
|
|
Serial.print("] = ");
|
|
Serial.println(sb);
|
|
}
|
|
for(int i = 0;i <= 256;i++)
|
|
Serial.println(String(i)+String(" = ")+mem.read(i));
|
|
Serial.println();
|
|
*/
|
|
/*
|
|
int at24c_data;
|
|
double time_data = millis();
|
|
long i;
|
|
for(i = 0;;i++)
|
|
{
|
|
mem.write(i, i%255);
|
|
if(i == 0)
|
|
{
|
|
at24c_data = mem.read(i);
|
|
}
|
|
if(mem.read(0) != at24c_data)
|
|
break;
|
|
if(i >= 40000)
|
|
break;
|
|
}
|
|
time_data = (millis() - time_data)/1000;
|
|
if(i >= 40000)
|
|
Serial.println(String("time out! time = ") + time_data + String("S ") + i + String("byte"));
|
|
else
|
|
Serial.println(String("finish! time = ") + time_data + String("S ") + i + String("byte"));
|
|
*/
|
|
while (1==1) {}
|
|
}
|