diff options
Diffstat (limited to 'firmware/drivers/rtc')
-rw-r--r-- | firmware/drivers/rtc/rtc_as3514.c | 7 |
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] |