# AT24MAC402
**Repository Path**: jamth/AT24MAC402
## Basic Information
- **Project Name**: AT24MAC402
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-20
- **Last Updated**: 2025-12-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AT24MAC402/602 Arduino library
Arduino library for Microchip (former Atmel) AT24MAC402/602 EEPROM with build in MAC address and serial number.
The chip uses internally two I2C addresses for different memory areas.
Only 1k bit can used for R/W operations by the user.
- 0x50 - 0x57 (7bit address) for R/W operations of the first 128 bytes of the EEPROM
- 0x58 - 0x5F (7bit address) for Read Only operations to get the MAC (EUI-48) address and the 128 bit serial number (UUID), also the EUI-64 only for the AT24MAC602 EEPROM type
- Depending of the package you can set 8 different I2C start addresses, beware that the address pins set I2C address of both memory areas
## Example
Here is a simple example which shows the capabilities of the library
```cpp
#include "AT24MAC402.h"
AT24MAC402 at24mac402;
uint8_t mac[6];
uint8_t uuid[16];
void setup() {
Serial.begin(9600);
delay(2000);
at24mac402.begin();
at24mac402.readMac(mac);
Serial.print("MAC address ");
Serial.println(MACtoString(mac));
at24mac402.readUUID(uuid);
Serial.print("UUID ");
Serial.println(UUIDtoString(mac));
for (uint8_t i = 0; i < 6; i++) {
at24mac402.writebyte(i, i);
}
for (uint8_t i = 0; i < 6; i++) {
Serial.print("Byte ");
Serial.print(i);
Serial.print(" Value ");
Serial.println(at24mac402.readbyte(i));
}
}
void loop() {
}
```
# Documentation
## Constructor
```cpp
AT24MAC402(uint8_t a0 = 0, uint8_t a1 = 0, uint8_t a2 = 0);
```
- **a0** set address pin A0 to HIGH or LOW
- **a1** set address pin A1 to HIGH or LOW
- **a2** set address pin A2 to HIGH or LOW
Create an EEPROM object with an optional settings of the address pins A0, A1 and A2.
**Example**
```cpp
AT24MAC402 at24mac402; // all address pins to GND using Wire
AT24MAC402 at24mac402(0, 0, 1); // address pin A2 high using Wire
```
## Methods
### **begin()**
```cpp
void begin(TwoWire &wire = Wire);
```
- **wire** set optional Wire class to use (Wire, Wire1, Wire2 ...)
Initialize the Wire (I2C) communication of the EEPROM.
This must done in ```setup()```
**Example**
```cpp
setup() {
at24mac402.begin();
at24mac402.begin(Wire1); // for use with e.g. Wire1
}
```
### **writeByte()**
```cpp
void writeByte(uint8_t address, uint8_t data);
```
- **address** set the EEPROM address
- **data** set the data
Write a single byte into the EEPROM.
**Example**
```cpp
at24mac402.writeByte(2, 23); // write the value 23 to EEPROM address 2
```
### **readByte()**
```cpp
uint8_t readByte(uint8_t address)
```
- **address** set the EEPROM address
Read a single byte from the EEPROM.
Returns the stored value of the given address.
**Example**
```cpp
uint8_t data = at24mac402.readByte(2); // read the value from EEPROM address 2
```
### **readMac()**
```cpp
void readMac(uint8_t mac[]);
uint8_t* readMac();
```
- **mac** pointer to the mac address
Returns the MAC (EUI-48) address.
**Example**
```cpp
uint8_t mac[6];
at24mac402.readMac(mac);
```
### **readEUI64()**
```cpp
void readEUI64(uint8_t eui64[]);
uint8_t* readEUI64();
```
- **eui64address** pointer to the EUI64 address
Returns the EUI-64 address. Only for AT24MAC602!
**Example**
```cpp
uint8_t eui64[8];
at24mac402.readEUI64(eui64);
```
### **readUUID()**
```cpp
void readUUID(uint8_t uuid[]);
uint8_t* readUUID();
```
- **uuid** pointer to the UUID address
Returns the UUID (128bit serial number).
**Example**
```cpp
uint8_t uuid[16];
at24mac402.readUUID(uuid);
```
## Helper functions
### **MACtoString()**
```cpp
void MACtoString(uint8_t mac[], char macString[]);
char* MACtoString(uint8_t mac[]);
```
- **mac** pointer to the MAC address
- **macString** pointer to the formated string
Returns the MAC address as a formated string.
**Example**
```cpp
Serial.println(MACtoString(mac));
```
### **UUIDtoString()**
```cpp
void UUIDtoString(uint8_t uuid[], char uuidString[]);
char* UUIDtoString(uint8_t uuid[]);
```
- **uuid** pointer to the UUID
- **uuidString** pointer to the formated string
Returns the UUID as a formated string.
**Example**
```cpp
Serial.println(UUIDtoString(uuid));
```