|
@@ -8,18 +8,19 @@
|
|
|
#include "RTC.h"
|
|
#include "RTC.h"
|
|
|
|
|
|
|
|
/** Private Fonction*/
|
|
/** Private Fonction*/
|
|
|
-void readRTC(uint8_t reg, uint8_t *tab, int len) {
|
|
|
|
|
-
|
|
|
|
|
|
|
+HAL_StatusTypeDef readRTC(uint8_t reg, uint8_t *tab, int len) {
|
|
|
HAL_StatusTypeDef res = HAL_I2C_Master_Transmit(I2C_RTC, RTC_ADD, ®, 1, 10000);
|
|
HAL_StatusTypeDef res = HAL_I2C_Master_Transmit(I2C_RTC, RTC_ADD, ®, 1, 10000);
|
|
|
- res = HAL_I2C_Master_Receive(I2C_RTC, RTC_ADD, tab, len, 1000);
|
|
|
|
|
|
|
+ if(res != HAL_OK)
|
|
|
|
|
+ return res;
|
|
|
|
|
+ return HAL_I2C_Master_Receive(I2C_RTC, RTC_ADD, tab, len, 1000);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void writeRTC(uint8_t reg, uint8_t *tab, int len) {
|
|
|
|
|
|
|
+HAL_StatusTypeDef writeRTC(uint8_t reg, uint8_t *tab, int len) {
|
|
|
uint8_t t[len + 1];
|
|
uint8_t t[len + 1];
|
|
|
t[0] = reg;
|
|
t[0] = reg;
|
|
|
for (int i = 0; i < len; i++)
|
|
for (int i = 0; i < len; i++)
|
|
|
t[i + 1] = tab[i];
|
|
t[i + 1] = tab[i];
|
|
|
- HAL_I2C_Master_Transmit(I2C_RTC, RTC_ADD, t, len + 1, 1000);
|
|
|
|
|
|
|
+ return HAL_I2C_Master_Transmit(I2C_RTC, RTC_ADD, t, len + 1, 1000);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/** Public Fonction*/
|
|
/** Public Fonction*/
|
|
@@ -28,26 +29,28 @@ void initRTC(I2C_HandleTypeDef *typ) {
|
|
|
I2C_RTC = typ;
|
|
I2C_RTC = typ;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void readHeure(Heure *heure) {
|
|
|
|
|
|
|
+HAL_StatusTypeDef readHeure(Heure *heure) {
|
|
|
uint8_t tab[2];
|
|
uint8_t tab[2];
|
|
|
- readRTC(MINUTES, tab, 2);
|
|
|
|
|
|
|
+ HAL_StatusTypeDef res = readRTC(MINUTES, tab, 2);
|
|
|
heure->minute = (((tab[0] & 0x70) >> 4) * 10) + (tab[0] & 0X0F);
|
|
heure->minute = (((tab[0] & 0x70) >> 4) * 10) + (tab[0] & 0X0F);
|
|
|
heure->heure = (((tab[1] & 0X30) >> 4) * 10) + (tab[1] & 0X0F);
|
|
heure->heure = (((tab[1] & 0X30) >> 4) * 10) + (tab[1] & 0X0F);
|
|
|
|
|
+ return res;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/** Public Fonction*/
|
|
/** Public Fonction*/
|
|
|
-void readDate(Date *date) {
|
|
|
|
|
|
|
+HAL_StatusTypeDef readDate(Date *date) {
|
|
|
uint8_t tab[7];
|
|
uint8_t tab[7];
|
|
|
- readRTC(SECOND, tab, 7);
|
|
|
|
|
|
|
+ HAL_StatusTypeDef res = readRTC(SECOND, tab, 7);
|
|
|
date->second = (((tab[0] & 0X70) >> 4) * 10) + (tab[0] & 0X0F);
|
|
date->second = (((tab[0] & 0X70) >> 4) * 10) + (tab[0] & 0X0F);
|
|
|
date->minute = (((tab[1] & 0x70) >> 4) * 10) + (tab[1] & 0X0F);
|
|
date->minute = (((tab[1] & 0x70) >> 4) * 10) + (tab[1] & 0X0F);
|
|
|
date->heure = (((tab[2] & 0X30) >> 4) * 10) + (tab[2] & 0X0F);
|
|
date->heure = (((tab[2] & 0X30) >> 4) * 10) + (tab[2] & 0X0F);
|
|
|
date->jour = (((tab[4] & 0X30) >> 4) * 10) + (tab[4] & 0X0F);
|
|
date->jour = (((tab[4] & 0X30) >> 4) * 10) + (tab[4] & 0X0F);
|
|
|
date->mois = (((tab[5] & 0X10) >> 4) * 10) + (tab[5] & 0X0F);
|
|
date->mois = (((tab[5] & 0X10) >> 4) * 10) + (tab[5] & 0X0F);
|
|
|
date->annee = ((tab[6] >> 4) * 10) + (tab[6] & 0X0F);
|
|
date->annee = ((tab[6] >> 4) * 10) + (tab[6] & 0X0F);
|
|
|
|
|
+ return res;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void writeDate(Date *date) {
|
|
|
|
|
|
|
+HAL_StatusTypeDef writeDate(Date *date) {
|
|
|
uint8_t tab[7];
|
|
uint8_t tab[7];
|
|
|
|
|
|
|
|
tab[0] = ((date->second / 10) << 4) + (date->second % 10);
|
|
tab[0] = ((date->second / 10) << 4) + (date->second % 10);
|
|
@@ -58,14 +61,16 @@ void writeDate(Date *date) {
|
|
|
tab[5] = ((date->mois / 10) << 4) + (date->mois % 10);
|
|
tab[5] = ((date->mois / 10) << 4) + (date->mois % 10);
|
|
|
tab[6] = ((date->annee / 10) << 4) + (date->annee % 10);
|
|
tab[6] = ((date->annee / 10) << 4) + (date->annee % 10);
|
|
|
|
|
|
|
|
- writeRTC(SECOND, tab, 7);
|
|
|
|
|
|
|
+ return writeRTC(SECOND, tab, 7);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void redemareRTC() {
|
|
|
|
|
|
|
+HAL_StatusTypeDef redemareRTC() {
|
|
|
uint8_t pt[1];
|
|
uint8_t pt[1];
|
|
|
- readRTC(ALARM_HOURS, pt, 1);
|
|
|
|
|
|
|
+ HAL_StatusTypeDef res = readRTC(ALARM_HOURS, pt, 1);
|
|
|
|
|
+ if (res != HAL_OK)
|
|
|
|
|
+ return res;
|
|
|
pt[0] = pt[0] & !0x40;
|
|
pt[0] = pt[0] & !0x40;
|
|
|
- writeRTC(ALARM_HOURS, pt, 1);
|
|
|
|
|
|
|
+ return writeRTC(ALARM_HOURS, pt, 1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void testRTC() {
|
|
void testRTC() {
|