|
@@ -48,10 +48,13 @@
|
|
|
#define DS3231_SIZE_TEMPERATURE 2
|
|
|
#define DS3231_SIZE_ALL 19
|
|
|
|
|
|
+/* Private variables */
|
|
|
+static i2c_status_t status = I2C_Ret_OK;
|
|
|
+
|
|
|
/**
|
|
|
* @brief Initialization DS3231
|
|
|
*/
|
|
|
-void RTC_Init(void) {
|
|
|
+i2c_status_t RTC_Init(void) {
|
|
|
uint8_t buf[3] = {0};
|
|
|
|
|
|
/* Clear flags */
|
|
@@ -60,71 +63,64 @@ void RTC_Init(void) {
|
|
|
buf[0] = DS3231_1HZ; // set 1 Hz output squware
|
|
|
buf[1] = 0x0; // disable 32 kHz output
|
|
|
|
|
|
- user_i2c_write(DS3231_I2C_ADDR, DS3231_ADDR_CONTROL, buf, 2);
|
|
|
+ status = user_i2c_write(DS3231_I2C_ADDR, DS3231_ADDR_CONTROL, buf, 2);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @brief Reading all registers DS3231
|
|
|
*/
|
|
|
-void RTC_ReadAll(rtc_t * data) {
|
|
|
- Flag.I2C_RX_End = 0;
|
|
|
- Flag.I2C_TX_End = 0;
|
|
|
-
|
|
|
- user_i2c_read(DS3231_I2C_ADDR, DS3231_ADDR_TIME, (uint8_t *)data, DS3231_SIZE_ALL);
|
|
|
+i2c_status_t RTC_ReadAll(rtc_t * data) {
|
|
|
+ status = user_i2c_read(DS3231_I2C_ADDR, DS3231_ADDR_TIME, (uint8_t *)data, DS3231_SIZE_ALL);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @brief Read Time "SS:MM:HH"
|
|
|
*/
|
|
|
-void RTC_ReadTime(rtc_t * data) {
|
|
|
- Flag.I2C_TX_End = 0;
|
|
|
-
|
|
|
- user_i2c_read(DS3231_I2C_ADDR, DS3231_ADDR_TIME, &(data->Sec), DS3231_SIZE_TIME);
|
|
|
+i2c_status_t RTC_ReadTime(rtc_t * data) {
|
|
|
+ status = user_i2c_read(DS3231_I2C_ADDR, DS3231_ADDR_TIME, &(data->Sec), DS3231_SIZE_TIME);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @brief Save time and calendar "SS:MM:HH wd dd/mm/yy"
|
|
|
*/
|
|
|
-void RTC_WriteTimeCalendar(rtc_t * data) {
|
|
|
- Flag.I2C_TX_End = 0;
|
|
|
-
|
|
|
- user_i2c_write(DS3231_I2C_ADDR, DS3231_ADDR_TIME, &(data->Sec), (DS3231_SIZE_TIME + DS3231_SIZE_CALENDAR));
|
|
|
+i2c_status_t RTC_WriteTimeCalendar(rtc_t * data) {
|
|
|
+ status = user_i2c_write(DS3231_I2C_ADDR, DS3231_ADDR_TIME, &(data->Sec), (DS3231_SIZE_TIME + DS3231_SIZE_CALENDAR));
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @brief Save Time "SS:MM:HH"
|
|
|
*/
|
|
|
-void RTC_WriteTime(rtc_t * data) {
|
|
|
- Flag.I2C_TX_End = 0;
|
|
|
-
|
|
|
- user_i2c_write(DS3231_I2C_ADDR, DS3231_ADDR_TIME, &(data->Sec), DS3231_SIZE_TIME);
|
|
|
+i2c_status_t RTC_WriteTime(rtc_t * data) {
|
|
|
+ status = user_i2c_write(DS3231_I2C_ADDR, DS3231_ADDR_TIME, &(data->Sec), DS3231_SIZE_TIME);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @brief Save hours "HH"
|
|
|
*/
|
|
|
-void RTC_WriteHH(rtc_t * data) {
|
|
|
- Flag.I2C_TX_End = 0;
|
|
|
-
|
|
|
- user_i2c_write(DS3231_I2C_ADDR, (DS3231_ADDR_TIME + 2), &(data->Hr), 1);
|
|
|
+i2c_status_t RTC_WriteHH(rtc_t * data) {
|
|
|
+ status = user_i2c_write(DS3231_I2C_ADDR, (DS3231_ADDR_TIME + 2), &(data->Hr), 1);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @brief Save hours & minutes "MM:HH"
|
|
|
*/
|
|
|
-void RTC_WriteHHMM(rtc_t * data) {
|
|
|
- Flag.I2C_TX_End = 0;
|
|
|
-
|
|
|
- user_i2c_write(DS3231_I2C_ADDR, (DS3231_ADDR_TIME + 1), &(data->Min), 2);
|
|
|
+i2c_status_t RTC_WriteHHMM(rtc_t * data) {
|
|
|
+ status = user_i2c_write(DS3231_I2C_ADDR, (DS3231_ADDR_TIME + 1), &(data->Min), 2);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @brief Save calendar "wd dd/mm/yy"
|
|
|
*/
|
|
|
-void RTC_WriteCalendar(rtc_t * data) {
|
|
|
- Flag.I2C_TX_End = 0;
|
|
|
-
|
|
|
- user_i2c_write(DS3231_I2C_ADDR, DS3231_ADDR_CALENDAR, &(data->WD), DS3231_SIZE_CALENDAR);
|
|
|
+i2c_status_t RTC_WriteCalendar(rtc_t * data) {
|
|
|
+ status = user_i2c_write(DS3231_I2C_ADDR, DS3231_ADDR_CALENDAR, &(data->WD), DS3231_SIZE_CALENDAR);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/**
|