summaryrefslogtreecommitdiffstatshomepage
path: root/tests/extmod/machine_disable_irq.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/extmod/machine_disable_irq.py')
-rw-r--r--tests/extmod/machine_disable_irq.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/extmod/machine_disable_irq.py b/tests/extmod/machine_disable_irq.py
new file mode 100644
index 0000000000..3132128722
--- /dev/null
+++ b/tests/extmod/machine_disable_irq.py
@@ -0,0 +1,26 @@
+# 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)