Bladeren bron

Small optimize I2C function.

Vladimir Shilov 4 jaren geleden
bovenliggende
commit
8e590b08b6
3 gewijzigde bestanden met toevoegingen van 14 en 2 verwijderingen
  1. 1 0
      inc/ds3231.h
  2. 11 0
      src/ds3231.c
  3. 2 2
      src/main.c

+ 1 - 0
inc/ds3231.h

@@ -89,6 +89,7 @@ void RTC_ReadCalendar(rtc_t * data);
 
 void RTC_WriteAll(rtc_t * data);
 void RTC_WriteTime(rtc_t * data);
+void RTC_WriteHH(rtc_t * data);
 void RTC_WriteHHMM(rtc_t * data);
 void RTC_WriteCalendar(rtc_t * data);
 

+ 11 - 0
src/ds3231.c

@@ -98,6 +98,17 @@ void RTC_WriteTime(rtc_t * data) {
   I2C_Stop();
 }
 
+/**
+ * @brief Запись часов
+ */
+void RTC_WriteHH(rtc_t * data) {
+  I2C_Start();
+  I2C_WriteByte(DS3231_I2C_WRADDR);
+  I2C_WriteByte(DS3231_TIME_CAL_ADDR + 2);
+  I2C_WriteByte(data->Hr);
+  I2C_Stop();
+}
+
 /**
  * @brief Запись часов и минут
  */

+ 2 - 2
src/main.c

@@ -285,7 +285,7 @@ static void setSummerWinterTime(void) {
   if ((RTC.Mon == 3) && (RTC.WD == 7) && (RTC.Hr == 3) && (sunTime != 0)) {
     if ((RTC.Day + 7) > 31) {
       RTC.Hr = 4;
-      RTC_WriteHHMM(&RTC);
+      RTC_WriteHH(&RTC);
       sunTime = 0;
     }
   }
@@ -294,7 +294,7 @@ static void setSummerWinterTime(void) {
   if ((RTC.Mon == 10) && (RTC.WD == 7) && (RTC.Hr == 4) && (sunTime == 0)) {
     if ((RTC.Day + 7) > 31) {
       RTC.Hr = 3;
-      RTC_WriteHHMM(&RTC);
+      RTC_WriteHH(&RTC);
       sunTime = 1;
     }
   }