319,3 → 319,133 |
twi__send_data(register_value); |
twi__stop(); |
} |
|
/**************************************************************************//** |
* \fn uint8_t ds1307__read_byte_in_ram(uint8_t address) |
* |
* \brief Read a byte in DS1307 RAM. |
* |
* \param address Address to read. |
* |
* \return Read byte. |
******************************************************************************/ |
uint8_t |
ds1307__read_byte_in_ram |
( |
uint8_t address |
){ |
// Check the preconditions. |
assert(address >= 0x08); |
assert(address <= 0x3F); |
|
uint8_t data = 0; |
|
twi__start(); |
twi__send_slaw(DS1307__ADDRESS); |
twi__send_data(address); |
twi__stop(); |
|
twi__start(); |
twi__send_slar(DS1307__ADDRESS); |
twi__receive_data_nack(&data); |
twi__stop(); |
|
return data; |
} |
|
/**************************************************************************//** |
* \fn void ds1307__read_bytes_in_ram( |
* uint8_t address, |
* uint8_t length, |
* uint8_t* p_data) |
* |
* \brief Read bytes in DS1307 RAM. |
* |
* \param address Address to read. |
* \param length Number of bytes to read. |
* \param[in] p_data Buffer to fill. |
******************************************************************************/ |
void |
ds1307__read_bytes_in_ram |
( |
uint8_t address, |
uint8_t length, |
uint8_t* p_data |
){ |
// Check the preconditions. |
assert(NULL != p_data); |
assert(address >= 0x08); |
assert(address <= 0x3F); |
assert(length <= 56); |
|
twi__start(); |
twi__send_slaw(DS1307__ADDRESS); |
twi__send_data(address); |
twi__stop(); |
|
twi__start(); |
twi__send_slar(DS1307__ADDRESS); |
for (uint8_t i = 0; i < length - 1; i++) |
{ |
twi__receive_data_ack(p_data + i); |
} |
twi__receive_data_nack(p_data + length - 1); |
twi__stop(); |
} |
|
/**************************************************************************//** |
* \fn void ds1307__write_byte_in_ram(uint8_t address, uint8_t data) |
* |
* \brief Write a byte in DS1307 RAM. |
* |
* \param address Address to write. |
* \param data Byte to write. |
******************************************************************************/ |
void |
ds1307__write_byte_in_ram |
( |
uint8_t address, |
uint8_t data |
){ |
// Check the preconditions. |
assert(address >= 0x08); |
assert(address <= 0x3F); |
|
twi__start(); |
twi__send_slaw(DS1307__ADDRESS); |
twi__send_data(address); |
twi__send_data(data); |
twi__stop(); |
} |
|
/**************************************************************************//** |
* \fn void ds1307__write_bytes_in_ram(uint8_t address, uint8_t data) |
* |
* \brief Write a byte in DS1307 RAM. |
* |
* \param address Address to write. |
* \param length Number of bytes to write. |
* \param[in] p_data Bytes to write. |
******************************************************************************/ |
void |
ds1307__write_bytes_in_ram |
( |
uint8_t address, |
uint8_t length, |
uint8_t* p_data |
){ |
// Check the preconditions. |
assert(NULL != p_data); |
assert(address >= 0x08); |
assert(address <= 0x3F); |
assert(length <= 56); |
|
twi__start(); |
twi__send_slaw(DS1307__ADDRESS); |
twi__send_data(address); |
for (uint8_t i = 0; i < length; i++) |
{ |
twi__send_data(p_data[i]); |
} |
twi__stop(); |
} |