Erriez DS1307 I2C RTC library for Arduino  1.0.0
This is a DS1307 I2C Real Time Clock library for Arduino by Erriez.
Public Member Functions | List of all members
ErriezDS1307 Class Reference

DS1307 RTC class. More...

#include <ErriezDS1307.h>

Public Member Functions

bool begin ()
 Initialize and detect DS1307 RTC. More...
 
bool isRunning ()
 Read RTC CH (Clock Halt) from seconds register. More...
 
bool clockEnable (bool enable=true)
 Enable or disable oscillator. More...
 
time_t getEpoch ()
 Read Unix UTC epoch time_t. More...
 
bool setEpoch (time_t t)
 Write Unix epoch UTC time to RTC. More...
 
bool read (struct tm *dt)
 Read date and time from RTC. More...
 
bool write (const struct tm *dt)
 Write date and time to RTC. More...
 
bool setTime (uint8_t hour, uint8_t min, uint8_t sec)
 Write time to RTC. More...
 
bool getTime (uint8_t *hour, uint8_t *min, uint8_t *sec)
 Read time from RTC. More...
 
bool setDateTime (uint8_t hour, uint8_t min, uint8_t sec, uint8_t mday, uint8_t mon, uint16_t year, uint8_t wday)
 Set date time. More...
 
bool getDateTime (uint8_t *hour, uint8_t *min, uint8_t *sec, uint8_t *mday, uint8_t *mon, uint16_t *year, uint8_t *wday)
 Get date time. More...
 
bool setSquareWave (SquareWave squareWave)
 Configure SQW (Square Wave) output pin. More...
 
uint8_t bcdToDec (uint8_t bcd)
 BCD to decimal conversion. More...
 
uint8_t decToBcd (uint8_t dec)
 Decimal to BCD conversion. More...
 
uint8_t readRegister (uint8_t reg)
 Read register. More...
 
bool writeRegister (uint8_t reg, uint8_t value)
 Write register. More...
 
bool readBuffer (uint8_t reg, void *buffer, uint8_t len)
 Read buffer from RTC. More...
 
bool writeBuffer (uint8_t reg, void *buffer, uint8_t len)
 Write buffer to RTC. More...
 

Detailed Description

DS1307 RTC class.

Definition at line 80 of file ErriezDS1307.h.

Member Function Documentation

◆ bcdToDec()

uint8_t ErriezDS1307::bcdToDec ( uint8_t  bcd)

BCD to decimal conversion.

Parameters
bcdBCD encoded value.
Returns
Decimal value.

Definition at line 443 of file ErriezDS1307.cpp.

◆ begin()

bool ErriezDS1307::begin ( )

Initialize and detect DS1307 RTC.

Call this function from setup().

Return values
trueRTC detected.
falseRTC not detected.

Definition at line 52 of file ErriezDS1307.cpp.

◆ clockEnable()

bool ErriezDS1307::clockEnable ( bool  enable = true)

Enable or disable oscillator.

Clear or set CH (Clock Halt) bit to seconds register

Parameters
enabletrue: Enable RTC clock.
false: Stop RTC clock.
Return values
trueSuccess.
falseOscillator enable failed.

Definition at line 105 of file ErriezDS1307.cpp.

◆ decToBcd()

uint8_t ErriezDS1307::decToBcd ( uint8_t  dec)

Decimal to BCD conversion.

Parameters
decDecimal value.
Returns
BCD encoded value.

Definition at line 455 of file ErriezDS1307.cpp.

◆ getDateTime()

bool ErriezDS1307::getDateTime ( uint8_t *  hour,
uint8_t *  min,
uint8_t *  sec,
uint8_t *  mday,
uint8_t *  mon,
uint16_t *  year,
uint8_t *  wday 
)

Get date time.

Parameters
hourHours 0..23
minMinutes 0..59
secSeconds 0..59
mdayDay of the month 1..31
monMonth 1..12 (1=January)
yearYear 2000..2099
wdayDay of the week 0..6 (0=Sunday, .. 6=Saturday)
Return values
trueSuccess.
falseGet date/time failed.

Definition at line 391 of file ErriezDS1307.cpp.

◆ getEpoch()

time_t ErriezDS1307::getEpoch ( )

Read Unix UTC epoch time_t.

Returns
Unix epoch time_t seconds since 1970.

Definition at line 130 of file ErriezDS1307.cpp.

◆ getTime()

bool ErriezDS1307::getTime ( uint8_t *  hour,
uint8_t *  min,
uint8_t *  sec 
)

Read time from RTC.

Read hour, minute and second registers from RTC.

Parameters
hourHours 0..23.
minMinutes 0..59.
secSeconds 0..59.
Return values
trueSuccess.
falseInvalid second, minute or hour read from RTC. The time is set to zero.

Definition at line 303 of file ErriezDS1307.cpp.

◆ isRunning()

bool ErriezDS1307::isRunning ( )

Read RTC CH (Clock Halt) from seconds register.

The application is responsible for checking the CH (Clock Halt) bit before reading date/time date. This function may be used to judge the validity of the date/time registers.

Return values
trueRTC clock is running.
falseThe date/time data is invalid when the CH bit is set. The application should enable the oscillator, or program a new date/time.

Definition at line 81 of file ErriezDS1307.cpp.

◆ read()

bool ErriezDS1307::read ( struct tm *  dt)

Read date and time from RTC.

Read all RTC registers at once to prevent a time/date register change in the middle of the register read operation.

Parameters
dtDate and time struct tm.
Return values
trueSuccess
falseRead failed.

Definition at line 190 of file ErriezDS1307.cpp.

◆ readBuffer()

bool ErriezDS1307::readBuffer ( uint8_t  reg,
void *  buffer,
uint8_t  readLen 
)

Read buffer from RTC.

Parameters
regRTC register number 0x00..0x07.
bufferBuffer.
readLenBuffer length. Reading is only allowed within valid RTC registers.
Return values
trueSuccess
falseI2C read failed.

Definition at line 541 of file ErriezDS1307.cpp.

◆ readRegister()

uint8_t ErriezDS1307::readRegister ( uint8_t  reg)

Read register.

Please refer to the RTC datasheet.

Parameters
regRTC register number 0x00..0x12.
Returns
value 8-bit unsigned register value.

Definition at line 469 of file ErriezDS1307.cpp.

◆ setDateTime()

bool ErriezDS1307::setDateTime ( uint8_t  hour,
uint8_t  min,
uint8_t  sec,
uint8_t  mday,
uint8_t  mon,
uint16_t  year,
uint8_t  wday 
)

Set date time.

Parameters
hourHours 0..23
minMinutes 0..59
secSeconds 0..59
mdayDay of the month 1..31
monMonth 1..12 (1=January)
yearYear 2000..2099
wdayDay of the week 0..6 (0=Sunday, .. 6=Saturday)
Return values
trueSuccess.
falseSet date/time failed.

Definition at line 351 of file ErriezDS1307.cpp.

◆ setEpoch()

bool ErriezDS1307::setEpoch ( time_t  t)

Write Unix epoch UTC time to RTC.

Parameters
ttime_t time
Return values
trueSuccess.
falseSet epoch failed.

Definition at line 162 of file ErriezDS1307.cpp.

◆ setSquareWave()

bool ErriezDS1307::setSquareWave ( SquareWave  squareWave)

Configure SQW (Square Wave) output pin.

This will disable or initialize the SQW clock pin.

Parameters
squareWaveSquareWave configuration:
Disable: SquareWaveDisable
1Hz: SquareWave1Hz
4096Hz: SquareWave4096Hz
8192Hz: SquareWave8192Hz
32748Hz: SquareWave32768Hz
Return values
trueSuccess
falseSet squareWave failed.

Definition at line 430 of file ErriezDS1307.cpp.

◆ setTime()

bool ErriezDS1307::setTime ( uint8_t  hour,
uint8_t  min,
uint8_t  sec 
)

Write time to RTC.

Write hour, minute and second registers to RTC.

Parameters
hourHours 0..23.
minMinutes 0..59.
secSeconds 0..59.
Return values
trueSuccess.
falseSet time failed.

Definition at line 277 of file ErriezDS1307.cpp.

◆ write()

bool ErriezDS1307::write ( const struct tm *  dt)

Write date and time to RTC.

Write all RTC registers at once to prevent a time/date register change in the middle of the register write operation. This function enables the oscillator.

Parameters
dtDate/time struct tm. Providing invalid date/time data may result in unpredictable behavior.
Return values
trueSuccess.
falseWrite failed.

Definition at line 245 of file ErriezDS1307.cpp.

◆ writeBuffer()

bool ErriezDS1307::writeBuffer ( uint8_t  reg,
void *  buffer,
uint8_t  writeLen 
)

Write buffer to RTC.

Please refer to the RTC datasheet.

Parameters
regRTC register number 0x00..0x07.
bufferBuffer.
writeLenBuffer length. Writing is only allowed within valid RTC registers.
Return values
trueSuccess
falseI2C write failed.

Definition at line 513 of file ErriezDS1307.cpp.

◆ writeRegister()

bool ErriezDS1307::writeRegister ( uint8_t  reg,
uint8_t  value 
)

Write register.

Please refer to the RTC datasheet.

Parameters
regRTC register number 0x00..0x12.
value8-bit unsigned register value.
Return values
trueSuccess
falseWrite register failed

Definition at line 492 of file ErriezDS1307.cpp.


The documentation for this class was generated from the following files: