27 lines
663 B
Python
27 lines
663 B
Python
|
|
# Test executing Python code while IRQs disabled.
|
||
|
|
try:
|
||
|
|
from machine import disable_irq, enable_irq
|
||
|
|
from time import ticks_us
|
||
|
|
except ImportError:
|
||
|
|
print("SKIP")
|
||
|
|
raise SystemExit
|
||
|
|
|
||
|
|
|
||
|
|
# Structured to also nest disable_irq() calls
|
||
|
|
def f(n):
|
||
|
|
st_irq = disable_irq()
|
||
|
|
if n:
|
||
|
|
f(n - 1)
|
||
|
|
else:
|
||
|
|
# busy-wait in a tight loop for 1ms, to simulate doing some work in a critical section
|
||
|
|
# (can't wait for time_us() to increment as not all ports will "tick" with interrupts off.)
|
||
|
|
for _ in range(100):
|
||
|
|
ticks_us()
|
||
|
|
enable_irq(st_irq)
|
||
|
|
|
||
|
|
|
||
|
|
for nest in range(3):
|
||
|
|
print(nest)
|
||
|
|
for _ in range(5):
|
||
|
|
f(nest)
|