Skip to content

Commit d8bb224

Browse files
committed
Updated to work on Arduino Due.
1 parent 2f60754 commit d8bb224

File tree

2 files changed

+73
-62
lines changed

2 files changed

+73
-62
lines changed

libraries/I2C_EEPROM/I2C_eeprom.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,14 @@ void I2C_eeprom::begin()
3535
{
3636
Wire.begin();
3737
_lastWrite = 0;
38+
39+
// TWBR is not available on Arduino Due
40+
#ifdef TWBR
3841
TWBR = 72;
3942
// 0=1000 1=888 2=800 8=500
4043
// 12=400KHz 24=250 32=200 72=100 152=50
4144
// F_CPU/16+(2*TWBR) // TWBR is a uint8_t
45+
#endif
4246
}
4347

4448
int I2C_eeprom::writeByte(uint16_t address, uint8_t data)

libraries/I2C_EEPROM/examples/I2C_eeprom_test/I2C_eeprom_test.ino

Lines changed: 69 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
#include <Wire.h> //I2C library
99
#include <I2C_eeprom.h>
1010

11+
12+
#define SERIAL_OUT SerialUSB
13+
1114
I2C_eeprom ee(0x50);
1215

1316
uint32_t totals = 0;
@@ -16,159 +19,163 @@ void setup()
1619
{
1720
ee.begin();
1821

19-
Serial.begin(115200);
20-
Serial.print("Demo I2C eeprom library ");
21-
Serial.print(I2C_EEPROM_VERSION);
22-
Serial.println("\n");
22+
SERIAL_OUT.begin(57600);
23+
while (!SERIAL_OUT) {
24+
; // wait for SERIAL_OUT port to connect. Needed for Leonardo only
25+
}
26+
27+
SERIAL_OUT.print("Demo I2C eeprom library ");
28+
SERIAL_OUT.print(I2C_EEPROM_VERSION);
29+
SERIAL_OUT.println("\n");
2330

24-
Serial.println("\nTEST: 64 byte page boundary writeBlock");
31+
SERIAL_OUT.println("\nTEST: 64 byte page boundary writeBlock");
2532
ee.setBlock(0,0,128);
2633
dumpEEPROM(0, 128);
2734
char data[] = "11111111111111111111";
2835
ee.writeBlock(60, (uint8_t*) data, 10);
2936
dumpEEPROM(0, 128);
3037

3138

32-
Serial.println("\nTEST: 64 byte page boundary setBlock");
39+
SERIAL_OUT.println("\nTEST: 64 byte page boundary setBlock");
3340
ee.setBlock(0,0,128);
3441
dumpEEPROM(0, 128);
3542
ee.setBlock(60, '1', 10);
3643
dumpEEPROM(0, 128);
3744

3845

39-
Serial.println("\nTEST: 64 byte page boundary readBlock");
46+
SERIAL_OUT.println("\nTEST: 64 byte page boundary readBlock");
4047
ee.setBlock(0,0,128);
4148
ee.setBlock(60, '1', 6);
4249
dumpEEPROM(0, 128);
4350
char ar[100];
4451
memset(ar,0,100);
4552
ee.readBlock(60, (uint8_t*)ar, 10);
46-
Serial.println(ar);
53+
SERIAL_OUT.println(ar);
4754

4855

49-
Serial.println("\nTEST: write large string readback in small steps");
56+
SERIAL_OUT.println("\nTEST: write large string readback in small steps");
5057
ee.setBlock(0,0,128);
5158
char data2[] = "0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999A";
5259
ee.writeBlock(10, (uint8_t *) &data2, 100);
5360
dumpEEPROM(0, 128);
5461
for (int i = 0; i<100; i++)
5562
{
56-
if (i%10 == 0 ) Serial.println();
57-
Serial.print(' ');
58-
Serial.print(ee.readByte(10+i));
63+
if (i%10 == 0 ) SERIAL_OUT.println();
64+
SERIAL_OUT.print(' ');
65+
SERIAL_OUT.print(ee.readByte(10+i));
5966
}
60-
Serial.println();
67+
SERIAL_OUT.println();
6168

6269

63-
Serial.println("\nTEST: check almost endofPage writeBlock");
70+
SERIAL_OUT.println("\nTEST: check almost endofPage writeBlock");
6471
ee.setBlock(0,0,128);
6572
char data3[] = "6666";
6673
ee.writeBlock(60, (uint8_t *) &data3, 2);
6774
dumpEEPROM(0, 128);
6875

69-
Serial.println();
70-
Serial.print("\nI2C speed:\t");
71-
Serial.println(16000/(16+2*TWBR));
72-
Serial.print("TWBR:\t");
73-
Serial.println(TWBR);
74-
Serial.println();
76+
// SERIAL_OUT.println();
77+
// SERIAL_OUT.print("\nI2C speed:\t");
78+
// SERIAL_OUT.println(16000/(16+2*TWBR));
79+
// SERIAL_OUT.print("TWBR:\t");
80+
// SERIAL_OUT.println(TWBR);
81+
// SERIAL_OUT.println();
7582

7683
totals = 0;
77-
Serial.print("\nTEST: timing writeByte()\t");
84+
SERIAL_OUT.print("\nTEST: timing writeByte()\t");
7885
uint32_t start = micros();
7986
ee.writeByte(10, 1);
8087
uint32_t diff = micros() - start;
81-
Serial.print("TIME: ");
82-
Serial.println(diff);
88+
SERIAL_OUT.print("TIME: ");
89+
SERIAL_OUT.println(diff);
8390
totals += diff;
8491

85-
Serial.print("TEST: timing writeBlock(50)\t");
92+
SERIAL_OUT.print("TEST: timing writeBlock(50)\t");
8693
start = micros();
8794
ee.writeBlock(10, (uint8_t *) &data2, 50);
8895
diff = micros() - start;
89-
Serial.print("TIME: ");
90-
Serial.println(diff);
96+
SERIAL_OUT.print("TIME: ");
97+
SERIAL_OUT.println(diff);
9198
totals += diff;
9299

93-
Serial.print("TEST: timing readByte()\t\t");
100+
SERIAL_OUT.print("TEST: timing readByte()\t\t");
94101
start = micros();
95102
ee.readByte(10);
96103
diff = micros() - start;
97-
Serial.print("TIME: ");
98-
Serial.println(diff);
104+
SERIAL_OUT.print("TIME: ");
105+
SERIAL_OUT.println(diff);
99106
totals += diff;
100107

101-
Serial.print("TEST: timing readBlock(50)\t");
108+
SERIAL_OUT.print("TEST: timing readBlock(50)\t");
102109
start = micros();
103110
ee.readBlock(10, (uint8_t *) &data2, 50);
104111
diff = micros() - start;
105-
Serial.print("TIME: ");
106-
Serial.println(diff);
112+
SERIAL_OUT.print("TIME: ");
113+
SERIAL_OUT.println(diff);
107114
totals += diff;
108115

109-
Serial.print("TOTALS: ");
110-
Serial.println(totals);
116+
SERIAL_OUT.print("TOTALS: ");
117+
SERIAL_OUT.println(totals);
111118
totals = 0;
112119

113120
// same tests but now with a 5 millisec delay in between.
114121
delay(5);
115122

116-
Serial.print("\nTEST: timing writeByte()\t");
123+
SERIAL_OUT.print("\nTEST: timing writeByte()\t");
117124
start = micros();
118125
ee.writeByte(10, 1);
119126
diff = micros() - start;
120-
Serial.print("TIME: ");
121-
Serial.println(diff);
127+
SERIAL_OUT.print("TIME: ");
128+
SERIAL_OUT.println(diff);
122129
totals += diff;
123130

124131
delay(5);
125132

126-
Serial.print("TEST: timing writeBlock(50)\t");
133+
SERIAL_OUT.print("TEST: timing writeBlock(50)\t");
127134
start = micros();
128135
ee.writeBlock(10, (uint8_t *) &data2, 50);
129136
diff = micros() - start;
130-
Serial.print("TIME: ");
131-
Serial.println(diff);
137+
SERIAL_OUT.print("TIME: ");
138+
SERIAL_OUT.println(diff);
132139
totals += diff;
133140

134141
delay(5);
135142

136-
Serial.print("TEST: timing readByte()\t\t");
143+
SERIAL_OUT.print("TEST: timing readByte()\t\t");
137144
start = micros();
138145
ee.readByte(10);
139146
diff = micros() - start;
140-
Serial.print("TIME: ");
141-
Serial.println(diff);
147+
SERIAL_OUT.print("TIME: ");
148+
SERIAL_OUT.println(diff);
142149
totals += diff;
143150

144151
delay(5);
145152

146-
Serial.print("TEST: timing readBlock(50)\t");
153+
SERIAL_OUT.print("TEST: timing readBlock(50)\t");
147154
start = micros();
148155
int xx = ee.readBlock(10, (uint8_t *) &data2, 50);
149156
diff = micros() - start;
150-
Serial.print("TIME: ");
151-
Serial.println(diff);
157+
SERIAL_OUT.print("TIME: ");
158+
SERIAL_OUT.println(diff);
152159
totals += diff;
153160

154-
Serial.print("TOTALS: ");
155-
Serial.println(totals);
161+
SERIAL_OUT.print("TOTALS: ");
162+
SERIAL_OUT.println(totals);
156163
totals = 0;
157164

158165
// does it go well?
159-
Serial.println(xx);
166+
SERIAL_OUT.println(xx);
160167

161-
Serial.println("\nTEST: determine size");
168+
SERIAL_OUT.println("\nTEST: determine size");
162169
start = micros();
163170
int size = ee.determineSize();
164171
diff = micros() - start;
165-
Serial.print("TIME: ");
166-
Serial.println(diff);
167-
Serial.print("SIZE: ");
168-
Serial.print(size);
169-
Serial.println(" KB");
172+
SERIAL_OUT.print("TIME: ");
173+
SERIAL_OUT.println(diff);
174+
SERIAL_OUT.print("SIZE: ");
175+
SERIAL_OUT.print(size);
176+
SERIAL_OUT.println(" KB");
170177

171-
Serial.println("\tDone...");
178+
SERIAL_OUT.println("\tDone...");
172179
}
173180

174181
void loop()
@@ -186,14 +193,14 @@ void dumpEEPROM(uint16_t addr, uint16_t length)
186193
{
187194
if (addr % 10 == 0)
188195
{
189-
Serial.println();
190-
Serial.print(addr);
191-
Serial.print(":\t");
196+
SERIAL_OUT.println();
197+
SERIAL_OUT.print(addr);
198+
SERIAL_OUT.print(":\t");
192199
}
193-
Serial.print(b);
200+
SERIAL_OUT.print(b);
194201
b = ee.readByte(++addr);
195-
Serial.print(" ");
202+
SERIAL_OUT.print(" ");
196203
}
197-
Serial.println();
204+
SERIAL_OUT.println();
198205
}
199206
// END OF FILE

0 commit comments

Comments
 (0)