GlobLib
HAL and API libraries for MCUs and hardware.
at24c256.c
Go to the documentation of this file.
1 
17 #include "at24c256.h"
18 
19 //This is not ideal
20 extern uint8_t I2C_start(uint8_t i2c_address);
21 extern uint8_t I2C_address(uint8_t i2c_address, uint8_t address, uint8_t operation);
22 extern uint8_t I2C_write(uint8_t i2c_address, uint8_t byte);
23 extern uint8_t I2C_read(uint8_t i2c_address);
24 extern uint8_t I2C_repeatRead(uint8_t i2c_address);
25 extern uint8_t I2C_stop(uint8_t i2c_address);
26 
27 //This is less ideal
28 #define I2C_WRITE 0
29 #define I2C_READ 1
30 
31 void AT24C256_setup(AT24C256 *target, uint8_t i2c_num, uint8_t address){
32 
33  target->bus = i2c_num;
34  target->address = address;
35 }
36 
37 void AT24C256_writeByte(AT24C256 *target, uint16_t address, uint8_t byte){
38 
39  I2C_start(target->bus);
40  I2C_address(target->bus,target->address,I2C_WRITE);
41  I2C_write(target->bus,(uint8_t)(address >> 8));
42  I2C_write(target->bus,(uint8_t)(address));
43  I2C_write(target->bus,(uint8_t)(byte));
44  I2C_stop(target->bus);
45 }
46 
47 uint8_t AT24C256_readByte(AT24C256 *target, uint16_t address){
48 
49  uint8_t byte;
50  I2C_start(target->bus);
51  I2C_address(target->bus,target->address,I2C_WRITE);
52  I2C_write(target->bus,(uint8_t)(address >> 8));
53  I2C_write(target->bus,(uint8_t)(address));
54  I2C_start(target->bus);
55  I2C_address(target->bus,target->address,I2C_READ);
56  I2C_stop(target->bus);
57  byte = I2C_read(target->bus);
58  return byte;
59 }
Header file for Atmel EEPROM AT24C256.
void AT24C256_setup(AT24C256 *target, uint8_t i2c_num, uint8_t address)
Initalizes the slave device and populates data structure variable.
Definition: at24c256.c:31
uint8_t bus
The I2C bus which the device is connected to.
Definition: at24c256.h:65