Fixed the conversion to BCD in nvr_at.c, the month of October is no longer written the wrong way in the NVRAM;

Changed the variables in the day of week calculation function in nvr.c from signed to unsigned, fixes the day of week calculation for dates in the previous century.
This commit is contained in:
OBattler
2018-04-29 00:40:26 +02:00
parent d17380913e
commit 8155d53aa1
2 changed files with 6 additions and 6 deletions

View File

@@ -8,7 +8,7 @@
*
* Implement a generic NVRAM/CMOS/RTC device.
*
* Version: @(#)nvr.c 1.0.6 2018/04/11
* Version: @(#)nvr.c 1.0.7 2018/04/29
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
*
@@ -308,8 +308,8 @@ nvr_period_recalc(void)
void
nvr_time_get(struct tm *tm)
{
int8_t dom, mon, sum, wd;
int16_t cent, yr;
uint8_t dom, mon, sum, wd;
uint16_t cent, yr;
tm->tm_sec = intclk.tm_sec;
tm->tm_min = intclk.tm_min;

View File

@@ -189,7 +189,7 @@
* including the later update (DS12887A) which implemented a
* "century" register to be compatible with Y2K.
*
* Version: @(#)nvr_at.c 1.0.6 2018/04/26
* Version: @(#)nvr_at.c 1.0.7 2018/04/28
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -362,9 +362,9 @@ time_set(nvr_t *nvr, struct tm *tm)
/* NVR is in BCD data mode. */
nvr->regs[RTC_SECONDS] = RTC_BCD(tm->tm_sec);
nvr->regs[RTC_MINUTES] = RTC_BCD(tm->tm_min);
nvr->regs[RTC_DOW] = (RTC_BCD(tm->tm_wday) + 1);
nvr->regs[RTC_DOW] = (RTC_BCD(tm->tm_wday + 1));
nvr->regs[RTC_DOM] = RTC_BCD(tm->tm_mday);
nvr->regs[RTC_MONTH] = (RTC_BCD(tm->tm_mon) + 1);
nvr->regs[RTC_MONTH] = (RTC_BCD(tm->tm_mon + 1));
nvr->regs[RTC_YEAR] = RTC_BCD(year % 100);
nvr->regs[local->cent] = RTC_BCD(year / 100);