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
|
import sys
try:
from machine import Timer
from time import sleep_ms
except:
print("SKIP")
raise SystemExit
if sys.platform == "esp8266":
timer = Timer(0)
else:
# Hardware timers are not implemented.
print("SKIP")
raise SystemExit
# Test both hard and soft IRQ handlers and both one-shot and periodic
# timers. We adjust period in tests/extmod/machine_soft_timer.py, so try
# adjusting freq here instead. The heap should be locked in hard callbacks
# and unlocked in soft callbacks.
def callback(t):
print("callback", mode[1], kind[1], freq, end=" ")
try:
allocate = bytearray(1)
print("unlocked")
except MemoryError:
print("locked")
modes = [(Timer.ONE_SHOT, "one-shot"), (Timer.PERIODIC, "periodic")]
kinds = [(False, "soft"), (True, "hard")]
for mode in modes:
for kind in kinds:
for freq in 50, 25:
timer.init(
mode=mode[0],
freq=freq,
hard=kind[0],
callback=callback,
)
sleep_ms(90)
timer.deinit()
|