| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- '''
- RTC IRQ test for the CC3200 based boards.
- '''
- from machine import RTC
- import machine
- import os
- import time
- mch = os.uname().machine
- if not 'LaunchPad' in mch and not 'WiPy' in mch:
- raise Exception('Board not supported!')
- def rtc_ticks_ms(rtc):
- timedate = rtc.now()
- return (timedate[5] * 1000) + (timedate[6] // 1000)
- rtc_irq_count = 0
- def alarm_handler (rtc_o):
- global rtc_irq
- global rtc_irq_count
- if rtc_irq.flags() & RTC.ALARM0:
- rtc_irq_count += 1
- rtc = RTC()
- rtc.alarm(time=500, repeat=True)
- rtc_irq = rtc.irq(trigger=RTC.ALARM0, handler=alarm_handler)
- # active mode
- time.sleep_ms(1000)
- rtc.alarm_cancel()
- print(rtc_irq_count == 2)
- rtc_irq_count = 0
- rtc.alarm(time=200, repeat=True)
- time.sleep_ms(1000)
- rtc.alarm_cancel()
- print(rtc_irq_count == 5)
- rtc_irq_count = 0
- rtc.alarm(time=100, repeat=True)
- time.sleep_ms(1000)
- rtc.alarm_cancel()
- print(rtc_irq_count == 10)
- # deep sleep mode
- rtc.alarm_cancel()
- rtc_irq_count = 0
- rtc.alarm(time=50, repeat=True)
- rtc_irq.init(trigger=RTC.ALARM0, handler=alarm_handler, wake=machine.SLEEP | machine.IDLE)
- while rtc_irq_count < 3:
- machine.sleep()
- print(rtc_irq_count == 3)
- # no repetition
- rtc.alarm_cancel()
- rtc_irq_count = 0
- rtc.alarm(time=100, repeat=False)
- time.sleep_ms(250)
- print(rtc_irq_count == 1)
- rtc.alarm_cancel()
- t0 = rtc_ticks_ms(rtc)
- rtc.alarm(time=500, repeat=False)
- machine.sleep()
- t1 = rtc_ticks_ms(rtc)
- print(abs(t1 - t0 - 500) < 20)
- # deep sleep repeated mode
- rtc.alarm_cancel()
- rtc_irq_count = 0
- rtc.alarm(time=500, repeat=True)
- t0 = rtc_ticks_ms(rtc)
- rtc_irq = rtc.irq(trigger=RTC.ALARM0, handler=alarm_handler, wake=machine.SLEEP)
- while rtc_irq_count < 3:
- machine.sleep()
- t1 = rtc_ticks_ms(rtc)
- print(abs(t1 - t0 - (500 * rtc_irq_count)) < 25)
- # next ones must raise
- try:
- rtc_irq = rtc.irq(trigger=10, handler=alarm_handler)
- except:
- print('Exception')
- try:
- rtc_irq = rtc.irq(trigger=RTC.ALARM0, wake=1789456)
- except:
- print('Exception')
|