summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/rtc/rtc_as3514.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/firmware/drivers/rtc/rtc_as3514.c b/firmware/drivers/rtc/rtc_as3514.c
index 9b8f9c330c..2190b20a53 100644
--- a/firmware/drivers/rtc/rtc_as3514.c
+++ b/firmware/drivers/rtc/rtc_as3514.c
@@ -68,13 +68,13 @@ int rtc_read_datetime(unsigned char* buf)
68 year = 1980; 68 year = 1980;
69 while(seconds>=LEAP_YEAR_SECONDS) 69 while(seconds>=LEAP_YEAR_SECONDS)
70 { 70 {
71 year++;
72
73 if(is_leapyear(year)){ 71 if(is_leapyear(year)){
74 seconds -= LEAP_YEAR_SECONDS; 72 seconds -= LEAP_YEAR_SECONDS;
75 } else { 73 } else {
76 seconds -= YEAR_SECONDS; 74 seconds -= YEAR_SECONDS;
77 } 75 }
76
77 year++;
78 } 78 }
79 79
80 if(is_leapyear(year)) { 80 if(is_leapyear(year)) {
@@ -102,6 +102,7 @@ int rtc_read_datetime(unsigned char* buf)
102 /* Month Day */ 102 /* Month Day */
103 buf[4] = seconds/DAY_SECONDS; 103 buf[4] = seconds/DAY_SECONDS;
104 seconds -= buf[4]*DAY_SECONDS; 104 seconds -= buf[4]*DAY_SECONDS;
105 buf[4]++; /* 1 ... 31 */
105 106
106 /* Hour */ 107 /* Hour */
107 buf[2] = seconds/HOUR_SECONDS; 108 buf[2] = seconds/HOUR_SECONDS;
@@ -146,7 +147,7 @@ int rtc_write_datetime(unsigned char* buf)
146 } 147 }
147 148
148 /* Number of days in years gone by since 1-Jan-1980 */ 149 /* Number of days in years gone by since 1-Jan-1980 */
149 year_days = 365*(buf[6]+20) + buf[6]/4 + 6; 150 year_days = 365*(buf[6]+20) + (buf[6]-1)/4 + 6;
150 151
151 /* Convert to seconds since 1-Jan-1980 */ 152 /* Convert to seconds since 1-Jan-1980 */
152 seconds = buf[0] 153 seconds = buf[0]