DS1302 RTC driver (#258)
This commit is contained in:
parent
a5cc728079
commit
4f7ddd09f8
5 changed files with 377 additions and 0 deletions
84
extras/ds1302/ds1302.h
Normal file
84
extras/ds1302/ds1302.h
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* Driver for DS1302 RTC
|
||||
*
|
||||
* Part of esp-open-rtos
|
||||
* Copyright (C) 2016 Ruslan V. Uss <unclerus@gmail.com>,
|
||||
* Pavel Merlyakov <merzlyakovpavel@gmail.com>
|
||||
* BSD Licensed as described in the file LICENSE
|
||||
*/
|
||||
#ifndef EXTRAS_DS1302_H_
|
||||
#define EXTRAS_DS1302_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <time.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DS1302_RAM_SIZE 31
|
||||
|
||||
void ds1302_init(uint8_t ce_pin, uint8_t io_pin, uint8_t sclk_pin);
|
||||
|
||||
/**
|
||||
* \brief Start/stop clock
|
||||
* \param start Start clock if true
|
||||
* \return False if RTC is write-protected
|
||||
*/
|
||||
bool ds1302_start(bool start);
|
||||
|
||||
/**
|
||||
* \brief Get current clock state
|
||||
* \return true if clock running
|
||||
*/
|
||||
bool ds1302_is_running();
|
||||
|
||||
/**
|
||||
* \brief Enable/disable write protection
|
||||
* \param protect Set RTC write-protected if true
|
||||
*/
|
||||
void ds1302_set_write_protect(bool protect);
|
||||
|
||||
/**
|
||||
* \brief Get write protection status
|
||||
* \return true if RTC write-protected
|
||||
*/
|
||||
bool ds1302_get_write_protect();
|
||||
|
||||
/**
|
||||
* \brief Get current time
|
||||
* \param time Pointer to the time struct to fill
|
||||
*/
|
||||
void ds1302_get_time(struct tm *time);
|
||||
|
||||
/**
|
||||
* \brief Set time to RTC
|
||||
* \param time Pointer to the time struct
|
||||
* \return False if RTC is write-protected
|
||||
*/
|
||||
bool ds1302_set_time(const struct tm *time);
|
||||
|
||||
/**
|
||||
* \brief Read RAM contents into the buffer
|
||||
* \param offset Start byte, 0..55
|
||||
* \param buf Buffer
|
||||
* \param len Bytes to read, 1..56
|
||||
* \return false if error occured (invalid offset or buffer too big)
|
||||
*/
|
||||
bool ds1302_read_sram(uint8_t offset, void *buf, uint8_t len);
|
||||
|
||||
/**
|
||||
* \brief Write buffer to RTC RAM
|
||||
* \param offset Start byte, 0..55
|
||||
* \param buf Buffer
|
||||
* \param len Bytes to write, 1..56
|
||||
* \return false if error occured (invalid offset or buffer too big)
|
||||
*/
|
||||
bool ds1302_write_sram(uint8_t offset, void *buf, uint8_t len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* EXTRAS_DS1302_H_ */
|
||||
Loading…
Add table
Add a link
Reference in a new issue