summaryrefslogtreecommitdiffstatshomepage
path: root/tests/ports/stm32/rtc.py
blob: 013b2f33142f0b513627b72b97c3151654199bff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import pyb, stm
from pyb import RTC

rtc = RTC()
rtc.init()
print(rtc)

# make sure that 1 second passes correctly
rtc.datetime((2014, 1, 1, 1, 0, 0, 0, 0))
pyb.delay(1002)
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))

# check that calibration works correctly
# save existing calibration value:
cal_tmp = rtc.calibration()


def set_and_print_calib(cal):
    rtc.calibration(cal)
    print(rtc.calibration())


set_and_print_calib(512)
set_and_print_calib(511)
set_and_print_calib(345)
set_and_print_calib(1)
set_and_print_calib(0)
set_and_print_calib(-1)
set_and_print_calib(-123)
set_and_print_calib(-510)
set_and_print_calib(-511)

# restore existing calibration value
rtc.calibration(cal_tmp)


# Check register settings for wakeup
def set_and_print_wakeup(ms):
    try:
        rtc.wakeup(ms)
        wucksel = stm.mem32[stm.RTC + stm.RTC_CR] & 7
        wut = stm.mem32[stm.RTC + stm.RTC_WUTR] & 0xFFFF
    except ValueError:
        wucksel = -1
        wut = -1
    print((wucksel, wut))


set_and_print_wakeup(0)
set_and_print_wakeup(1)
set_and_print_wakeup(4000)
set_and_print_wakeup(4001)
set_and_print_wakeup(8000)
set_and_print_wakeup(8001)
set_and_print_wakeup(16000)
set_and_print_wakeup(16001)
set_and_print_wakeup(32000)
set_and_print_wakeup(32001)
set_and_print_wakeup(0x10000 * 1000)
set_and_print_wakeup(0x10001 * 1000)
set_and_print_wakeup(0x1FFFF * 1000)
set_and_print_wakeup(0x20000 * 1000)
set_and_print_wakeup(0x20001 * 1000)  # exception