| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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
|