summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-05-10 11:56:58 +0100
committerDamien George <damien.p.george@gmail.com>2014-05-10 11:56:58 +0100
commit04b7cc4df0a4fe7a6d5ec1e756baac2424b26922 (patch)
tree2e40ec86d09d94acd940be0472311e466b726c24
parentc17fd70de93202a97d1af5b48b7db9415951b5a1 (diff)
downloadmicropython-04b7cc4df0a4fe7a6d5ec1e756baac2424b26922.tar.gz
micropython-04b7cc4df0a4fe7a6d5ec1e756baac2424b26922.zip
stmhal: Fix setting of RTC: was BCD now BIN encoded.
Addresses issue #592.
-rw-r--r--stmhal/rtc.c20
-rw-r--r--tests/pyb/rtc.py22
-rw-r--r--tests/pyb/rtc.py.exp14
3 files changed, 46 insertions, 10 deletions
diff --git a/stmhal/rtc.c b/stmhal/rtc.c
index 33982e9d5f..412816c396 100644
--- a/stmhal/rtc.c
+++ b/stmhal/rtc.c
@@ -214,26 +214,26 @@ void rtc_init(void) {
static void RTC_CalendarConfig(void) {
// set the date to 1st Jan 2014
RTC_DateTypeDef date;
- date.Year = 0x14;
- date.Month = RTC_MONTH_JANUARY;
- date.Date = 0x01;
+ date.Year = 14;
+ date.Month = 1;
+ date.Date = 1;
date.WeekDay = RTC_WEEKDAY_WEDNESDAY;
- if(HAL_RTC_SetDate(&RTCHandle, &date, FORMAT_BCD) != HAL_OK) {
+ if(HAL_RTC_SetDate(&RTCHandle, &date, FORMAT_BIN) != HAL_OK) {
// init error
return;
}
// set the time to 00:00:00
RTC_TimeTypeDef time;
- time.Hours = 0x00;
- time.Minutes = 0x00;
- time.Seconds = 0x00;
+ time.Hours = 0;
+ time.Minutes = 0;
+ time.Seconds = 0;
time.TimeFormat = RTC_HOURFORMAT12_AM;
time.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
time.StoreOperation = RTC_STOREOPERATION_RESET;
- if (HAL_RTC_SetTime(&RTCHandle, &time, FORMAT_BCD) != HAL_OK) {
+ if (HAL_RTC_SetTime(&RTCHandle, &time, FORMAT_BIN) != HAL_OK) {
// init error
return;
}
@@ -316,7 +316,7 @@ mp_obj_t pyb_rtc_datetime(uint n_args, const mp_obj_t *args) {
date.Month = mp_obj_get_int(items[1]);
date.Date = mp_obj_get_int(items[2]);
date.WeekDay = mp_obj_get_int(items[3]);
- HAL_RTC_SetDate(&RTCHandle, &date, FORMAT_BCD);
+ HAL_RTC_SetDate(&RTCHandle, &date, FORMAT_BIN);
RTC_TimeTypeDef time;
time.Hours = mp_obj_get_int(items[4]);
@@ -326,7 +326,7 @@ mp_obj_t pyb_rtc_datetime(uint n_args, const mp_obj_t *args) {
time.TimeFormat = RTC_HOURFORMAT12_AM;
time.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
time.StoreOperation = RTC_STOREOPERATION_SET;
- HAL_RTC_SetTime(&RTCHandle, &time, FORMAT_BCD);
+ HAL_RTC_SetTime(&RTCHandle, &time, FORMAT_BIN);
return mp_const_none;
}
diff --git a/tests/pyb/rtc.py b/tests/pyb/rtc.py
index 853aa79577..219d0791af 100644
--- a/tests/pyb/rtc.py
+++ b/tests/pyb/rtc.py
@@ -3,6 +3,28 @@ from pyb import RTC
rtc = RTC()
print(rtc)
+
+# make sure that 1 second passes correctly
rtc.datetime((2014, 1, 1, 1, 0, 0, 0, 0))
pyb.delay(1000)
print(rtc.datetime()[:7])
+
+def set_and_print(datetime):
+ rtc.datetime(datetime)
+ print(rtc.datetime()[:7])
+
+# make sure that setting works correctly
+set_and_print((2000, 1, 1, 1, 0, 0, 0, 0))
+set_and_print((2000, 1, 31, 1, 0, 0, 0, 0))
+set_and_print((2000, 12, 31, 1, 0, 0, 0, 0))
+set_and_print((2016, 12, 31, 1, 0, 0, 0, 0))
+set_and_print((2016, 12, 31, 7, 0, 0, 0, 0))
+set_and_print((2016, 12, 31, 7, 1, 0, 0, 0))
+set_and_print((2016, 12, 31, 7, 12, 0, 0, 0))
+set_and_print((2016, 12, 31, 7, 13, 0, 0, 0))
+set_and_print((2016, 12, 31, 7, 23, 0, 0, 0))
+set_and_print((2016, 12, 31, 7, 23, 1, 0, 0))
+set_and_print((2016, 12, 31, 7, 23, 59, 0, 0))
+set_and_print((2016, 12, 31, 7, 23, 59, 1, 0))
+set_and_print((2016, 12, 31, 7, 23, 59, 59, 0))
+set_and_print((2099, 12, 31, 7, 23, 59, 59, 0))
diff --git a/tests/pyb/rtc.py.exp b/tests/pyb/rtc.py.exp
index d1ea2d9590..43ea70d95e 100644
--- a/tests/pyb/rtc.py.exp
+++ b/tests/pyb/rtc.py.exp
@@ -1,2 +1,16 @@
<RTC>
(2014, 1, 1, 1, 0, 0, 1)
+(2000, 1, 1, 1, 0, 0, 0)
+(2000, 1, 31, 1, 0, 0, 0)
+(2000, 12, 31, 1, 0, 0, 0)
+(2016, 12, 31, 1, 0, 0, 0)
+(2016, 12, 31, 7, 0, 0, 0)
+(2016, 12, 31, 7, 1, 0, 0)
+(2016, 12, 31, 7, 12, 0, 0)
+(2016, 12, 31, 7, 13, 0, 0)
+(2016, 12, 31, 7, 23, 0, 0)
+(2016, 12, 31, 7, 23, 1, 0)
+(2016, 12, 31, 7, 23, 59, 0)
+(2016, 12, 31, 7, 23, 59, 1)
+(2016, 12, 31, 7, 23, 59, 59)
+(2099, 12, 31, 7, 23, 59, 59)