Arduino-TWI
Two-Wire Interface (TWI) library for Arduino
AT24CXX.ino
Go to the documentation of this file.
1 #include "TWI.h"
2 #include "Driver/AT24CXX.h"
3 
4 #define USE_SOFTWARE_TWI
5 // #define USE_HARDWARE_TWI
6 
7 #if defined(USE_SOFTWARE_TWI)
8 #include "GPIO.h"
9 #include "Software/TWI.h"
10 #if defined(ARDUINO_attiny)
11 #include "Software/Serial.h"
12 Software::Serial<BOARD::D0> Serial;
14 #else
16 #endif
17 #elif defined(USE_HARDWARE_TWI)
18 #include "Hardware/TWI.h"
20 #endif
21 
22 AT24C32 eeprom(twi);
23 
24 // Data vector (64 bytes). Force multi-page access
25 const uint16_t V_EEPROM = eeprom.PAGE_MAX / 2;
26 int16_t v[32];
27 
28 void setup()
29 {
30  Serial.begin(57600);
31  while (!Serial);
32 
33  // Initiate vector
34  for (size_t i = 0; i < sizeof(v) / sizeof(v[0]); i++) {
35  v[i] = i;
36  }
37 }
38 
39 void loop()
40 {
41  // Print contents of vector and increment elements
42  for (size_t i = 0; i < sizeof(v) / sizeof(v[0]); i++) {
43  Serial.print(v[i]);
44  Serial.print(' ');
45  v[i] += 1;
46  }
47  Serial.println();
48  delay(5000);
49 
50  // Write vector to eeprom
51  Serial.print(F("write: "));
52  Serial.println(eeprom.write(V_EEPROM, &v, sizeof(v)));
53 
54  // Clear vector to verify read
55  for (size_t i = 0; i < sizeof(v) / sizeof(v[0]); i++) {
56  v[i] = 0;
57  }
58 
59  // Read vector from eeprom
60  Serial.print(F("read: "));
61  Serial.println(eeprom.read(&v, V_EEPROM, sizeof(v)));
62 }
const uint16_t PAGE_MAX
Definition: AT24CXX.h:51
void loop()
Definition: AT24CXX.ino:39
AT24C32 eeprom(twi)
int read(void *dest, uint16_t src, size_t count)
Definition: AT24CXX.h:98
void setup()
Definition: AT24CXX.ino:28
int write(uint16_t dest, const void *src, size_t count)
Definition: AT24CXX.h:124
const uint16_t V_EEPROM
Definition: AT24CXX.ino:25
int16_t v[32]
Definition: AT24CXX.ino:26
Software::TWI< BOARD::D6, BOARD::D7 > twi
Definition: AT24CXX.ino:15